Skip to content

Commit fe0d551

Browse files
feat(fdc): Handle disconnects and reconnects (#18157)
* Handle disconnects and reconnects * Address gemini review comments * Reconnection logic * Fixes to reconnect on startup * Fix to decode binary data from server * Handle gemini feedback * Update rest_transport mocks with new windows provider sig
1 parent 13cb449 commit fe0d551

5 files changed

Lines changed: 314 additions & 58 deletions

File tree

packages/firebase_data_connect/firebase_data_connect/lib/src/core/ref.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -334,14 +334,14 @@ class QueryRef<Data, Variables> extends OperationRef<Data, Variables> {
334334
_streamController!.stream.cast<QueryResult<Data, Variables>>();
335335

336336
// Return the stream to the caller, then execute fetches
337-
Future.microtask(() {
337+
Future.microtask(() async {
338338
if (dataConnect.cacheManager != null) {
339-
_executeFromCache(QueryFetchPolicy.cacheOnly)
340-
.then((_) {})
341-
.catchError((err) {
339+
try {
340+
await _executeFromCache(QueryFetchPolicy.cacheOnly);
341+
} catch (err) {
342342
log("Error fetching from cache during subscribe $err");
343343
// Ignore cache misses here, server stream will provide latest data
344-
});
344+
}
345345
}
346346

347347
// Initiate Web Socket stream
@@ -380,7 +380,7 @@ class QueryRef<Data, Variables> extends OperationRef<Data, Variables> {
380380
publishErrorToStream(e);
381381
}
382382
} catch (e) {
383-
publishErrorToStream(e as Error);
383+
publishErrorToStream(e);
384384
}
385385
}
386386

0 commit comments

Comments
 (0)