diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c35f01c6..fe67ce4d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file. ### Changed +- keep showing empty albums if are pinned - remember whether to show the title filter when picking albums - upgraded Flutter to stable v3.10.0 diff --git a/lib/model/source/album.dart b/lib/model/source/album.dart index 809086b97..1a2c09bd4 100644 --- a/lib/model/source/album.dart +++ b/lib/model/source/album.dart @@ -90,7 +90,11 @@ mixin AlbumMixin on SourceBase { } bool _isRemovable(String album) { - return !(visibleEntries.any((entry) => entry.directory == album) || _newAlbums.contains(album) || vaults.isVault(album)); + if (visibleEntries.any((entry) => entry.directory == album)) return false; + if (_newAlbums.contains(album)) return false; + if (vaults.isVault(album)) return false; + if (settings.pinnedFilters.whereType().map((v) => v.album).contains(album)) return false; + return true; } // filter summary diff --git a/lib/model/source/collection_source.dart b/lib/model/source/collection_source.dart index 5464e6774..e12ee7da3 100644 --- a/lib/model/source/collection_source.dart +++ b/lib/model/source/collection_source.dart @@ -292,7 +292,9 @@ abstract class CollectionSource with SourceBase, AlbumMixin, CountryMixin, Place settings.drawerAlbumBookmarks = settings.drawerAlbumBookmarks?..insert(bookmark, destinationAlbum); } if (pinned) { - settings.pinnedFilters = settings.pinnedFilters..add(newFilter); + settings.pinnedFilters = settings.pinnedFilters + ..remove(oldFilter) + ..add(newFilter); } } diff --git a/lib/model/source/media_store_source.dart b/lib/model/source/media_store_source.dart index 5ca9a2466..2c8cd142a 100644 --- a/lib/model/source/media_store_source.dart +++ b/lib/model/source/media_store_source.dart @@ -5,6 +5,7 @@ import 'package:aves/model/covers.dart'; import 'package:aves/model/entry/entry.dart'; import 'package:aves/model/entry/origins.dart'; import 'package:aves/model/favourites.dart'; +import 'package:aves/model/filters/album.dart'; import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/source/analysis_controller.dart'; import 'package:aves/model/source/collection_source.dart'; @@ -34,6 +35,7 @@ class MediaStoreSource extends CollectionSource { if (_initState != SourceInitializationState.full) { _initState = directory != null ? SourceInitializationState.directory : SourceInitializationState.full; } + addDirectories(albums: settings.pinnedFilters.whereType().map((v) => v.album).toSet()); unawaited(_loadEntries( analysisController: analysisController, directory: directory, diff --git a/lib/widgets/filter_grids/common/action_delegates/album_set.dart b/lib/widgets/filter_grids/common/action_delegates/album_set.dart index 28894923c..9a46e474d 100644 --- a/lib/widgets/filter_grids/common/action_delegates/album_set.dart +++ b/lib/widgets/filter_grids/common/action_delegates/album_set.dart @@ -320,6 +320,7 @@ class AlbumChipSetActionDelegate extends ChipSetActionDelegate with ); if (confirmed == null || !confirmed) return; + settings.pinnedFilters = settings.pinnedFilters..removeAll(filters); source.forgetNewAlbums(todoAlbums); source.cleanEmptyAlbums(emptyAlbums);