diff --git a/.changeset/healthy-shirts-occur.md b/.changeset/healthy-shirts-occur.md new file mode 100644 index 00000000..08dff185 --- /dev/null +++ b/.changeset/healthy-shirts-occur.md @@ -0,0 +1,13 @@ +--- +'@capacitor-firebase/app': minor +'@capacitor-firebase/app-check': minor +'@capacitor-firebase/authentication': minor +'@capacitor-firebase/crashlytics': minor +'@capacitor-firebase/firestore': minor +'@capacitor-firebase/messaging': minor +'@capacitor-firebase/remote-config': minor +'@capacitor-firebase/storage': minor +'@capacitor-firebase/analytics': minor +--- + +feat(android): support dynamic Firebase config diff --git a/packages/analytics/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/analytics/FirebaseAnalytics.java b/packages/analytics/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/analytics/FirebaseAnalytics.java index 16a5c38b..4b08b652 100644 --- a/packages/analytics/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/analytics/FirebaseAnalytics.java +++ b/packages/analytics/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/analytics/FirebaseAnalytics.java @@ -10,17 +10,18 @@ public class FirebaseAnalytics { - private final com.google.firebase.analytics.FirebaseAnalytics analyticsInstance; + private final Context context; private final Bridge bridge; public FirebaseAnalytics(Context context, Bridge bridge) { - this.analyticsInstance = com.google.firebase.analytics.FirebaseAnalytics.getInstance(context); + this.context = context; this.bridge = bridge; } @Nullable public void getAppInstanceId(@NonNull final GetAppInstanceIdCallback resultCallback) { - this.analyticsInstance.getAppInstanceId() + getFirebaseAnalyticsInstance() + .getAppInstanceId() .addOnCompleteListener( task -> { if (!task.isSuccessful()) { @@ -37,11 +38,11 @@ public void getAppInstanceId(@NonNull final GetAppInstanceIdCallback resultCallb } public void setUserId(@Nullable String userId) { - analyticsInstance.setUserId(userId); + getFirebaseAnalyticsInstance().setUserId(userId); } public void setUserProperty(@NonNull String key, @Nullable String value) { - analyticsInstance.setUserProperty(key, value); + getFirebaseAnalyticsInstance().setUserProperty(key, value); } public void setCurrentScreen(String screenName, String screenClass) { @@ -55,7 +56,7 @@ public void setCurrentScreen(String screenName, String screenClass) { new Runnable() { @Override public void run() { - analyticsInstance.logEvent(com.google.firebase.analytics.FirebaseAnalytics.Event.SCREEN_VIEW, bundle); + getFirebaseAnalyticsInstance().logEvent(com.google.firebase.analytics.FirebaseAnalytics.Event.SCREEN_VIEW, bundle); } } ); @@ -63,18 +64,22 @@ public void run() { public void logEvent(@NonNull String key, @Nullable JSONObject json) { Bundle bundle = FirebaseAnalyticsHelper.createBundleFromJson(json); - analyticsInstance.logEvent(key, bundle); + getFirebaseAnalyticsInstance().logEvent(key, bundle); } public void setSessionTimeoutDuration(long duration) { - analyticsInstance.setSessionTimeoutDuration(duration); + getFirebaseAnalyticsInstance().setSessionTimeoutDuration(duration); } public void setEnabled(boolean enabled) { - analyticsInstance.setAnalyticsCollectionEnabled(enabled); + getFirebaseAnalyticsInstance().setAnalyticsCollectionEnabled(enabled); } public void resetAnalyticsData() { - analyticsInstance.resetAnalyticsData(); + getFirebaseAnalyticsInstance().resetAnalyticsData(); + } + + private com.google.firebase.analytics.FirebaseAnalytics getFirebaseAnalyticsInstance() { + return com.google.firebase.analytics.FirebaseAnalytics.getInstance(context); } } diff --git a/packages/app-check/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/appcheck/FirebaseAppCheck.java b/packages/app-check/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/appcheck/FirebaseAppCheck.java index f5a40d8f..9234e342 100644 --- a/packages/app-check/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/appcheck/FirebaseAppCheck.java +++ b/packages/app-check/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/appcheck/FirebaseAppCheck.java @@ -6,14 +6,9 @@ public class FirebaseAppCheck { - private final com.google.firebase.appcheck.FirebaseAppCheck appCheckInstance; - - public FirebaseAppCheck() { - this.appCheckInstance = com.google.firebase.appcheck.FirebaseAppCheck.getInstance(); - } - public void getToken(boolean forceRefresh, final GetTokenResultCallback resultCallback) { - this.appCheckInstance.getAppCheckToken(forceRefresh) + getFirebaseAppCheckInstance() + .getAppCheckToken(forceRefresh) .addOnSuccessListener( appCheckToken -> { resultCallback.success(appCheckToken.getToken(), appCheckToken.getExpireTimeMillis()); @@ -29,16 +24,19 @@ public void getToken(boolean forceRefresh, final GetTokenResultCallback resultCa public void initialize(boolean debug, boolean isTokenAutoRefreshEnabled) { if (debug) { - this.appCheckInstance.installAppCheckProviderFactory(DebugAppCheckProviderFactory.getInstance(), isTokenAutoRefreshEnabled); + getFirebaseAppCheckInstance() + .installAppCheckProviderFactory(DebugAppCheckProviderFactory.getInstance(), isTokenAutoRefreshEnabled); } else { - this.appCheckInstance.installAppCheckProviderFactory( - PlayIntegrityAppCheckProviderFactory.getInstance(), - isTokenAutoRefreshEnabled - ); + getFirebaseAppCheckInstance() + .installAppCheckProviderFactory(PlayIntegrityAppCheckProviderFactory.getInstance(), isTokenAutoRefreshEnabled); } } public void setTokenAutoRefreshEnabled(boolean enabled) { - this.appCheckInstance.setTokenAutoRefreshEnabled(enabled); + getFirebaseAppCheckInstance().setTokenAutoRefreshEnabled(enabled); + } + + private com.google.firebase.appcheck.FirebaseAppCheck getFirebaseAppCheckInstance() { + return com.google.firebase.appcheck.FirebaseAppCheck.getInstance(); } } diff --git a/packages/app/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/capawesome/FirebaseAppPlugin.java b/packages/app/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/capawesome/FirebaseAppPlugin.java index 2a872f3e..e373e40f 100644 --- a/packages/app/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/capawesome/FirebaseAppPlugin.java +++ b/packages/app/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/capawesome/FirebaseAppPlugin.java @@ -13,18 +13,15 @@ public class FirebaseAppPlugin extends Plugin { public static final String TAG = "FirebaseApp"; - private FirebaseApp firebaseAppInstance; - - public void load() { - firebaseAppInstance = FirebaseApp.getInstance(); - } @PluginMethod public void getName(PluginCall call) { try { - JSObject ret = new JSObject(); - ret.put("name", firebaseAppInstance.getName()); - call.resolve(ret); + String name = getFirebaseAppInstance().getName(); + + JSObject result = new JSObject(); + result.put("name", name); + call.resolve(result); } catch (Exception exception) { Logger.error(TAG, exception.getMessage(), exception); call.reject(exception.getMessage()); @@ -34,18 +31,23 @@ public void getName(PluginCall call) { @PluginMethod public void getOptions(PluginCall call) { try { - FirebaseOptions options = firebaseAppInstance.getOptions(); - JSObject ret = new JSObject(); - ret.put("apiKey", options.getApiKey()); - ret.put("applicationId", options.getApplicationId()); - ret.put("databaseUrl", options.getDatabaseUrl()); - ret.put("gcmSenderId", options.getGcmSenderId()); - ret.put("projectId", options.getProjectId()); - ret.put("storageBucket", options.getStorageBucket()); - call.resolve(ret); + FirebaseOptions options = getFirebaseAppInstance().getOptions(); + + JSObject result = new JSObject(); + result.put("apiKey", options.getApiKey()); + result.put("applicationId", options.getApplicationId()); + result.put("databaseUrl", options.getDatabaseUrl()); + result.put("gcmSenderId", options.getGcmSenderId()); + result.put("projectId", options.getProjectId()); + result.put("storageBucket", options.getStorageBucket()); + call.resolve(result); } catch (Exception exception) { Logger.error(TAG, exception.getMessage(), exception); call.reject(exception.getMessage()); } } + + private FirebaseApp getFirebaseAppInstance() { + return FirebaseApp.getInstance(); + } } diff --git a/packages/authentication/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/authentication/FirebaseAuthentication.java b/packages/authentication/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/authentication/FirebaseAuthentication.java index 7a4cb338..fb201c92 100644 --- a/packages/authentication/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/authentication/FirebaseAuthentication.java +++ b/packages/authentication/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/authentication/FirebaseAuthentication.java @@ -45,7 +45,6 @@ public class FirebaseAuthentication { private FirebaseAuthenticationPlugin plugin; private FirebaseAuthenticationConfig config; - private FirebaseAuth firebaseAuthInstance; private FirebaseAuth.AuthStateListener firebaseAuthStateListener; private AppleAuthProviderHandler appleAuthProviderHandler; private FacebookAuthProviderHandler facebookAuthProviderHandler; @@ -57,17 +56,16 @@ public class FirebaseAuthentication { public FirebaseAuthentication(FirebaseAuthenticationPlugin plugin, FirebaseAuthenticationConfig config) { this.plugin = plugin; this.config = config; - firebaseAuthInstance = FirebaseAuth.getInstance(); this.initAuthProviderHandlers(config); this.firebaseAuthStateListener = firebaseAuth -> { this.plugin.handleAuthStateChange(); }; - firebaseAuthInstance.addAuthStateListener(this.firebaseAuthStateListener); + getFirebaseAuthInstance().addAuthStateListener(this.firebaseAuthStateListener); } public void applyActionCode(@NonNull String oobCode, @NonNull Runnable callback) { - firebaseAuthInstance + getFirebaseAuthInstance() .applyActionCode(oobCode) .addOnCompleteListener( task -> { @@ -94,7 +92,7 @@ public void createUserWithEmailAndPassword(PluginCall call) { return; } - firebaseAuthInstance + getFirebaseAuthInstance() .createUserWithEmailAndPassword(email, password) .addOnCompleteListener( plugin.getActivity(), @@ -114,7 +112,7 @@ public void createUserWithEmailAndPassword(PluginCall call) { } public void confirmPasswordReset(@NonNull String oobCode, @NonNull String newPassword, @NonNull Runnable callback) { - firebaseAuthInstance + getFirebaseAuthInstance() .confirmPasswordReset(oobCode, newPassword) .addOnCompleteListener( task -> { @@ -139,7 +137,7 @@ public void deleteUser(FirebaseUser user, @NonNull Runnable callback) { @Nullable public FirebaseUser getCurrentUser() { - return firebaseAuthInstance.getCurrentUser(); + return getFirebaseAuthInstance().getCurrentUser(); } public void getIdToken(Boolean forceRefresh, @NonNull final ResultCallback resultCallback) { @@ -165,11 +163,11 @@ public void getIdToken(Boolean forceRefresh, @NonNull final ResultCallback resul @Nullable public String getTenantId() { - return firebaseAuthInstance.getTenantId(); + return getFirebaseAuthInstance().getTenantId(); } public boolean isSignInWithEmailLink(@NonNull String emailLink) { - return firebaseAuthInstance.isSignInWithEmailLink(emailLink); + return getFirebaseAuthInstance().isSignInWithEmailLink(emailLink); } public void linkWithApple(final PluginCall call) { @@ -299,7 +297,7 @@ public void sendEmailVerification(FirebaseUser user, @NonNull Runnable callback) } public void sendPasswordResetEmail(@NonNull String email, @NonNull Runnable callback) { - firebaseAuthInstance + getFirebaseAuthInstance() .sendPasswordResetEmail(email) .addOnCompleteListener( task -> { @@ -309,7 +307,7 @@ public void sendPasswordResetEmail(@NonNull String email, @NonNull Runnable call } public void sendSignInLinkToEmail(@NonNull String email, @NonNull ActionCodeSettings actionCodeSettings, @NonNull Runnable callback) { - firebaseAuthInstance + getFirebaseAuthInstance() .sendSignInLinkToEmail(email, actionCodeSettings) .addOnCompleteListener( task -> { @@ -319,11 +317,11 @@ public void sendSignInLinkToEmail(@NonNull String email, @NonNull ActionCodeSett } public void setLanguageCode(String languageCode) { - firebaseAuthInstance.setLanguageCode(languageCode); + getFirebaseAuthInstance().setLanguageCode(languageCode); } public void setTenantId(String tenantId) { - firebaseAuthInstance.setTenantId(tenantId); + getFirebaseAuthInstance().setTenantId(tenantId); } public void signInAnonymously(final PluginCall call) { @@ -332,7 +330,7 @@ public void signInAnonymously(final PluginCall call) { call.reject(FirebaseAuthenticationPlugin.ERROR_SIGN_IN_ANONYMOUSLY_SKIP_NATIVE_AUTH); return; } - firebaseAuthInstance + getFirebaseAuthInstance() .signInAnonymously() .addOnCompleteListener( plugin.getActivity(), @@ -372,7 +370,7 @@ public void signInWithEmailAndPassword(final PluginCall call) { String email = call.getString("email", ""); String password = call.getString("password", ""); - firebaseAuthInstance + getFirebaseAuthInstance() .signInWithEmailAndPassword(email, password) .addOnCompleteListener( plugin.getActivity(), @@ -401,7 +399,7 @@ public void signInWithEmailLink(final PluginCall call) { String email = call.getString("email", ""); String emailLink = call.getString("emailLink", ""); - firebaseAuthInstance + getFirebaseAuthInstance() .signInWithEmailLink(email, emailLink) .addOnCompleteListener( plugin.getActivity(), @@ -468,7 +466,7 @@ public void signInWithCustomToken(final PluginCall call) { String token = call.getString("token", ""); - firebaseAuthInstance + getFirebaseAuthInstance() .signInWithCustomToken(token) .addOnCompleteListener( plugin.getActivity(), @@ -562,11 +560,11 @@ public void updateProfile(FirebaseUser user, String displayName, String photoUrl } public void useAppLanguage() { - firebaseAuthInstance.useAppLanguage(); + getFirebaseAuthInstance().useAppLanguage(); } public void useEmulator(@NonNull String host, int port) { - firebaseAuthInstance.useEmulator(host, port); + getFirebaseAuthInstance().useEmulator(host, port); } public void startActivityForResult(final PluginCall call, Intent intent, String callbackName) { @@ -602,7 +600,7 @@ public void signInWithCredential(@NonNull SignInOptions options, @NonNull AuthCr callback.success(result); return; } - firebaseAuthInstance + getFirebaseAuthInstance() .signInWithCredential(credential) .addOnCompleteListener( plugin.getActivity(), @@ -621,7 +619,7 @@ public void signInWithCredential(@NonNull SignInOptions options, @NonNull AuthCr } public void linkWithCredential(@NonNull AuthCredential credential, @NonNull ResultCallback callback) { - FirebaseUser user = firebaseAuthInstance.getCurrentUser(); + FirebaseUser user = getFirebaseAuthInstance().getCurrentUser(); if (user == null) { callback.error(new Exception(FirebaseAuthenticationPlugin.ERROR_NO_USER_SIGNED_IN)); return; @@ -667,7 +665,7 @@ public void handleSuccessfulSignIn( call.resolve(signInResult); return; } - firebaseAuthInstance + getFirebaseAuthInstance() .signInWithCredential(credential) .addOnCompleteListener( plugin.getActivity(), @@ -740,7 +738,7 @@ public void handleSuccessfulLink( @Nullable String accessToken, @Nullable String serverAuthCode ) { - FirebaseUser user = firebaseAuthInstance.getCurrentUser(); + FirebaseUser user = getFirebaseAuthInstance().getCurrentUser(); if (user == null) { call.reject(FirebaseAuthenticationPlugin.ERROR_NO_USER_SIGNED_IN); return; @@ -805,7 +803,7 @@ public void handlePhoneCodeSent(String verificationId) { } public FirebaseAuth getFirebaseAuthInstance() { - return firebaseAuthInstance; + return FirebaseAuth.getInstance(); } public FirebaseAuthenticationPlugin getPlugin() { diff --git a/packages/crashlytics/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/crashlytics/FirebaseCrashlytics.java b/packages/crashlytics/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/crashlytics/FirebaseCrashlytics.java index 4a2aee0b..305d3f67 100644 --- a/packages/crashlytics/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/crashlytics/FirebaseCrashlytics.java +++ b/packages/crashlytics/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/crashlytics/FirebaseCrashlytics.java @@ -6,12 +6,6 @@ public class FirebaseCrashlytics { - private final com.google.firebase.crashlytics.FirebaseCrashlytics crashlyticsInstance; - - FirebaseCrashlytics() { - crashlyticsInstance = com.google.firebase.crashlytics.FirebaseCrashlytics.getInstance(); - } - public void crash(String message) { throw new RuntimeException(message); } @@ -19,52 +13,56 @@ public void crash(String message) { public void setCustomKey(String key, String type, PluginCall call) { switch (type) { case "long": - crashlyticsInstance.setCustomKey(key, Long.valueOf(call.getInt("value"))); + getFirebaseCrashlyticsInstance().setCustomKey(key, Long.valueOf(call.getInt("value"))); break; case "int": - crashlyticsInstance.setCustomKey(key, call.getInt("value")); + getFirebaseCrashlyticsInstance().setCustomKey(key, call.getInt("value")); break; case "boolean": - crashlyticsInstance.setCustomKey(key, call.getBoolean("value")); + getFirebaseCrashlyticsInstance().setCustomKey(key, call.getBoolean("value")); break; case "float": - crashlyticsInstance.setCustomKey(key, call.getFloat("value")); + getFirebaseCrashlyticsInstance().setCustomKey(key, call.getFloat("value")); break; case "double": - crashlyticsInstance.setCustomKey(key, call.getDouble("value")); + getFirebaseCrashlyticsInstance().setCustomKey(key, call.getDouble("value")); break; default: - crashlyticsInstance.setCustomKey(key, call.getString("value")); + getFirebaseCrashlyticsInstance().setCustomKey(key, call.getString("value")); } } public void setUserId(String userId) { - crashlyticsInstance.setUserId(userId); + getFirebaseCrashlyticsInstance().setUserId(userId); } public void log(String message) { - crashlyticsInstance.log(message); + getFirebaseCrashlyticsInstance().log(message); } public void setEnabled(Boolean enabled) { - crashlyticsInstance.setCrashlyticsCollectionEnabled(enabled); + getFirebaseCrashlyticsInstance().setCrashlyticsCollectionEnabled(enabled); } public boolean didCrashOnPreviousExecution() { - return crashlyticsInstance.didCrashOnPreviousExecution(); + return getFirebaseCrashlyticsInstance().didCrashOnPreviousExecution(); } public void sendUnsentReports() { - crashlyticsInstance.sendUnsentReports(); + getFirebaseCrashlyticsInstance().sendUnsentReports(); } public void deleteUnsentReports() { - crashlyticsInstance.deleteUnsentReports(); + getFirebaseCrashlyticsInstance().deleteUnsentReports(); } public void recordException(String message, JSArray stacktrace) { Throwable throwable = getJavaScriptException(message, stacktrace); - crashlyticsInstance.recordException(throwable); + getFirebaseCrashlyticsInstance().recordException(throwable); + } + + private com.google.firebase.crashlytics.FirebaseCrashlytics getFirebaseCrashlyticsInstance() { + return com.google.firebase.crashlytics.FirebaseCrashlytics.getInstance(); } private JavaScriptException getJavaScriptException(String message, JSArray stacktrace) { diff --git a/packages/firestore/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/firestore/FirebaseFirestore.java b/packages/firestore/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/firestore/FirebaseFirestore.java index 5c08e158..01e64d06 100644 --- a/packages/firestore/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/firestore/FirebaseFirestore.java +++ b/packages/firestore/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/firestore/FirebaseFirestore.java @@ -32,19 +32,18 @@ public class FirebaseFirestore { private FirebaseFirestorePlugin plugin; - private com.google.firebase.firestore.FirebaseFirestore firestoreInstance; private Map listenerRegistrationMap = new HashMap<>(); public FirebaseFirestore(FirebaseFirestorePlugin plugin) { this.plugin = plugin; - firestoreInstance = com.google.firebase.firestore.FirebaseFirestore.getInstance(); } public void addDocument(@NonNull AddDocumentOptions options, @NonNull NonEmptyResultCallback callback) { String reference = options.getReference(); Map data = options.getData(); - this.firestoreInstance.collection(reference) + getFirebaseFirestoreInstance() + .collection(reference) .add(data) .addOnSuccessListener( documentReference -> { @@ -60,7 +59,7 @@ public void setDocument(@NonNull SetDocumentOptions options, @NonNull EmptyResul Map data = options.getData(); boolean merge = options.getMerge(); - DocumentReference documentReference = this.firestoreInstance.document(reference); + DocumentReference documentReference = getFirebaseFirestoreInstance().document(reference); Task task; if (merge) { task = documentReference.set(data, SetOptions.merge()); @@ -73,7 +72,8 @@ public void setDocument(@NonNull SetDocumentOptions options, @NonNull EmptyResul public void getDocument(@NonNull GetDocumentOptions options, @NonNull NonEmptyResultCallback callback) { String reference = options.getReference(); - this.firestoreInstance.document(reference) + getFirebaseFirestoreInstance() + .document(reference) .get() .addOnSuccessListener( documentSnapshot -> { @@ -88,7 +88,8 @@ public void updateDocument(@NonNull UpdateDocumentOptions options, @NonNull Empt String reference = options.getReference(); Map data = options.getData(); - this.firestoreInstance.document(reference) + getFirebaseFirestoreInstance() + .document(reference) .update(data) .addOnSuccessListener(unused -> callback.success()) .addOnFailureListener(exception -> callback.error(exception)); @@ -97,7 +98,8 @@ public void updateDocument(@NonNull UpdateDocumentOptions options, @NonNull Empt public void deleteDocument(@NonNull DeleteDocumentOptions options, @NonNull EmptyResultCallback callback) { String reference = options.getReference(); - this.firestoreInstance.document(reference) + getFirebaseFirestoreInstance() + .document(reference) .delete() .addOnSuccessListener(unused -> callback.success()) .addOnFailureListener(exception -> callback.error(exception)); @@ -108,7 +110,7 @@ public void getCollection(@NonNull GetCollectionOptions options, @NonNull NonEmp QueryCompositeFilterConstraint compositeFilter = options.getCompositeFilter(); QueryNonFilterConstraint[] queryConstraints = options.getQueryConstraints(); - Query query = this.firestoreInstance.collection(reference); + Query query = getFirebaseFirestoreInstance().collection(reference); if (compositeFilter != null) { Filter filter = compositeFilter.toFilter(); if (filter != null) { @@ -117,7 +119,7 @@ public void getCollection(@NonNull GetCollectionOptions options, @NonNull NonEmp } if (queryConstraints.length > 0) { for (QueryNonFilterConstraint queryConstraint : queryConstraints) { - query = queryConstraint.toQuery(query, this.firestoreInstance); + query = queryConstraint.toQuery(query, getFirebaseFirestoreInstance()); } } query @@ -136,14 +138,14 @@ public void getCollectionGroup(@NonNull GetCollectionGroupOptions options, @NonN QueryCompositeFilterConstraint compositeFilter = options.getCompositeFilter(); QueryNonFilterConstraint[] queryConstraints = options.getQueryConstraints(); - Query query = this.firestoreInstance.collectionGroup(reference); + Query query = getFirebaseFirestoreInstance().collectionGroup(reference); if (compositeFilter != null) { Filter filter = compositeFilter.toFilter(); query = query.where(filter); } if (queryConstraints.length > 0) { for (QueryNonFilterConstraint queryConstraint : queryConstraints) { - query = queryConstraint.toQuery(query, this.firestoreInstance); + query = queryConstraint.toQuery(query, getFirebaseFirestoreInstance()); } } query @@ -158,7 +160,8 @@ public void getCollectionGroup(@NonNull GetCollectionGroupOptions options, @NonN } public void clearPersistence(@NonNull EmptyResultCallback callback) { - this.firestoreInstance.clearPersistence() + getFirebaseFirestoreInstance() + .clearPersistence() .addOnSuccessListener( unused -> { callback.success(); @@ -172,7 +175,8 @@ public void clearPersistence(@NonNull EmptyResultCallback callback) { } public void enableNetwork(@NonNull EmptyResultCallback callback) { - this.firestoreInstance.enableNetwork() + getFirebaseFirestoreInstance() + .enableNetwork() .addOnSuccessListener( unused -> { callback.success(); @@ -186,7 +190,8 @@ public void enableNetwork(@NonNull EmptyResultCallback callback) { } public void disableNetwork(@NonNull EmptyResultCallback callback) { - this.firestoreInstance.disableNetwork() + getFirebaseFirestoreInstance() + .disableNetwork() .addOnSuccessListener( unused -> { callback.success(); @@ -203,18 +208,18 @@ public void addDocumentSnapshotListener(@NonNull AddDocumentSnapshotListenerOpti String reference = options.getReference(); String callbackId = options.getCallbackId(); - ListenerRegistration listenerRegistration = - this.firestoreInstance.document(reference) - .addSnapshotListener( - (documentSnapshot, exception) -> { - if (exception != null) { - callback.error(exception); - } else { - GetDocumentResult result = new GetDocumentResult(documentSnapshot); - callback.success(result); - } + ListenerRegistration listenerRegistration = getFirebaseFirestoreInstance() + .document(reference) + .addSnapshotListener( + (documentSnapshot, exception) -> { + if (exception != null) { + callback.error(exception); + } else { + GetDocumentResult result = new GetDocumentResult(documentSnapshot); + callback.success(result); } - ); + } + ); this.listenerRegistrationMap.put(callbackId, listenerRegistration); } @@ -227,14 +232,14 @@ public void addCollectionSnapshotListener( QueryNonFilterConstraint[] queryConstraints = options.getQueryConstraints(); String callbackId = options.getCallbackId(); - Query query = this.firestoreInstance.collection(reference); + Query query = getFirebaseFirestoreInstance().collection(reference); if (compositeFilter != null) { Filter filter = compositeFilter.toFilter(); query = query.where(filter); } if (queryConstraints.length > 0) { for (QueryNonFilterConstraint queryConstraint : queryConstraints) { - query = queryConstraint.toQuery(query, this.firestoreInstance); + query = queryConstraint.toQuery(query, getFirebaseFirestoreInstance()); } } @@ -267,4 +272,8 @@ public void removeAllListeners() { } this.listenerRegistrationMap.clear(); } + + private com.google.firebase.firestore.FirebaseFirestore getFirebaseFirestoreInstance() { + return com.google.firebase.firestore.FirebaseFirestore.getInstance(); + } } diff --git a/packages/messaging/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/messaging/FirebaseMessaging.java b/packages/messaging/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/messaging/FirebaseMessaging.java index 3cf0fbb6..84f67efd 100644 --- a/packages/messaging/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/messaging/FirebaseMessaging.java +++ b/packages/messaging/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/messaging/FirebaseMessaging.java @@ -18,17 +18,16 @@ public class FirebaseMessaging { private FirebaseMessagingPlugin plugin; private NotificationManager notificationManager; - private com.google.firebase.messaging.FirebaseMessaging firebaseMessagingInstance; public FirebaseMessaging(FirebaseMessagingPlugin plugin) { this.plugin = plugin; this.notificationManager = (NotificationManager) plugin.getActivity().getSystemService(Context.NOTIFICATION_SERVICE); - this.firebaseMessagingInstance = com.google.firebase.messaging.FirebaseMessaging.getInstance(); } public void getToken(final GetTokenResultCallback resultCallback) { - this.firebaseMessagingInstance.setAutoInitEnabled(true); - this.firebaseMessagingInstance.getToken() + getFirebaseMessagingInstance().setAutoInitEnabled(true); + getFirebaseMessagingInstance() + .getToken() .addOnCompleteListener( task -> { if (!task.isSuccessful()) { @@ -45,7 +44,7 @@ public void getToken(final GetTokenResultCallback resultCallback) { } public void deleteToken() { - this.firebaseMessagingInstance.deleteToken(); + getFirebaseMessagingInstance().deleteToken(); } public StatusBarNotification[] getDeliveredNotifications() { @@ -73,11 +72,11 @@ public void removeAllDeliveredNotifications() { } public void subscribeToTopic(String topic) { - firebaseMessagingInstance.subscribeToTopic(topic); + getFirebaseMessagingInstance().subscribeToTopic(topic); } public void unsubscribeFromTopic(String topic) { - firebaseMessagingInstance.unsubscribeFromTopic(topic); + getFirebaseMessagingInstance().unsubscribeFromTopic(topic); } @RequiresApi(api = Build.VERSION_CODES.O) @@ -94,4 +93,8 @@ public void deleteChannelById(String id) { public List getNotificationChannels() { return notificationManager.getNotificationChannels(); } + + private com.google.firebase.messaging.FirebaseMessaging getFirebaseMessagingInstance() { + return com.google.firebase.messaging.FirebaseMessaging.getInstance(); + } } diff --git a/packages/remote-config/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/remoteconfig/FirebaseRemoteConfig.java b/packages/remote-config/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/remoteconfig/FirebaseRemoteConfig.java index 4e174daa..a609c742 100644 --- a/packages/remote-config/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/remoteconfig/FirebaseRemoteConfig.java +++ b/packages/remote-config/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/remoteconfig/FirebaseRemoteConfig.java @@ -22,16 +22,14 @@ public class FirebaseRemoteConfig { private final FirebaseRemoteConfigPlugin plugin; - private final com.google.firebase.remoteconfig.FirebaseRemoteConfig remoteConfigInstance; private final Map listenerRegistrationMap = new HashMap<>(); public FirebaseRemoteConfig(FirebaseRemoteConfigPlugin plugin) { this.plugin = plugin; - this.remoteConfigInstance = com.google.firebase.remoteconfig.FirebaseRemoteConfig.getInstance(); } public void activate(final ActivateResultCallback resultCallback) { - remoteConfigInstance + getFirebaseRemoteConfigInstance() .activate() .addOnSuccessListener( result -> { @@ -47,7 +45,7 @@ public void activate(final ActivateResultCallback resultCallback) { } public void fetchAndActivate(final ActivateResultCallback resultCallback) { - remoteConfigInstance + getFirebaseRemoteConfigInstance() .fetchAndActivate() .addOnSuccessListener( result -> { @@ -63,7 +61,7 @@ public void fetchAndActivate(final ActivateResultCallback resultCallback) { } public void fetchConfig(long minimumFetchIntervalInSeconds, final FetchConfigResultCallback resultCallback) { - remoteConfigInstance + getFirebaseRemoteConfigInstance() .fetch(minimumFetchIntervalInSeconds) .addOnSuccessListener( result -> { @@ -79,40 +77,38 @@ public void fetchConfig(long minimumFetchIntervalInSeconds, final FetchConfigRes } public GetValueResult getBoolean(String key) { - FirebaseRemoteConfigValue value = remoteConfigInstance.getValue(key); + FirebaseRemoteConfigValue value = getFirebaseRemoteConfigInstance().getValue(key); return new GetValueResult(value.asBoolean(), value.getSource()); } public GetValueResult getNumber(String key) { - FirebaseRemoteConfigValue value = remoteConfigInstance.getValue(key); + FirebaseRemoteConfigValue value = getFirebaseRemoteConfigInstance().getValue(key); return new GetValueResult(value.asDouble(), value.getSource()); } public GetValueResult getString(String key) { - FirebaseRemoteConfigValue value = remoteConfigInstance.getValue(key); + FirebaseRemoteConfigValue value = getFirebaseRemoteConfigInstance().getValue(key); return new GetValueResult(value.asString(), value.getSource()); } public void addConfigUpdateListener(@NonNull AddConfigUpdateListenerOptions options, @NonNull NonEmptyResultCallback callback) { String callbackId = options.getCallbackId(); - ConfigUpdateListenerRegistration listenerRegistration = - this.remoteConfigInstance.addOnConfigUpdateListener( - new ConfigUpdateListener() { - @Override - public void onUpdate(ConfigUpdate configUpdate) { - AddConfigUpdateListenerOptionsCallbackEvent event = new AddConfigUpdateListenerOptionsCallbackEvent( - configUpdate - ); - callback.success(event); - } - - @Override - public void onError(FirebaseRemoteConfigException error) { - callback.error(error); - } + ConfigUpdateListenerRegistration listenerRegistration = getFirebaseRemoteConfigInstance() + .addOnConfigUpdateListener( + new ConfigUpdateListener() { + @Override + public void onUpdate(ConfigUpdate configUpdate) { + AddConfigUpdateListenerOptionsCallbackEvent event = new AddConfigUpdateListenerOptionsCallbackEvent(configUpdate); + callback.success(event); } - ); + + @Override + public void onError(FirebaseRemoteConfigException error) { + callback.error(error); + } + } + ); this.listenerRegistrationMap.put(callbackId, listenerRegistration); } @@ -132,4 +128,8 @@ public void removeAllListeners() { } this.listenerRegistrationMap.clear(); } + + private com.google.firebase.remoteconfig.FirebaseRemoteConfig getFirebaseRemoteConfigInstance() { + return com.google.firebase.remoteconfig.FirebaseRemoteConfig.getInstance(); + } } diff --git a/packages/storage/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/storage/FirebaseStorage.java b/packages/storage/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/storage/FirebaseStorage.java index 48b1ce5d..14c60dc8 100644 --- a/packages/storage/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/storage/FirebaseStorage.java +++ b/packages/storage/android/src/main/java/io/capawesome/capacitorjs/plugins/firebase/storage/FirebaseStorage.java @@ -26,17 +26,15 @@ public class FirebaseStorage { private FirebaseStoragePlugin plugin; - private com.google.firebase.storage.FirebaseStorage firebaseStorageInstance; public FirebaseStorage(FirebaseStoragePlugin plugin) { this.plugin = plugin; - firebaseStorageInstance = com.google.firebase.storage.FirebaseStorage.getInstance(); } public void deleteFile(@NonNull DeleteFileOptions options, @NonNull EmptyResultCallback callback) { String path = options.getPath(); - StorageReference storageReference = firebaseStorageInstance.getReference(path); + StorageReference storageReference = getFirebaseStorageInstance().getReference(path); storageReference .delete() .addOnSuccessListener(aVoid -> callback.success()) @@ -46,7 +44,7 @@ public void deleteFile(@NonNull DeleteFileOptions options, @NonNull EmptyResultC public void getDownloadUrl(@NonNull GetDownloadUrlOptions options, @NonNull NonEmptyResultCallback callback) { String path = options.getPath(); - StorageReference storageReference = firebaseStorageInstance.getReference(path); + StorageReference storageReference = getFirebaseStorageInstance().getReference(path); storageReference .getDownloadUrl() .addOnSuccessListener( @@ -61,7 +59,7 @@ public void getDownloadUrl(@NonNull GetDownloadUrlOptions options, @NonNull NonE public void getMetadata(@NonNull GetMetadataOptions options, @NonNull NonEmptyResultCallback callback) { String path = options.getPath(); - StorageReference storageReference = firebaseStorageInstance.getReference(path); + StorageReference storageReference = getFirebaseStorageInstance().getReference(path); storageReference .getMetadata() .addOnSuccessListener( @@ -78,7 +76,7 @@ public void listFiles(@NonNull ListFilesOptions options, @NonNull NonEmptyResult int maxResults = options.getMaxResults(); String pageToken = options.getPageToken(); - StorageReference storageReference = firebaseStorageInstance.getReference(path); + StorageReference storageReference = getFirebaseStorageInstance().getReference(path); Task task; if (pageToken == null) { task = storageReference.list(maxResults); @@ -99,7 +97,7 @@ public void updateMetadata(@NonNull UpdateMetadataOptions options, @NonNull Empt String path = options.getPath(); StorageMetadata metadata = options.getMetadata(); - StorageReference storageReference = firebaseStorageInstance.getReference(path); + StorageReference storageReference = getFirebaseStorageInstance().getReference(path); storageReference .updateMetadata(metadata) .addOnSuccessListener(aVoid -> callback.success()) @@ -112,7 +110,7 @@ public void uploadFile(@NonNull UploadFileOptions options, @NonNull NonEmptyEven @Nullable StorageMetadata metadata = options.getMetadata(); - StorageReference storageReference = firebaseStorageInstance.getReference(path); + StorageReference storageReference = getFirebaseStorageInstance().getReference(path); UploadTask uploadTask; if (metadata == null) { uploadTask = storageReference.putFile(uri); @@ -140,4 +138,8 @@ public void uploadFile(@NonNull UploadFileOptions options, @NonNull NonEmptyEven } ); } + + private com.google.firebase.storage.FirebaseStorage getFirebaseStorageInstance() { + return com.google.firebase.storage.FirebaseStorage.getInstance(); + } }