From a7ca77d7745149355cad876fe4b0f93998f47fce Mon Sep 17 00:00:00 2001 From: Mugi Khan Date: Wed, 3 Jul 2024 13:52:59 +0200 Subject: [PATCH 1/5] Ensure future is not completed --- packages/powersync/lib/src/powersync_database.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/powersync/lib/src/powersync_database.dart b/packages/powersync/lib/src/powersync_database.dart index 7570ca71..ce81fdeb 100644 --- a/packages/powersync/lib/src/powersync_database.dart +++ b/packages/powersync/lib/src/powersync_database.dart @@ -199,7 +199,7 @@ class PowerSyncDatabase with SqliteQueries implements SqliteConnection { } final completer = Completer(); statusStream.listen((result) { - if (result.hasSynced ?? false) { + if ((result.hasSynced ?? false) && !completer.isCompleted) { completer.complete(); } }); From c150ad394ef648bd640b37750118f094cf6f5c5e Mon Sep 17 00:00:00 2001 From: Mugi Khan Date: Wed, 3 Jul 2024 13:54:06 +0200 Subject: [PATCH 2/5] Bump version --- packages/powersync/CHANGELOG.md | 4 ++++ packages/powersync/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/powersync/CHANGELOG.md b/packages/powersync/CHANGELOG.md index d35754be..d1adaa9a 100644 --- a/packages/powersync/CHANGELOG.md +++ b/packages/powersync/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.5.2 + +- Fix `Bad state: Future already completed` error when calling `waitForFirstSync()`. + ## 1.5.1 - Adds a hasSynced flag to check if initial data has been synced. diff --git a/packages/powersync/pubspec.yaml b/packages/powersync/pubspec.yaml index 48a72f4d..071915ca 100644 --- a/packages/powersync/pubspec.yaml +++ b/packages/powersync/pubspec.yaml @@ -1,5 +1,5 @@ name: powersync -version: 1.5.1 +version: 1.5.2 homepage: https://powersync.com repository: https://github.com/powersync-ja/powersync.dart description: PowerSync Flutter SDK - keep PostgreSQL databases in sync with on-device SQLite databases. From c42f58674d78203d2d2ce222b6f58c7771ca7230 Mon Sep 17 00:00:00 2001 From: Ralf Kistner Date: Wed, 3 Jul 2024 14:23:49 +0200 Subject: [PATCH 3/5] Add changelog entry for issue 114. --- packages/powersync/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/powersync/CHANGELOG.md b/packages/powersync/CHANGELOG.md index d1adaa9a..04b8e55d 100644 --- a/packages/powersync/CHANGELOG.md +++ b/packages/powersync/CHANGELOG.md @@ -1,6 +1,7 @@ ## 1.5.2 - Fix `Bad state: Future already completed` error when calling `waitForFirstSync()`. +- Fix sync connection not immediately closed when calling `db.disconnect()` (#114). ## 1.5.1 From 50d11e3d19424c36318905d55cb73b0b786b5085 Mon Sep 17 00:00:00 2001 From: Mugi Khan Date: Wed, 3 Jul 2024 14:33:25 +0200 Subject: [PATCH 4/5] Iterate through stream instead of listening to it --- packages/powersync/lib/src/powersync_database.dart | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/powersync/lib/src/powersync_database.dart b/packages/powersync/lib/src/powersync_database.dart index ce81fdeb..99e837ad 100644 --- a/packages/powersync/lib/src/powersync_database.dart +++ b/packages/powersync/lib/src/powersync_database.dart @@ -197,14 +197,11 @@ class PowerSyncDatabase with SqliteQueries implements SqliteConnection { if (currentStatus.hasSynced ?? false) { return; } - final completer = Completer(); - statusStream.listen((result) { - if ((result.hasSynced ?? false) && !completer.isCompleted) { - completer.complete(); + await for (final result in statusStream) { + if (result.hasSynced ?? false) { + break; } - }); - - return completer.future; + } } @override From d716fb5ddd3752768e839c42d10c1d2bc3eb34a5 Mon Sep 17 00:00:00 2001 From: Mugi Khan Date: Wed, 3 Jul 2024 14:36:24 +0200 Subject: [PATCH 5/5] Fix changelog message --- packages/powersync/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/powersync/CHANGELOG.md b/packages/powersync/CHANGELOG.md index 04b8e55d..fce52716 100644 --- a/packages/powersync/CHANGELOG.md +++ b/packages/powersync/CHANGELOG.md @@ -1,6 +1,6 @@ ## 1.5.2 -- Fix `Bad state: Future already completed` error when calling `waitForFirstSync()`. +- Refactor `waitForFirstSync()` to iterate through the stream and remove the use of a `Future`. - Fix sync connection not immediately closed when calling `db.disconnect()` (#114). ## 1.5.1