Skip to content

Commit

Permalink
Fix ddc errors, more logs around crud uploads
Browse files Browse the repository at this point in the history
  • Loading branch information
simolus3 committed Feb 27, 2025
1 parent def0f53 commit ce8e290
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 7 deletions.
4 changes: 3 additions & 1 deletion demos/supabase-todolist/lib/widgets/todo_list_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'dart:async';

import 'package:flutter/material.dart';
import 'package:powersync_flutter_demo/models/todo_item.dart';
import 'package:powersync_flutter_demo/powersync.dart';

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

Expand Down
2 changes: 1 addition & 1 deletion packages/powersync_core/lib/src/sync_status.dart
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ final class SyncStatus {
return "SyncStatus<connected: $connected connecting: $connecting downloading: $downloading uploading: $uploading lastSyncedAt: $lastSyncedAt, hasSynced: $hasSynced, error: $anyError>";
}

static const _statusEquality = ListEquality<SyncPriorityStatus>();
static const _statusEquality = ListEquality<Object?>();
}

/// The priority of a PowerSync bucket.
Expand Down
7 changes: 6 additions & 1 deletion packages/powersync_core/lib/src/web/sync_worker.dart
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ class _ConnectedClient {
_ConnectedClient(MessagePort port, this._worker) {
channel = WorkerCommunicationChannel(
port: port,
logger: _logger,
requestHandler: (type, payload) async {
switch (type) {
case SyncWorkerMessageType.startSynchronization:
Expand Down Expand Up @@ -251,7 +252,11 @@ class _SyncRunner {
filteredStream,
crudThrottleTime,
addOne: UpdateNotification.empty(),
);
).map((event) {
_logger.fine('Saw update events: $event, triggering upload');

return event;
});
} else {
_logger.warning(
'Database is missing updates stream, sync worker will not upload '
Expand Down
17 changes: 13 additions & 4 deletions packages/powersync_core/lib/src/web/sync_worker_protocol.dart
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,9 @@ extension type SerializedSyncStatus._(JSObject _) implements JSObject {
hasSynced: hasSynced,
uploadError: uploadError,
downloadError: downloadError,
priorityStatusEntries: priorityStatusEntries?.toDart.map((e) {
priorityStatusEntries: <SyncPriorityStatus>[
if (priorityStatusEntries case final jsEntries?)
...jsEntries.toDart.map((e) {
final [rawPriority, rawSynced, rawHasSynced, ...] =
(e as JSArray).toDart;
final syncedMillis = (rawSynced as JSNumber?)?.toDartInt;
Expand All @@ -215,8 +217,8 @@ extension type SerializedSyncStatus._(JSObject _) implements JSObject {
: null,
hasSynced: (rawHasSynced as JSBoolean?)?.toDart,
);
}).toList() ??
const [],
})
],
);
}
}
Expand Down Expand Up @@ -385,7 +387,14 @@ final class WorkerCommunicationChannel {
}

Future<void> uploadCrud() async {
await _numericRequest(SyncWorkerMessageType.uploadCrud);
_logger.info('uploadCrud: Requesting upload from client');
try {
await _numericRequest(SyncWorkerMessageType.uploadCrud);
_logger.info('uploadCrud: Client done');
} catch (e, s) {
_logger.warning('uploadCrud: failed on client side', e, s);
rethrow;
}
}

Future<void> close() async {
Expand Down

0 comments on commit ce8e290

Please sign in to comment.