feat: new mobile asset sync

This commit is contained in:
Alex 2025-03-07 15:50:25 -06:00
parent 36ca115f52
commit 6cba86f339
No known key found for this signature in database
GPG Key ID: 53CD082B3A5E1082

View File

@ -23,24 +23,26 @@ class SyncStreamService {
} }
_isUserSyncing = true; _isUserSyncing = true;
final Map<String, String> acks = {};
_userSyncSubscription = _syncApiRepository.watchUserSyncEvent().listen( _userSyncSubscription = _syncApiRepository.watchUserSyncEvent().listen(
(events) async { (events) async {
for (final event in events) { for (final event in events) {
if (event.data is SyncUserV1) { if (event.data is SyncUserV1) {
final data = event.data as SyncUserV1; // final data = event.data as SyncUserV1;
debugPrint("User Update: $data");
// await _syncApiRepository.ack(event.ack); acks['SyncUserV1'] = event.ack;
} }
if (event.data is SyncUserDeleteV1) { if (event.data is SyncUserDeleteV1) {
final data = event.data as SyncUserDeleteV1; // final data = event.data as SyncUserDeleteV1;
debugPrint("User delete: $data"); acks['SyncUserDeleteV1'] = event.ack;
// await _syncApiRepository.ack(event.ack);
} }
} }
await _syncApiRepository.ack(events.last.ack);
for (final ack in acks.values) {
await _syncApiRepository.ack(ack);
}
}, },
onDone: () { onDone: () {
_isUserSyncing = false; _isUserSyncing = false;
@ -58,6 +60,7 @@ class SyncStreamService {
} }
_isAssetSyncing = true; _isAssetSyncing = true;
int eventCount = 0; int eventCount = 0;
final Map<String, String> acks = {};
_assetSyncSubscription = _syncApiRepository.watchAssetSyncEvent().listen( _assetSyncSubscription = _syncApiRepository.watchAssetSyncEvent().listen(
(events) async { (events) async {
@ -66,17 +69,18 @@ class SyncStreamService {
for (final event in events) { for (final event in events) {
if (event.data is SyncAssetV1) { if (event.data is SyncAssetV1) {
// final data = event.data as SyncAssetV1; // final data = event.data as SyncAssetV1;
// await _syncApiRepository.ack(event.ack); acks['SyncAssetV1'] = event.ack;
} }
if (event.data is SyncAssetDeleteV1) { if (event.data is SyncAssetDeleteV1) {
// final data = event.data as SyncAssetDeleteV1; // final data = event.data as SyncAssetDeleteV1;
acks['SyncAssetDeleteV1'] = event.ack;
// debugPrint("Asset delete: $data");
// await _syncApiRepository.ack(event.ack);
} }
} }
await _syncApiRepository.ack(events.last.ack);
for (final ack in acks.values) {
await _syncApiRepository.ack(ack);
}
}, },
onDone: () { onDone: () {
_isAssetSyncing = false; _isAssetSyncing = false;
@ -95,6 +99,7 @@ class SyncStreamService {
_isExifSyncing = true; _isExifSyncing = true;
int eventCount = 0; int eventCount = 0;
final Map<String, String> acks = {};
_exifSyncSubscription = _syncApiRepository.watchExifSyncEvent().listen( _exifSyncSubscription = _syncApiRepository.watchExifSyncEvent().listen(
(events) async { (events) async {
@ -104,10 +109,13 @@ class SyncStreamService {
if (event.data is SyncAssetExifV1) { if (event.data is SyncAssetExifV1) {
// final data = event.data as 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: () { onDone: () {
_isExifSyncing = false; _isExifSyncing = false;