diff --git a/CHANGELOG.md b/CHANGELOG.md
index 292526685..df60d887d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
## [Unreleased]
+### Fixed
+
+- albums: show groups to move/copy/export items
+
## [v1.13.0] - 2025-05-12
### Added
diff --git a/lib/widgets/common/action_mixins/entry_storage.dart b/lib/widgets/common/action_mixins/entry_storage.dart
index ca2bc1614..b1d0ee7bf 100644
--- a/lib/widgets/common/action_mixins/entry_storage.dart
+++ b/lib/widgets/common/action_mixins/entry_storage.dart
@@ -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;
diff --git a/lib/widgets/dialogs/pick_dialogs/album_pick_page.dart b/lib/widgets/dialogs/pick_dialogs/album_pick_page.dart
index 3a930bf3e..caf50b4f0 100644
--- a/lib/widgets/dialogs/pick_dialogs/album_pick_page.dart
+++ b/lib/widgets/dialogs/pick_dialogs/album_pick_page.dart
@@ -40,7 +40,7 @@ import 'package:provider/provider.dart';
Future pickAlbum({
required BuildContext context,
required MoveType? moveType,
- required Iterable albumTypes,
+ required Iterable albumChipTypes,
required Uri? initialGroup,
}) async {
final source = context.read();
@@ -56,7 +56,7 @@ Future pickAlbum({
builder: (context) => _AlbumPickPage(
source: source,
moveType: moveType,
- albumChipTypes: albumTypes,
+ albumChipTypes: albumChipTypes,
initialGroup: initialGroup,
),
),
diff --git a/lib/widgets/filter_grids/albums_page.dart b/lib/widgets/filter_grids/albums_page.dart
index d85b297d7..0c2875080 100644
--- a/lib/widgets/filter_grids/albums_page.dart
+++ b/lib/widgets/filter_grids/albums_page.dart
@@ -97,7 +97,7 @@ class AlbumListPage extends StatelessWidget {
static List> getAlbumGridItems(
BuildContext context,
CollectionSource source,
- Iterable albumTypes,
+ Iterable albumChipTypes,
Uri? groupUri,
) {
final groupContent = albumGrouping.getDirectChildren(groupUri);
@@ -110,7 +110,7 @@ class AlbumListPage extends StatelessWidget {
}
final listedStoredAlbums = {};
- if (albumTypes.contains(AlbumChipType.stored)) {
+ if (albumChipTypes.contains(AlbumChipType.stored)) {
if (groupUri == null) {
final withinGroups = whereTypeRecursively(groupContent).map((v) => v.album).toSet();
listedStoredAlbums.addAll(source.rawAlbums.whereNot(withinGroups.contains));
@@ -120,7 +120,7 @@ class AlbumListPage extends StatelessWidget {
}
final listedDynamicAlbums = {};
- if (albumTypes.contains(AlbumChipType.dynamic)) {
+ if (albumChipTypes.contains(AlbumChipType.dynamic)) {
if (groupUri == null) {
final withinGroups = whereTypeRecursively(groupContent).toSet();
listedDynamicAlbums.addAll(dynamicAlbums.all.whereNot(withinGroups.contains));
@@ -129,10 +129,8 @@ class AlbumListPage extends StatelessWidget {
}
}
- final albumGroupFilters = {};
- if (albumTypes.contains(AlbumChipType.group)) {
- albumGroupFilters.addAll(groupContent.whereType());
- }
+ // always show groups, which are needed to navigate to other types
+ final albumGroupFilters = groupContent.whereType().toSet();
final filters = {
...albumGroupFilters,
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 1654d7fd8..f02c3e1b8 100644
--- a/lib/widgets/filter_grids/common/action_delegates/album_set.dart
+++ b/lib/widgets/filter_grids/common/action_delegates/album_set.dart
@@ -458,7 +458,7 @@ class AlbumChipSetActionDelegate extends ChipSetActionDelegate
final filter = await pickAlbum(
context: context,
moveType: null,
- albumTypes: {AlbumChipType.group},
+ albumChipTypes: {AlbumChipType.group},
initialGroup: initialGroup,
);
if (filter == null) return;
diff --git a/lib/widgets/settings/navigation/drawer_tab_albums.dart b/lib/widgets/settings/navigation/drawer_tab_albums.dart
index 84b2051ab..5ab310b2b 100644
--- a/lib/widgets/settings/navigation/drawer_tab_albums.dart
+++ b/lib/widgets/settings/navigation/drawer_tab_albums.dart
@@ -68,7 +68,7 @@ class _DrawerAlbumTabState extends State {
final albumFilter = await pickAlbum(
context: context,
moveType: null,
- albumTypes: AlbumChipType.values,
+ albumChipTypes: AlbumChipType.values,
initialGroup: null,
);
if (albumFilter == null || items.contains(albumFilter)) return;