Skip to content

Commit 7138c5d

Browse files
committed
Fix DDC issues after hot reload
1 parent 1d60e98 commit 7138c5d

File tree

3 files changed

+11
-5
lines changed

3 files changed

+11
-5
lines changed

demos/supabase-todolist/lib/widgets/todo_list_page.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'dart:async';
22

33
import 'package:flutter/material.dart';
44
import 'package:powersync_flutter_demo/models/todo_item.dart';
5+
import 'package:powersync_flutter_demo/powersync.dart';
56

67
import './status_app_bar.dart';
78
import './todo_item_dialog.dart';
@@ -81,8 +82,9 @@ class TodoListWidgetState extends State<TodoListWidget> {
8182
Widget build(BuildContext context) {
8283
return StreamBuilder(
8384
stream: TodoList.watchSyncStatus().map((e) => e.hasSynced),
85+
initialData: db.currentStatus.hasSynced,
8486
builder: (context, snapshot) {
85-
if (snapshot.data ?? false) {
87+
if (snapshot.data != true) {
8688
return const Text('Busy with sync');
8789
}
8890

packages/powersync_core/lib/src/sync_status.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,9 @@ final class SyncStatus {
151151
return "SyncStatus<connected: $connected connecting: $connecting downloading: $downloading uploading: $uploading lastSyncedAt: $lastSyncedAt, hasSynced: $hasSynced, error: $anyError>";
152152
}
153153

154-
static const _statusEquality = ListEquality<SyncPriorityStatus>();
154+
// This should be a ListEquality<SyncPriorityStatus>, but that appears to
155+
// cause weird type errors with DDC (but only after hot reloads?!)
156+
static const _statusEquality = ListEquality<Object?>();
155157
}
156158

157159
/// The priority of a PowerSync bucket.

packages/powersync_core/lib/src/web/sync_worker_protocol.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,9 @@ extension type SerializedSyncStatus._(JSObject _) implements JSObject {
203203
hasSynced: hasSynced,
204204
uploadError: uploadError,
205205
downloadError: downloadError,
206-
priorityStatusEntries: priorityStatusEntries?.toDart.map((e) {
206+
priorityStatusEntries: <SyncPriorityStatus>[
207+
if (priorityStatusEntries case final jsEntries?)
208+
...jsEntries.toDart.map((e) {
207209
final [rawPriority, rawSynced, rawHasSynced, ...] =
208210
(e as JSArray).toDart;
209211
final syncedMillis = (rawSynced as JSNumber?)?.toDartInt;
@@ -215,8 +217,8 @@ extension type SerializedSyncStatus._(JSObject _) implements JSObject {
215217
: null,
216218
hasSynced: (rawHasSynced as JSBoolean?)?.toDart,
217219
);
218-
}).toList() ??
219-
const [],
220+
})
221+
],
220222
);
221223
}
222224
}

0 commit comments

Comments
 (0)