From 77936e242193e208dce510e4139eec6e28f1cdde Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 23 Jan 2026 12:10:29 -0600 Subject: [PATCH] clear up stale album id --- mobile/lib/providers/cleanup.provider.dart | 10 ++++++++++ .../lib/widgets/settings/free_up_space_settings.dart | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/mobile/lib/providers/cleanup.provider.dart b/mobile/lib/providers/cleanup.provider.dart index 2b8046f473..f03198f46c 100644 --- a/mobile/lib/providers/cleanup.provider.dart +++ b/mobile/lib/providers/cleanup.provider.dart @@ -123,6 +123,16 @@ class CleanupNotifier extends StateNotifier { _appSettingsService.setSetting(AppSettingsEnum.cleanupKeepAlbumIds, albumIds.join(',')); } + /// Remove album IDs that no longer exist on the device + void cleanupStaleAlbumIds(Set existingAlbumIds) { + final staleIds = state.keepAlbumIds.difference(existingAlbumIds); + if (staleIds.isNotEmpty) { + final cleanedIds = state.keepAlbumIds.intersection(existingAlbumIds); + state = state.copyWith(keepAlbumIds: cleanedIds); + _persistExcludedAlbumIds(cleanedIds); + } + } + Future scanAssets() async { if (_userId == null || state.selectedDate == null) { return; diff --git a/mobile/lib/widgets/settings/free_up_space_settings.dart b/mobile/lib/widgets/settings/free_up_space_settings.dart index 3424bacac5..479a777812 100644 --- a/mobile/lib/widgets/settings/free_up_space_settings.dart +++ b/mobile/lib/widgets/settings/free_up_space_settings.dart @@ -779,6 +779,15 @@ class _KeepAlbumsSection extends ConsumerWidget { Widget build(BuildContext context, WidgetRef ref) { final albumsAsync = ref.watch(localAlbumProvider); + // Clean up stale album IDs when albums are loaded + albumsAsync.whenData((albums) { + final existingAlbumIds = albums.map((a) => a.id).toSet(); + // Use Future.microtask to avoid modifying state during build + Future.microtask(() { + ref.read(cleanupProvider.notifier).cleanupStaleAlbumIds(existingAlbumIds); + }); + }); + return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [