Skip to content

Commit 0d35529

Browse files
committed
Fix according to review
1 parent f989c0e commit 0d35529

File tree

2 files changed

+16
-11
lines changed

2 files changed

+16
-11
lines changed

firebase-firestore/src/main/java/com/google/firebase/firestore/FirebaseFirestore.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import com.google.firebase.firestore.auth.FirebaseAppCheckTokenProvider;
3737
import com.google.firebase.firestore.auth.FirebaseAuthCredentialsProvider;
3838
import com.google.firebase.firestore.auth.User;
39+
import com.google.firebase.firestore.core.ActivityScope;
3940
import com.google.firebase.firestore.core.AsyncEventListener;
4041
import com.google.firebase.firestore.core.ComponentProvider;
4142
import com.google.firebase.firestore.core.DatabaseInfo;
@@ -834,7 +835,15 @@ private ListenerRegistration addSnapshotsInSyncListener(
834835
};
835836
AsyncEventListener<Void> asyncListener = new AsyncEventListener<>(userExecutor, eventListener);
836837
return clientProvider.call(
837-
client -> client.addSnapshotsInSyncListener(activity, asyncListener));
838+
client -> {
839+
client.addSnapshotsInSyncListener(asyncListener);
840+
return ActivityScope.bind(
841+
activity,
842+
() -> {
843+
asyncListener.mute();
844+
client.removeSnapshotsInSyncListener(asyncListener);
845+
});
846+
});
838847
}
839848

840849
<T> T callClient(Function<FirestoreClient, T> call) {

firebase-firestore/src/main/java/com/google/firebase/firestore/core/FirestoreClient.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import static com.google.firebase.firestore.util.Assert.hardAssert;
1818

1919
import android.annotation.SuppressLint;
20-
import android.app.Activity;
2120
import android.content.Context;
2221
import androidx.annotation.Nullable;
2322
import com.google.android.gms.tasks.Task;
@@ -27,7 +26,6 @@
2726
import com.google.firebase.firestore.EventListener;
2827
import com.google.firebase.firestore.FirebaseFirestoreException;
2928
import com.google.firebase.firestore.FirebaseFirestoreException.Code;
30-
import com.google.firebase.firestore.ListenerRegistration;
3129
import com.google.firebase.firestore.LoadBundleTask;
3230
import com.google.firebase.firestore.TransactionOptions;
3331
import com.google.firebase.firestore.auth.CredentialsProvider;
@@ -302,16 +300,9 @@ private void initialize(
302300
}
303301
}
304302

305-
public ListenerRegistration addSnapshotsInSyncListener(
306-
Activity activity, AsyncEventListener<Void> listener) {
303+
public void addSnapshotsInSyncListener(EventListener<Void> listener) {
307304
verifyNotTerminated();
308305
asyncQueue.enqueueAndForget(() -> eventManager.addSnapshotsInSyncListener(listener));
309-
return ActivityScope.bind(
310-
activity,
311-
() -> {
312-
listener.mute();
313-
asyncQueue.enqueueAndForget(() -> eventManager.removeSnapshotsInSyncListener(listener));
314-
});
315306
}
316307

317308
public void loadBundle(InputStream bundleData, LoadBundleTask resultTask) {
@@ -360,6 +351,11 @@ public void deleteAllFieldIndexes() {
360351
asyncQueue.enqueueAndForget(() -> localStore.deleteAllFieldIndexes());
361352
}
362353

354+
public void removeSnapshotsInSyncListener(EventListener<Void> listener) {
355+
// `enqueueAndForget` will no-op if client is already terminated.
356+
asyncQueue.enqueueAndForget(() -> eventManager.removeSnapshotsInSyncListener(listener));
357+
}
358+
363359
private void verifyNotTerminated() {
364360
if (this.isTerminated()) {
365361
throw new IllegalStateException("The client has already been terminated");

0 commit comments

Comments
 (0)