Skip to content

Conversation

@dbouianov
Copy link

Fixing issue with duplicate live query events after unsubscribe by removing subscriptions in unsubscribe method.

Repro scenario:

private ParseLiveQueryClient _client;
private ParseQuery _query;
private Subscription _sub;

public void InitLiveQuery() {
var cfg = new ParseClient.Configuration(...);
ParseClient.Initialize(cfg);
_client = new ParseLiveQueryClient(new Uri(serverUrl));
}

public void StartLiveQuery(string className, string objectId) {
_client.Reconnect();
_query = new ParseQuery(className);
if (!string.IsNullOrEmpty(objectId)) _query = _query.WhereEqualTo("objectId", objectId);
_sub = _client.Subscribe(_query);
_sub.HandleEvents(HandleLiveQueryEvent);
_sub.HandleError(HandleLiveQueryError);
}

public void StopLiveQuery() {
_client.Unsubscribe(_query, _sub);
_client.Disconnect();
_query = null;
_sub = null;
}

InitLiveQuery();
//not receiving live query update callbacks
StartLiveQuery();
//receiving live query update callbacks
StopLiveQuery();
//still receiving live query update callbacks
StartLiveQuery();
//receiving duplicate live query update callbacks

Root cause: subscriptions not being removed from subscription dictionary on unsubscribe.
Fix: removing subscriptions from subscription dictionary in unsubscribe method

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant