update custom navigation menu on album renaming/removal
This commit is contained in:
parent
8370816055
commit
3aea36f3a7
3 changed files with 13 additions and 4 deletions
|
@ -120,8 +120,13 @@ mixin AlbumMixin on SourceBase {
|
|||
_notifyAlbumChange();
|
||||
invalidateAlbumFilterSummary(directories: emptyAlbums);
|
||||
|
||||
final bookmarks = settings.drawerAlbumBookmarks;
|
||||
final pinnedFilters = settings.pinnedFilters;
|
||||
emptyAlbums.forEach((album) => pinnedFilters.removeWhere((filter) => filter is AlbumFilter && filter.album == album));
|
||||
emptyAlbums.forEach((album) {
|
||||
bookmarks?.remove(album);
|
||||
pinnedFilters.removeWhere((filter) => filter is AlbumFilter && filter.album == album);
|
||||
});
|
||||
settings.drawerAlbumBookmarks = bookmarks;
|
||||
settings.pinnedFilters = pinnedFilters;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -159,6 +159,7 @@ abstract class CollectionSource with SourceBase, AlbumMixin, LocationMixin, TagM
|
|||
|
||||
Future<void> renameAlbum(String sourceAlbum, String destinationAlbum, Set<AvesEntry> todoEntries, Set<MoveOpEvent> movedOps) async {
|
||||
final oldFilter = AlbumFilter(sourceAlbum, null);
|
||||
final bookmarked = settings.drawerAlbumBookmarks?.contains(sourceAlbum) == true;
|
||||
final pinned = settings.pinnedFilters.contains(oldFilter);
|
||||
final oldCoverContentId = covers.coverContentId(oldFilter);
|
||||
final coverEntry = oldCoverContentId != null ? todoEntries.firstWhereOrNull((entry) => entry.contentId == oldCoverContentId) : null;
|
||||
|
@ -169,8 +170,11 @@ abstract class CollectionSource with SourceBase, AlbumMixin, LocationMixin, TagM
|
|||
destinationAlbum: destinationAlbum,
|
||||
movedOps: movedOps,
|
||||
);
|
||||
// restore pin and cover, as the obsolete album got removed and its associated state cleaned
|
||||
// restore bookmark, pin and cover, as the obsolete album got removed and its associated state cleaned
|
||||
final newFilter = AlbumFilter(destinationAlbum, null);
|
||||
if (bookmarked) {
|
||||
settings.drawerAlbumBookmarks = settings.drawerAlbumBookmarks?..add(destinationAlbum);
|
||||
}
|
||||
if (pinned) {
|
||||
settings.pinnedFilters = settings.pinnedFilters..add(newFilter);
|
||||
}
|
||||
|
|
|
@ -211,12 +211,12 @@ class AlbumChipSetActionDelegate extends ChipSetActionDelegate<AlbumFilter> {
|
|||
);
|
||||
if (newName == null || newName.isEmpty) return;
|
||||
|
||||
if (!await checkStoragePermissionForAlbums(context, {album})) return;
|
||||
|
||||
final destinationAlbumParent = pContext.dirname(album);
|
||||
final destinationAlbum = pContext.join(destinationAlbumParent, newName);
|
||||
if (!await checkFreeSpaceForMove(context, todoEntries, destinationAlbum, MoveType.move)) return;
|
||||
|
||||
if (!await checkStoragePermissionForAlbums(context, {album})) return;
|
||||
|
||||
if (!(await File(destinationAlbum).exists())) {
|
||||
// access to the destination parent is required to create the underlying destination folder
|
||||
if (!await checkStoragePermissionForAlbums(context, {destinationAlbumParent})) return;
|
||||
|
|
Loading…
Reference in a new issue