albums: show groups to move/copy/export items

This commit is contained in:
Thibault Deckers 2025-05-14 21:52:21 +02:00
parent 39d7587ac9
commit 09df269ee0
6 changed files with 15 additions and 13 deletions

View file

@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
## <a id="unreleased"></a>[Unreleased]
### Fixed
- albums: show groups to move/copy/export items
## <a id="v1.13.0"></a>[v1.13.0] - 2025-05-12
### Added

View file

@ -46,7 +46,7 @@ mixin EntryStorageMixin on FeedbackMixin, PermissionAwareMixin, SizeAwareMixin {
final destinationAlbumFilter = await pickAlbum(
context: context,
moveType: MoveType.export,
albumTypes: {AlbumChipType.stored},
albumChipTypes: {AlbumChipType.stored},
initialGroup: null,
);
if (destinationAlbumFilter == null || destinationAlbumFilter is! StoredAlbumFilter) return false;
@ -379,7 +379,7 @@ mixin EntryStorageMixin on FeedbackMixin, PermissionAwareMixin, SizeAwareMixin {
final destinationAlbumFilter = await pickAlbum(
context: context,
moveType: moveType,
albumTypes: {AlbumChipType.stored},
albumChipTypes: {AlbumChipType.stored},
initialGroup: null,
);
if (destinationAlbumFilter == null || destinationAlbumFilter is! StoredAlbumFilter) return false;

View file

@ -40,7 +40,7 @@ import 'package:provider/provider.dart';
Future<AlbumBaseFilter?> pickAlbum({
required BuildContext context,
required MoveType? moveType,
required Iterable<AlbumChipType> albumTypes,
required Iterable<AlbumChipType> albumChipTypes,
required Uri? initialGroup,
}) async {
final source = context.read<CollectionSource>();
@ -56,7 +56,7 @@ Future<AlbumBaseFilter?> pickAlbum({
builder: (context) => _AlbumPickPage(
source: source,
moveType: moveType,
albumChipTypes: albumTypes,
albumChipTypes: albumChipTypes,
initialGroup: initialGroup,
),
),

View file

@ -97,7 +97,7 @@ class AlbumListPage extends StatelessWidget {
static List<FilterGridItem<AlbumBaseFilter>> getAlbumGridItems(
BuildContext context,
CollectionSource source,
Iterable<AlbumChipType> albumTypes,
Iterable<AlbumChipType> albumChipTypes,
Uri? groupUri,
) {
final groupContent = albumGrouping.getDirectChildren(groupUri);
@ -110,7 +110,7 @@ class AlbumListPage extends StatelessWidget {
}
final listedStoredAlbums = <String>{};
if (albumTypes.contains(AlbumChipType.stored)) {
if (albumChipTypes.contains(AlbumChipType.stored)) {
if (groupUri == null) {
final withinGroups = whereTypeRecursively<StoredAlbumFilter>(groupContent).map((v) => v.album).toSet();
listedStoredAlbums.addAll(source.rawAlbums.whereNot(withinGroups.contains));
@ -120,7 +120,7 @@ class AlbumListPage extends StatelessWidget {
}
final listedDynamicAlbums = <DynamicAlbumFilter>{};
if (albumTypes.contains(AlbumChipType.dynamic)) {
if (albumChipTypes.contains(AlbumChipType.dynamic)) {
if (groupUri == null) {
final withinGroups = whereTypeRecursively<DynamicAlbumFilter>(groupContent).toSet();
listedDynamicAlbums.addAll(dynamicAlbums.all.whereNot(withinGroups.contains));
@ -129,10 +129,8 @@ class AlbumListPage extends StatelessWidget {
}
}
final albumGroupFilters = <AlbumGroupFilter>{};
if (albumTypes.contains(AlbumChipType.group)) {
albumGroupFilters.addAll(groupContent.whereType<AlbumGroupFilter>());
}
// always show groups, which are needed to navigate to other types
final albumGroupFilters = groupContent.whereType<AlbumGroupFilter>().toSet();
final filters = <AlbumBaseFilter>{
...albumGroupFilters,

View file

@ -458,7 +458,7 @@ class AlbumChipSetActionDelegate extends ChipSetActionDelegate<AlbumBaseFilter>
final filter = await pickAlbum(
context: context,
moveType: null,
albumTypes: {AlbumChipType.group},
albumChipTypes: {AlbumChipType.group},
initialGroup: initialGroup,
);
if (filter == null) return;

View file

@ -68,7 +68,7 @@ class _DrawerAlbumTabState extends State<DrawerAlbumTab> {
final albumFilter = await pickAlbum(
context: context,
moveType: null,
albumTypes: AlbumChipType.values,
albumChipTypes: AlbumChipType.values,
initialGroup: null,
);
if (albumFilter == null || items.contains(albumFilter)) return;