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 f07a3759..df7358ea 100644 --- a/android/src/main/java/io/invertase/firebase/database/RNFirebaseDatabase.java +++ b/android/src/main/java/io/invertase/firebase/database/RNFirebaseDatabase.java @@ -73,9 +73,10 @@ public class RNFirebaseDatabase extends ReactContextBaseJavaModule { * @param state */ @ReactMethod - public void keepSynced(String appName, String path, Boolean state) { - // TODO: Needs to take into account modifiers as well as just the path - getReferenceForAppPath(appName, path).keepSynced(state); + public void keepSynced(String appName, int id, String path, ReadableArray modifiers, Boolean state) { + getInternalReferenceForApp(appName, id, path, modifiers, false) + .getQuery() + .keepSynced(state); } @@ -406,8 +407,6 @@ public class RNFirebaseDatabase extends ReactContextBaseJavaModule { } - - /* * INTERNALS/UTILS */ @@ -441,6 +440,11 @@ public class RNFirebaseDatabase extends ReactContextBaseJavaModule { return "RNFirebaseDatabase"; } + /** + * React Native constants for RNFirebaseDatabase + * + * @return + */ @Override public Map getConstants() { final Map constants = new HashMap<>(); @@ -471,6 +475,8 @@ public class RNFirebaseDatabase extends ReactContextBaseJavaModule { } /** + * Return an existing or create a new RNFirebaseDatabaseReference instance. + * * @param appName * @param refId * @param path @@ -520,6 +526,13 @@ public class RNFirebaseDatabase extends ReactContextBaseJavaModule { return service.toUpperCase() + "/" + code.toUpperCase(); } + /** + * Convert as firebase DatabaseError instance into a writable map + * with the correct web-like error codes. + * + * @param nativeError + * @return + */ static WritableMap getJSError(DatabaseError nativeError) { WritableMap errorMap = Arguments.createMap(); errorMap.putInt("nativeErrorCode", nativeError.getCode()); diff --git a/android/src/main/java/io/invertase/firebase/database/RNFirebaseDatabaseReference.java b/android/src/main/java/io/invertase/firebase/database/RNFirebaseDatabaseReference.java index 714999f1..c955966c 100644 --- a/android/src/main/java/io/invertase/firebase/database/RNFirebaseDatabaseReference.java +++ b/android/src/main/java/io/invertase/firebase/database/RNFirebaseDatabaseReference.java @@ -33,6 +33,10 @@ public class RNFirebaseDatabaseReference { private SparseArray childEventListeners; private SparseArray valueEventListeners; + Query getQuery() { + return query; + } + /** * @param context * @param app @@ -45,11 +49,8 @@ public class RNFirebaseDatabaseReference { appName = app; path = refPath; reactContext = context; - - // todo only create if needed childEventListeners = new SparseArray(); valueEventListeners = new SparseArray(); - query = buildDatabaseQueryAtPathAndModifiers(path, modifiersArray); } @@ -58,7 +59,7 @@ public class RNFirebaseDatabaseReference { * * @param promise */ - void addOnceValueEventListener(final Promise promise) { + private void addOnceValueEventListener(final Promise promise) { ValueEventListener onceValueEventListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { @@ -83,7 +84,7 @@ public class RNFirebaseDatabaseReference { * @param eventName * @param promise */ - void addChildOnceEventListener(final String eventName, final Promise promise) { + private void addChildOnceEventListener(final String eventName, final Promise promise) { ChildEventListener childEventListener = new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) { @@ -132,12 +133,16 @@ public class RNFirebaseDatabaseReference { } + /** + * Handles a React Native JS 'on' request and initializes listeners. + * @param eventName + */ void on(String eventName) { } /** - * + * Handles a React Native JS 'once' request. * @param eventName * @param promise */