#639 keep showing empty albums if are pinned

This commit is contained in:
Thibault Deckers 2023-05-14 16:58:08 +02:00
parent 94647a928b
commit c56ab99315
5 changed files with 12 additions and 2 deletions

View file

@ -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

View file

@ -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<AlbumFilter>().map((v) => v.album).contains(album)) return false;
return true;
}
// filter summary

View file

@ -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);
}
}

View file

@ -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<AlbumFilter>().map((v) => v.album).toSet());
unawaited(_loadEntries(
analysisController: analysisController,
directory: directory,

View file

@ -320,6 +320,7 @@ class AlbumChipSetActionDelegate extends ChipSetActionDelegate<AlbumFilter> with
);
if (confirmed == null || !confirmed) return;
settings.pinnedFilters = settings.pinnedFilters..removeAll(filters);
source.forgetNewAlbums(todoAlbums);
source.cleanEmptyAlbums(emptyAlbums);