diff --git a/lib/services/deletion_processor.dart b/lib/services/deletion_processor.dart index 58c08da..eaa444f 100644 --- a/lib/services/deletion_processor.dart +++ b/lib/services/deletion_processor.dart @@ -20,6 +20,12 @@ Future processDeletions({ }) async { final lastSync = await secureStorage.getDeletionsSyncedUntil(); + // First run: no local data to delete, just seed the cursor. + if (lastSync == null) { + await secureStorage.setDeletionsSyncedUntil(DateTime.now()); + return; + } + final deletionRequests = await storage.query( RequestFilter( since: lastSync, diff --git a/lib/services/updates_service.dart b/lib/services/updates_service.dart index a14e804..f87e1a2 100644 --- a/lib/services/updates_service.dart +++ b/lib/services/updates_service.dart @@ -149,19 +149,21 @@ class UpdatePollerNotifier extends StateNotifier { final storage = ref.read(storageNotifierProvider.notifier) as PurplebaseStorageNotifier; - final result = await fetchCatalog( - storage: storage, - installedIds: pmState.installed.keys.toSet(), - platform: ref.read(packageManagerProvider.notifier).platform, - subscriptionPrefix: 'app-updates-poll', - ); - - await processDeletions( - storage: storage, - secureStorage: ref.read(secureStorageServiceProvider), - subscriptionPrefix: 'app-deletions-poll', - ); + final results = await Future.wait([ + fetchCatalog( + storage: storage, + installedIds: pmState.installed.keys.toSet(), + platform: ref.read(packageManagerProvider.notifier).platform, + subscriptionPrefix: 'app-updates-poll', + ), + processDeletions( + storage: storage, + secureStorage: ref.read(secureStorageServiceProvider), + subscriptionPrefix: 'app-deletions-poll', + ), + ]); + final result = results[0] as CatalogResult; state = state.copyWith(catalogedIds: result.catalogedIds); }