From 6cba86f339a69da152481b77f4d634d3f74499a5 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Mar 2025 15:50:25 -0600 Subject: [PATCH] feat: new mobile asset sync --- .../domain/services/sync_stream.service.dart | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/mobile/lib/domain/services/sync_stream.service.dart b/mobile/lib/domain/services/sync_stream.service.dart index 270de28287..9a7da7921f 100644 --- a/mobile/lib/domain/services/sync_stream.service.dart +++ b/mobile/lib/domain/services/sync_stream.service.dart @@ -23,24 +23,26 @@ class SyncStreamService { } _isUserSyncing = true; + final Map acks = {}; _userSyncSubscription = _syncApiRepository.watchUserSyncEvent().listen( (events) async { for (final event in events) { if (event.data is SyncUserV1) { - final data = event.data as SyncUserV1; - debugPrint("User Update: $data"); + // final data = event.data as SyncUserV1; - // await _syncApiRepository.ack(event.ack); + acks['SyncUserV1'] = event.ack; } if (event.data is SyncUserDeleteV1) { - final data = event.data as SyncUserDeleteV1; + // final data = event.data as SyncUserDeleteV1; - debugPrint("User delete: $data"); - // await _syncApiRepository.ack(event.ack); + acks['SyncUserDeleteV1'] = event.ack; } } - await _syncApiRepository.ack(events.last.ack); + + for (final ack in acks.values) { + await _syncApiRepository.ack(ack); + } }, onDone: () { _isUserSyncing = false; @@ -58,6 +60,7 @@ class SyncStreamService { } _isAssetSyncing = true; int eventCount = 0; + final Map acks = {}; _assetSyncSubscription = _syncApiRepository.watchAssetSyncEvent().listen( (events) async { @@ -66,17 +69,18 @@ class SyncStreamService { for (final event in events) { if (event.data is SyncAssetV1) { // final data = event.data as SyncAssetV1; - // await _syncApiRepository.ack(event.ack); + acks['SyncAssetV1'] = event.ack; } if (event.data is SyncAssetDeleteV1) { // final data = event.data as SyncAssetDeleteV1; - - // debugPrint("Asset delete: $data"); - // await _syncApiRepository.ack(event.ack); + acks['SyncAssetDeleteV1'] = event.ack; } } - await _syncApiRepository.ack(events.last.ack); + + for (final ack in acks.values) { + await _syncApiRepository.ack(ack); + } }, onDone: () { _isAssetSyncing = false; @@ -95,6 +99,7 @@ class SyncStreamService { _isExifSyncing = true; int eventCount = 0; + final Map acks = {}; _exifSyncSubscription = _syncApiRepository.watchExifSyncEvent().listen( (events) async { @@ -104,10 +109,13 @@ class SyncStreamService { if (event.data is SyncAssetExifV1) { // final data = event.data as SyncAssetExifV1; - // await _syncApiRepository.ack(event.ack); + acks['SyncAssetExifV1'] = event.ack; } } - await _syncApiRepository.ack(events.last.ack); + + for (final ack in acks.values) { + await _syncApiRepository.ack(ack); + } }, onDone: () { _isExifSyncing = false;