From 11e5bc2ae7214e798b8036c4a57a7c789c55da12 Mon Sep 17 00:00:00 2001 From: Salakar Date: Tue, 28 Nov 2017 07:41:37 +0000 Subject: [PATCH 1/5] [android][firestore] added `enableLogging(boolean)` method --- .../firebase/firestore/RNFirebaseFirestore.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/io/invertase/firebase/firestore/RNFirebaseFirestore.java b/android/src/main/java/io/invertase/firebase/firestore/RNFirebaseFirestore.java index d89c3093..0d0ba858 100644 --- a/android/src/main/java/io/invertase/firebase/firestore/RNFirebaseFirestore.java +++ b/android/src/main/java/io/invertase/firebase/firestore/RNFirebaseFirestore.java @@ -10,7 +10,6 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; -import com.facebook.react.bridge.WritableArray; import com.facebook.react.bridge.WritableMap; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; @@ -27,7 +26,6 @@ import java.util.List; import java.util.Map; import io.invertase.firebase.ErrorUtils; -import io.invertase.firebase.Utils; public class RNFirebaseFirestore extends ReactContextBaseJavaModule { @@ -42,6 +40,16 @@ public class RNFirebaseFirestore extends ReactContextBaseJavaModule { /* * REACT NATIVE METHODS */ + + /** + * @param enabled + */ + @ReactMethod + public void enableLogging(Boolean enabled) { + FirebaseFirestore.setLoggingEnabled(enabled); + } + + @ReactMethod public void collectionGet(String appName, String path, ReadableArray filters, ReadableArray orders, ReadableMap options, final Promise promise) { From 54e904e22faa82745cd346c88881eff3100954c5 Mon Sep 17 00:00:00 2001 From: Salakar Date: Tue, 28 Nov 2017 07:41:55 +0000 Subject: [PATCH 2/5] [js][firestore] added `enableLogging(boolean)` method --- lib/modules/firestore/index.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/modules/firestore/index.js b/lib/modules/firestore/index.js index b1270c97..f18b6f75 100644 --- a/lib/modules/firestore/index.js +++ b/lib/modules/firestore/index.js @@ -2,6 +2,8 @@ * @flow * Firestore representation wrapper */ +import { NativeModules } from 'react-native'; + import ModuleBase from './../../utils/ModuleBase'; import CollectionReference from './CollectionReference'; import DocumentReference from './DocumentReference'; @@ -141,4 +143,9 @@ export default class Firestore extends ModuleBase { export const statics = { FieldValue, GeoPoint, + enableLogging(bool) { + if (NativeModules[Firestore._NATIVE_MODULE]) { + NativeModules[Firestore._NATIVE_MODULE].enableLogging(bool); + } + }, }; From 66fcbd5c243b8da3921fe4972576947f5dc09b15 Mon Sep 17 00:00:00 2001 From: Salakar Date: Tue, 28 Nov 2017 08:02:05 +0000 Subject: [PATCH 3/5] [ios][firestore] added `enableLogging(boolean)` method --- ios/RNFirebase/firestore/RNFirebaseFirestore.m | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ios/RNFirebase/firestore/RNFirebaseFirestore.m b/ios/RNFirebase/firestore/RNFirebaseFirestore.m index c9510f47..29d8646d 100644 --- a/ios/RNFirebase/firestore/RNFirebaseFirestore.m +++ b/ios/RNFirebase/firestore/RNFirebaseFirestore.m @@ -18,6 +18,10 @@ RCT_EXPORT_MODULE(); return self; } +RCT_EXPORT_METHOD(enableLogging:(BOOL) enabled) { + [FIRFirestore enableLogging:enabled]; +} + RCT_EXPORT_METHOD(collectionGet:(NSString *) appName path:(NSString *) path filters:(NSArray *) filters From 13c43f2efe960941dc659c0f8357c7201eaf70f9 Mon Sep 17 00:00:00 2001 From: Salakar Date: Tue, 28 Nov 2017 08:02:24 +0000 Subject: [PATCH 4/5] [tests][android] update sdks to 11.6.2 --- tests/android/app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/android/app/build.gradle b/tests/android/app/build.gradle index ea0afb68..83c93fac 100644 --- a/tests/android/app/build.gradle +++ b/tests/android/app/build.gradle @@ -72,7 +72,7 @@ android { } } -project.ext.firebaseVersion = '11.4.2' +project.ext.firebaseVersion = '11.6.2' dependencies { // compile(project(':react-native-firebase')) { From a94943bfc06b071370909d31597c6bc19e751765 Mon Sep 17 00:00:00 2001 From: Salakar Date: Tue, 28 Nov 2017 09:09:58 +0000 Subject: [PATCH 5/5] fix imports --- .../firebase/database/RNFirebaseDatabase.java | 25 ++++++++++++++----- lib/utils/SyncTree.js | 2 +- tests/src/firebase.js | 2 +- tests/src/tests/core/coreTests.js | 2 +- tests/src/tests/storage/storageTests.js | 2 +- 5 files changed, 23 insertions(+), 10 deletions(-) diff --git a/android/src/main/java/io/invertase/firebase/database/RNFirebaseDatabase.java b/android/src/main/java/io/invertase/firebase/database/RNFirebaseDatabase.java index ef130caa..e9900a40 100644 --- a/android/src/main/java/io/invertase/firebase/database/RNFirebaseDatabase.java +++ b/android/src/main/java/io/invertase/firebase/database/RNFirebaseDatabase.java @@ -13,6 +13,7 @@ import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.google.firebase.FirebaseApp; +import com.google.firebase.database.DatabaseException; import com.google.firebase.database.Logger; import com.google.firebase.database.MutableData; import com.google.firebase.database.OnDisconnect; @@ -35,6 +36,7 @@ public class RNFirebaseDatabase extends ReactContextBaseJavaModule { private static final String TAG = "RNFirebaseDatabase"; private boolean enableLogging = false; private HashMap references = new HashMap<>(); + private HashMap loggingLevelSet = new HashMap<>(); private SparseArray transactionHandlers = new SparseArray<>(); RNFirebaseDatabase(ReactApplicationContext reactContext) { @@ -89,6 +91,8 @@ public class RNFirebaseDatabase extends ReactContextBaseJavaModule { enableLogging = enabled; List firebaseAppList = FirebaseApp.getApps(getReactApplicationContext()); for (FirebaseApp app : firebaseAppList) { + loggingLevelSet.put(app.getName(), enabled); + if (enableLogging) { FirebaseDatabase.getInstance(app).setLogLevel(Logger.Level.DEBUG); } else { @@ -488,12 +492,21 @@ public class RNFirebaseDatabase extends ReactContextBaseJavaModule { FirebaseApp firebaseApp = FirebaseApp.getInstance(appName); FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance(firebaseApp); -// todo errors 'calls must be made before any other usage of database instance -// if (enableLogging) { -// firebaseDatabase.setLogLevel(Logger.Level.DEBUG); -// } else { -// firebaseDatabase.setLogLevel(Logger.Level.WARN); -// } + if (enableLogging && !loggingLevelSet.get(firebaseDatabase.getApp().getName())) { + try { + loggingLevelSet.put(firebaseDatabase.getApp().getName(), enableLogging); + firebaseDatabase.setLogLevel(Logger.Level.DEBUG); + } catch (DatabaseException dex) { + // do nothing - to catch 'calls to setLogLevel must be made for use of database' errors + } + } else if (!enableLogging && loggingLevelSet.get(firebaseDatabase.getApp().getName())) { + try { + loggingLevelSet.put(firebaseDatabase.getApp().getName(), enableLogging); + firebaseDatabase.setLogLevel(Logger.Level.WARN); + } catch (DatabaseException dex) { + // do nothing - to catch 'calls to setLogLevel must be made for use of database' errors + } + } return firebaseDatabase; } diff --git a/lib/utils/SyncTree.js b/lib/utils/SyncTree.js index d8349ef4..bf726889 100644 --- a/lib/utils/SyncTree.js +++ b/lib/utils/SyncTree.js @@ -3,7 +3,7 @@ */ import { NativeEventEmitter } from 'react-native'; -import INTERNALS from './../internals'; +import INTERNALS from './internals'; import DatabaseSnapshot from './../modules/database/snapshot'; import DatabaseReference from './../modules/database/reference'; import { isString, nativeToJSError } from './../utils'; diff --git a/tests/src/firebase.js b/tests/src/firebase.js index 22709803..033b438b 100644 --- a/tests/src/firebase.js +++ b/tests/src/firebase.js @@ -1,7 +1,7 @@ import { Platform } from 'react-native'; import firebase from 'firebase'; -import RNfirebase from './../firebase/firebase'; +import RNfirebase from './../firebase'; import DatabaseContents from './tests/support/DatabaseContents'; diff --git a/tests/src/tests/core/coreTests.js b/tests/src/tests/core/coreTests.js index cd25a62d..d96e5d78 100644 --- a/tests/src/tests/core/coreTests.js +++ b/tests/src/tests/core/coreTests.js @@ -1,7 +1,7 @@ import { Platform } from 'react-native'; import should from 'should'; -import RNFirebase from './../../../firebase/firebase'; +import RNFirebase from './../../../firebase'; const androidTestConfig = { // firebase android sdk completely ignores client id diff --git a/tests/src/tests/storage/storageTests.js b/tests/src/tests/storage/storageTests.js index 90d9d61a..2aa78578 100644 --- a/tests/src/tests/storage/storageTests.js +++ b/tests/src/tests/storage/storageTests.js @@ -1,4 +1,4 @@ -import RNfirebase from './../../../firebase/firebase'; +import RNfirebase from './../../../firebase'; function storageTests({ describe, it, firebase, tryCatch }) { describe('ref(:path)', () => {