From d0c3d5e742888d11d14b899a27bd9f7e5805e1f2 Mon Sep 17 00:00:00 2001 From: franzap <_@franzap.com> Date: Wed, 8 Apr 2026 16:15:30 -0300 Subject: [PATCH] Performance improvements on deletion check --- lib/services/deletion_processor.dart | 6 ++++++ lib/services/updates_service.dart | 26 ++++++++++++++------------ 2 files changed, 20 insertions(+), 12 deletions(-) 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); }