Clear current ApolloStore related interceptors when calling .store()
on builder
#5857
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I noticed a bug when using
.newBuilder().store()
on an existingApolloClient
. The intention was to set a differentApolloStore()
usingbuilder.store(...)
on this client. But after.build()
on this new client, I noticed that.watch()
was not working when I wrote some data to the newstore.
Turns out that we were ending up with 3 duplicated watchers, the ones that are added by
.store()
function.This PR fixes that problem by clearing the 3 store related watchers when using
.store()
on a builder.internal interface ApolloStoreInterceptor
to indicate these interceptorsClientCacheExtensions
, clear them inApolloClient.Builder.store()
functionremoveInterceptor()
APII am not sure if making
removeInterceptor()
a part of the builder API is desirable, but I couldn't think of a way to make this work without introducing such an API. Let me know if you have other approaches I can try for this.