[functions][android] add support for multiple firebase apps and specifying a function region

This commit is contained in:
Salakar
2018-08-13 23:18:08 +01:00
parent fbc47c5cf2
commit a2205160d8
3 changed files with 52 additions and 13 deletions

View File

@@ -103,8 +103,8 @@ dependencies {
compileOnly "com.google.firebase:firebase-core:16.0.1"
compileOnly "com.google.firebase:firebase-crash:16.0.1"
compileOnly "com.google.firebase:firebase-database:16.0.1"
compileOnly "com.google.firebase:firebase-firestore:17.0.2"
compileOnly "com.google.firebase:firebase-functions:16.0.1"
compileOnly "com.google.firebase:firebase-firestore:17.0.4"
compileOnly "com.google.firebase:firebase-functions:16.1.0"
compileOnly "com.google.firebase:firebase-invites:16.0.1"
compileOnly "com.google.firebase:firebase-storage:16.0.1"
compileOnly "com.google.firebase:firebase-messaging:17.1.0"

View File

@@ -5,14 +5,14 @@ import android.util.Log;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.WritableMap;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.FirebaseApp;
import com.google.firebase.functions.FirebaseFunctions;
import com.google.firebase.functions.FirebaseFunctionsException;
import com.google.firebase.functions.HttpsCallableReference;
@@ -39,17 +39,56 @@ public class RNFirebaseFunctions extends ReactContextBaseJavaModule {
return TAG;
}
/**
* Changes this instance to point to a Cloud Functions emulator running
* locally.
* <p>
* See https://firebase.google.com/docs/functions/local-emulator
*
* @param origin the origin string of the local emulator started via firebase tools
* "http://10.0.0.8:1337".
* @param appName
* @param region
* @param origin
* @param promise
*/
@ReactMethod
public void httpsCallable(final String name, ReadableMap wrapper, final Promise promise) {
public void useFunctionsEmulator(
String appName,
String region,
String origin,
Promise promise
) {
FirebaseApp firebaseApp = FirebaseApp.getInstance(appName);
FirebaseFunctions functionsInstance = FirebaseFunctions.getInstance(firebaseApp, region);
functionsInstance.useFunctionsEmulator(origin);
promise.resolve(null);
}
/**
* @param appName
* @param region
* @param name
* @param wrapper
* @param promise
*/
@ReactMethod
public void httpsCallable(
String appName,
String region,
final String name,
ReadableMap wrapper,
final Promise promise
) {
Object input = wrapper
.toHashMap()
.get(DATA_KEY);
Log.d(TAG, "function:call:input:" + name + ":" + (input != null ? input.toString() : "null"));
HttpsCallableReference httpsCallableReference = FirebaseFunctions
.getInstance()
.getHttpsCallable(name);
FirebaseApp firebaseApp = FirebaseApp.getInstance(appName);
FirebaseFunctions functionsInstance = FirebaseFunctions.getInstance(firebaseApp, region);
HttpsCallableReference httpsCallableReference = functionsInstance.getHttpsCallable(name);
httpsCallableReference
.call(input)
@@ -96,9 +135,9 @@ public class RNFirebaseFunctions extends ReactContextBaseJavaModule {
code = ffe
.getCode()
.name();
message = ffe.getLocalizedMessage();
message = ffe.getMessage();
} else {
message = exception.getLocalizedMessage();
message = exception.getMessage();
}
Utils.mapPutValue(CODE_KEY, code, map);

View File

@@ -100,8 +100,8 @@ dependencies {
implementation "com.google.firebase:firebase-auth:16.0.2"
implementation "com.google.firebase:firebase-config:16.0.0"
implementation "com.google.firebase:firebase-database:16.0.1"
implementation "com.google.firebase:firebase-firestore:17.0.2"
implementation "com.google.firebase:firebase-functions:16.0.1"
implementation "com.google.firebase:firebase-firestore:17.0.4"
implementation "com.google.firebase:firebase-functions:16.1.0"
implementation "com.google.firebase:firebase-invites:16.0.1"
implementation "com.google.firebase:firebase-storage:16.0.1"
implementation "com.google.firebase:firebase-messaging:17.1.0"