mirror of
https://github.com/zhigang1992/react-native-firebase.git
synced 2026-01-12 22:50:20 +08:00
[functions][android] add support for multiple firebase apps and specifying a function region
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user