@@ -98,7 +98,6 @@ public enum ParseLiveQueryState
9898 /// This constructor is used to initialize a new instance of the <see cref="ParseLiveQueryController"/> class
9999 public ParseLiveQueryController ( IWebSocketClient webSocketClient )
100100 {
101- Debug . WriteLine ( "ParseLiveQueryController initialized." ) ;
102101 WebSocketClient = webSocketClient ;
103102 State = ParseLiveQueryState . Closed ;
104103 }
@@ -227,16 +226,19 @@ private void ProcessMessage(IDictionary<string, object> message)
227226 }
228227 }
229228
230- private IDictionary < string , object > AppendSessionToken ( IDictionary < string , object > message )
229+ private async Task < IDictionary < string , object > > AppendSessionToken ( IDictionary < string , object > message )
231230 {
232- return message . Concat ( new Dictionary < string , object > {
233- { "sessionToken" , ParseClient . Instance . Services . GetCurrentSessionToken ( ) }
234- } ) . ToDictionary ( ) ;
231+ string sessionToken = await ParseClient . Instance . Services . GetCurrentSessionToken ( ) ;
232+ return sessionToken is null
233+ ? message
234+ : message . Concat ( new Dictionary < string , object > {
235+ { "sessionToken" , await ParseClient . Instance . Services . GetCurrentSessionToken ( ) }
236+ } ) . ToDictionary ( ) ;
235237 }
236238
237239 private async Task SendMessage ( IDictionary < string , object > message , CancellationToken cancellationToken )
238240 {
239- await WebSocketClient . SendAsync ( JsonUtilities . Encode ( AppendSessionToken ( message ) ) , cancellationToken ) ;
241+ await WebSocketClient . SendAsync ( JsonUtilities . Encode ( message ) , cancellationToken ) ;
240242 }
241243
242244 private async Task OpenAsync ( CancellationToken cancellationToken = default )
@@ -283,15 +285,15 @@ public async Task ConnectAsync(CancellationToken cancellationToken = default)
283285 { "applicationId" , ParseClient . Instance . Services . LiveQueryServerConnectionData . ApplicationID } ,
284286 { "windowsKey" , ParseClient . Instance . Services . LiveQueryServerConnectionData . Key }
285287 } ;
286- await SendMessage ( message , cancellationToken ) ;
288+ await SendMessage ( await AppendSessionToken ( message ) , cancellationToken ) ;
287289 ConnectionSignal = new CancellationTokenSource ( ) ;
288290 bool signalReceived = ConnectionSignal . Token . WaitHandle . WaitOne ( TimeOut ) ;
289- State = ParseLiveQueryState . Connected ;
290- ConnectionSignal . Dispose ( ) ;
291291 if ( ! signalReceived )
292292 {
293293 throw new TimeoutException ( ) ;
294294 }
295+ State = ParseLiveQueryState . Connected ;
296+ ConnectionSignal . Dispose ( ) ;
295297 }
296298 else if ( State == ParseLiveQueryState . Connecting )
297299 {
@@ -339,9 +341,9 @@ public async Task<IParseLiveQuerySubscription> SubscribeAsync<T>(ParseLiveQuery<
339341 {
340342 { "op" , "subscribe" } ,
341343 { "requestId" , requestId } ,
342- { "query" , liveQuery . BuildParameters ( true ) }
344+ { "query" , liveQuery . BuildParameters ( ) }
343345 } ;
344- await SendMessage ( message , cancellationToken ) ;
346+ await SendMessage ( await AppendSessionToken ( message ) , cancellationToken ) ;
345347 CancellationTokenSource completionSignal = new CancellationTokenSource ( ) ;
346348 SubscriptionSignals . Add ( requestId , completionSignal ) ;
347349 bool signalReceived = completionSignal . Token . WaitHandle . WaitOne ( TimeOut ) ;
@@ -381,9 +383,9 @@ public async Task UpdateSubscriptionAsync<T>(ParseLiveQuery<T> liveQuery, int re
381383 {
382384 { "op" , "update" } ,
383385 { "requestId" , requestId } ,
384- { "query" , liveQuery . BuildParameters ( true ) }
386+ { "query" , liveQuery . BuildParameters ( ) }
385387 } ;
386- await SendMessage ( message , cancellationToken ) ;
388+ await SendMessage ( await AppendSessionToken ( message ) , cancellationToken ) ;
387389 }
388390
389391 /// <summary>
0 commit comments