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();
|
_notifyAlbumChange();
|
||||||
invalidateAlbumFilterSummary(directories: emptyAlbums);
|
invalidateAlbumFilterSummary(directories: emptyAlbums);
|
||||||
|
|
||||||
|
final bookmarks = settings.drawerAlbumBookmarks;
|
||||||
final pinnedFilters = settings.pinnedFilters;
|
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;
|
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 {
|
Future<void> renameAlbum(String sourceAlbum, String destinationAlbum, Set<AvesEntry> todoEntries, Set<MoveOpEvent> movedOps) async {
|
||||||
final oldFilter = AlbumFilter(sourceAlbum, null);
|
final oldFilter = AlbumFilter(sourceAlbum, null);
|
||||||
|
final bookmarked = settings.drawerAlbumBookmarks?.contains(sourceAlbum) == true;
|
||||||
final pinned = settings.pinnedFilters.contains(oldFilter);
|
final pinned = settings.pinnedFilters.contains(oldFilter);
|
||||||
final oldCoverContentId = covers.coverContentId(oldFilter);
|
final oldCoverContentId = covers.coverContentId(oldFilter);
|
||||||
final coverEntry = oldCoverContentId != null ? todoEntries.firstWhereOrNull((entry) => entry.contentId == oldCoverContentId) : null;
|
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,
|
destinationAlbum: destinationAlbum,
|
||||||
movedOps: movedOps,
|
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);
|
final newFilter = AlbumFilter(destinationAlbum, null);
|
||||||
|
if (bookmarked) {
|
||||||
|
settings.drawerAlbumBookmarks = settings.drawerAlbumBookmarks?..add(destinationAlbum);
|
||||||
|
}
|
||||||
if (pinned) {
|
if (pinned) {
|
||||||
settings.pinnedFilters = settings.pinnedFilters..add(newFilter);
|
settings.pinnedFilters = settings.pinnedFilters..add(newFilter);
|
||||||
}
|
}
|
||||||
|
|
|
@ -211,12 +211,12 @@ class AlbumChipSetActionDelegate extends ChipSetActionDelegate<AlbumFilter> {
|
||||||
);
|
);
|
||||||
if (newName == null || newName.isEmpty) return;
|
if (newName == null || newName.isEmpty) return;
|
||||||
|
|
||||||
if (!await checkStoragePermissionForAlbums(context, {album})) return;
|
|
||||||
|
|
||||||
final destinationAlbumParent = pContext.dirname(album);
|
final destinationAlbumParent = pContext.dirname(album);
|
||||||
final destinationAlbum = pContext.join(destinationAlbumParent, newName);
|
final destinationAlbum = pContext.join(destinationAlbumParent, newName);
|
||||||
if (!await checkFreeSpaceForMove(context, todoEntries, destinationAlbum, MoveType.move)) return;
|
if (!await checkFreeSpaceForMove(context, todoEntries, destinationAlbum, MoveType.move)) return;
|
||||||
|
|
||||||
|
if (!await checkStoragePermissionForAlbums(context, {album})) return;
|
||||||
|
|
||||||
if (!(await File(destinationAlbum).exists())) {
|
if (!(await File(destinationAlbum).exists())) {
|
||||||
// access to the destination parent is required to create the underlying destination folder
|
// access to the destination parent is required to create the underlying destination folder
|
||||||
if (!await checkStoragePermissionForAlbums(context, {destinationAlbumParent})) return;
|
if (!await checkStoragePermissionForAlbums(context, {destinationAlbumParent})) return;
|
||||||
|
|
Loading…
Reference in a new issue