diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml
index d77f789bb..b3f620bdc 100644
--- a/.github/workflows/dependency-review.yml
+++ b/.github/workflows/dependency-review.yml
@@ -24,4 +24,4 @@ jobs:
- name: 'Checkout Repository'
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: 'Dependency Review'
- uses: actions/dependency-review-action@38ecb5b593bf0eb19e335c03f97670f792489a8b # v4.7.0
+ uses: actions/dependency-review-action@da24556b548a50705dd671f47852072ea4c105d9 # v4.7.1
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 292526685..98fb110e9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
## [Unreleased]
+## [v1.13.1] - 2025-05-14
+
+### Fixed
+
+- albums: show groups to move/copy/export items
+- albums: hide grouped albums containing hidden items only
+
## [v1.13.0] - 2025-05-12
### Added
diff --git a/fastlane/metadata/android/en-US/changelogs/152.txt b/fastlane/metadata/android/en-US/changelogs/152.txt
new file mode 100644
index 000000000..1400f36e5
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/152.txt
@@ -0,0 +1,4 @@
+In v1.13.1:
+- group albums
+- filter by day of the week
+Full changelog available on GitHub
\ No newline at end of file
diff --git a/fastlane/metadata/android/en-US/changelogs/15201.txt b/fastlane/metadata/android/en-US/changelogs/15201.txt
new file mode 100644
index 000000000..1400f36e5
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/15201.txt
@@ -0,0 +1,4 @@
+In v1.13.1:
+- group albums
+- filter by day of the week
+Full changelog available on GitHub
\ No newline at end of file
diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb
index 11f66734d..7e788fe8d 100644
--- a/lib/l10n/app_es.arb
+++ b/lib/l10n/app_es.arb
@@ -445,7 +445,7 @@
"@menuActionStats": {},
"viewDialogSortSectionTitle": "Ordenar",
"@viewDialogSortSectionTitle": {},
- "viewDialogGroupSectionTitle": "Grupo",
+ "viewDialogGroupSectionTitle": "Secciones",
"@viewDialogGroupSectionTitle": {},
"viewDialogLayoutSectionTitle": "Disposición",
"@viewDialogLayoutSectionTitle": {},
@@ -1402,5 +1402,33 @@
"editEntryLocationDialogTimeShift": "Desplazamiento de tiempo",
"@editEntryLocationDialogTimeShift": {},
"coordinateFormatDdm": "DDM",
- "@coordinateFormatDdm": {}
+ "@coordinateFormatDdm": {},
+ "sortByPath": "Por ruta",
+ "@sortByPath": {},
+ "searchFormatSectionTitle": "Formatos",
+ "@searchFormatSectionTitle": {},
+ "newGroupDialogTitle": "Nuevo grupo",
+ "@newGroupDialogTitle": {},
+ "ungrouped": "No agrupado",
+ "@ungrouped": {},
+ "albumTierGroups": "Grupos",
+ "@albumTierGroups": {},
+ "groupEmpty": "Sin grupos",
+ "@groupEmpty": {},
+ "newGroupDialogNameLabel": "Nombre del grupo",
+ "@newGroupDialogNameLabel": {},
+ "createButtonLabel": "CREAR",
+ "@createButtonLabel": {},
+ "chipActionGroup": "Agrupar",
+ "@chipActionGroup": {},
+ "chipActionCreateGroup": "Crear grupo",
+ "@chipActionCreateGroup": {},
+ "groupAlreadyExists": "Ya existe el grupo",
+ "@groupAlreadyExists": {},
+ "groupPickerTitle": "Seleccionar grupo",
+ "@groupPickerTitle": {},
+ "groupPickerUseThisGroupButton": "Usar este grupo",
+ "@groupPickerUseThisGroupButton": {},
+ "sectionNone": "Sin secciones",
+ "@sectionNone": {}
}
diff --git a/lib/l10n/app_gl.arb b/lib/l10n/app_gl.arb
index e0e0b0c42..452f0d7c3 100644
--- a/lib/l10n/app_gl.arb
+++ b/lib/l10n/app_gl.arb
@@ -823,7 +823,7 @@
"@menuActionSlideshow": {},
"menuActionStats": "Estatísticas",
"@menuActionStats": {},
- "viewDialogGroupSectionTitle": "Agrupar",
+ "viewDialogGroupSectionTitle": "Seccións",
"@viewDialogGroupSectionTitle": {},
"castDialogTitle": "Dispositivos de emisión",
"@castDialogTitle": {},
@@ -1610,5 +1610,33 @@
"panoramaDisableSensorControl": "Desactivar control do sensor",
"@panoramaDisableSensorControl": {},
"settingsHiddenFiltersBanner": "As fotos e vídeos que cadren cos filtros ocultos non se amosarán na súa colección.",
- "@settingsHiddenFiltersBanner": {}
+ "@settingsHiddenFiltersBanner": {},
+ "createButtonLabel": "CREAR",
+ "@createButtonLabel": {},
+ "chipActionGroup": "Agrupar",
+ "@chipActionGroup": {},
+ "chipActionCreateGroup": "Crear grupo",
+ "@chipActionCreateGroup": {},
+ "albumTierGroups": "Grupos",
+ "@albumTierGroups": {},
+ "newGroupDialogTitle": "Novo grupo",
+ "@newGroupDialogTitle": {},
+ "newGroupDialogNameLabel": "Nome do grupo",
+ "@newGroupDialogNameLabel": {},
+ "groupAlreadyExists": "Xa existe o grupo",
+ "@groupAlreadyExists": {},
+ "groupEmpty": "Sen grupos",
+ "@groupEmpty": {},
+ "ungrouped": "Non agrupado",
+ "@ungrouped": {},
+ "groupPickerTitle": "Escolmar grupo",
+ "@groupPickerTitle": {},
+ "groupPickerUseThisGroupButton": "Usar este grupo",
+ "@groupPickerUseThisGroupButton": {},
+ "sectionNone": "Sen seccións",
+ "@sectionNone": {},
+ "sortByPath": "Por ruta",
+ "@sortByPath": {},
+ "searchFormatSectionTitle": "Formatos",
+ "@searchFormatSectionTitle": {}
}
diff --git a/lib/l10n/app_he.arb b/lib/l10n/app_he.arb
index bf8fa21c6..0cdef30e9 100644
--- a/lib/l10n/app_he.arb
+++ b/lib/l10n/app_he.arb
@@ -144,5 +144,19 @@
"stopTooltip": "עצור",
"@stopTooltip": {},
"chipActionGoToExplorerPage": "הצג בסייר",
- "@chipActionGoToExplorerPage": {}
+ "@chipActionGoToExplorerPage": {},
+ "chipActionSetCover": "הגדר עטיפה",
+ "@chipActionSetCover": {},
+ "chipActionCreateAlbum": "צור אלבום",
+ "@chipActionCreateAlbum": {},
+ "chipActionShowCountryStates": "הצג סטטיסטיקות",
+ "@chipActionShowCountryStates": {},
+ "createButtonLabel": "צור",
+ "@createButtonLabel": {},
+ "chipActionGroup": "קבוצה",
+ "@chipActionGroup": {},
+ "chipActionCreateGroup": "צור קבוצה",
+ "@chipActionCreateGroup": {},
+ "chipActionCreateVault": "צור כספת",
+ "@chipActionCreateVault": {}
}
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..01ceee68c 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,29 +110,31 @@ class AlbumListPage extends StatelessWidget {
}
final listedStoredAlbums = {};
- if (albumTypes.contains(AlbumChipType.stored)) {
+ if (albumChipTypes.contains(AlbumChipType.stored)) {
+ final allAlbums = source.rawAlbums;
if (groupUri == null) {
final withinGroups = whereTypeRecursively(groupContent).map((v) => v.album).toSet();
- listedStoredAlbums.addAll(source.rawAlbums.whereNot(withinGroups.contains));
+ listedStoredAlbums.addAll(allAlbums.whereNot(withinGroups.contains));
} else {
- listedStoredAlbums.addAll(groupContent.whereType().map((v) => v.album));
+ // check that group content is listed from source, to prevent displaying hidden content
+ listedStoredAlbums.addAll(groupContent.whereType().map((v) => v.album).where(allAlbums.contains));
}
}
final listedDynamicAlbums = {};
- if (albumTypes.contains(AlbumChipType.dynamic)) {
+ if (albumChipTypes.contains(AlbumChipType.dynamic)) {
+ final allDynamicAlbums = dynamicAlbums.all;
if (groupUri == null) {
final withinGroups = whereTypeRecursively(groupContent).toSet();
- listedDynamicAlbums.addAll(dynamicAlbums.all.whereNot(withinGroups.contains));
+ listedDynamicAlbums.addAll(allDynamicAlbums.whereNot(withinGroups.contains));
} else {
- listedDynamicAlbums.addAll(groupContent.whereType());
+ // check that group content is listed from source, to prevent displaying hidden content
+ listedDynamicAlbums.addAll(groupContent.whereType().where(allDynamicAlbums.contains));
}
}
- 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/filter_grids/common/filter_grid_page.dart b/lib/widgets/filter_grids/common/filter_grid_page.dart
index 6c49e590d..fc4b2f170 100644
--- a/lib/widgets/filter_grids/common/filter_grid_page.dart
+++ b/lib/widgets/filter_grids/common/filter_grid_page.dart
@@ -473,7 +473,7 @@ class _FilterSectionedContentState extends State<_Fi
final GlobalKey scrollableKey = GlobalKey(debugLabel: 'filter-grid-page-scrollable');
- FilterGrouping? _grouping;
+ FilterGroupNotifier? _groupNotifier;
@override
void initState() {
@@ -486,7 +486,7 @@ class _FilterSectionedContentState extends State<_Fi
void didChangeDependencies() {
super.didChangeDependencies();
_unregisterDependencies();
- _grouping = context.read();
+ _groupNotifier = context.read();
_registerDependencies();
}
@@ -505,11 +505,11 @@ class _FilterSectionedContentState extends State<_Fi
}
void _registerDependencies() {
- _grouping?.addListener(_scrollToTop);
+ _groupNotifier?.addListener(_scrollToTop);
}
void _unregisterDependencies() {
- _grouping?.removeListener(_scrollToTop);
+ _groupNotifier?.removeListener(_scrollToTop);
}
void _registerWidget(_FilterSectionedContent widget) {
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;
diff --git a/pubspec.yaml b/pubspec.yaml
index 8ff7ca052..de9243f95 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -7,7 +7,7 @@ repository: https://github.com/deckerst/aves
# - play changelog: /whatsnew/whatsnew-en-US
# - izzy changelog: /fastlane/metadata/android/en-US/changelogs/XXX01.txt
# - libre changelog: /fastlane/metadata/android/en-US/changelogs/XXX.txt
-version: 1.13.0+151
+version: 1.13.1+152
publish_to: none
environment:
diff --git a/whatsnew/whatsnew-en-US b/whatsnew/whatsnew-en-US
index 7492062b9..1400f36e5 100644
--- a/whatsnew/whatsnew-en-US
+++ b/whatsnew/whatsnew-en-US
@@ -1,4 +1,4 @@
-In v1.13.0:
+In v1.13.1:
- group albums
- filter by day of the week
Full changelog available on GitHub
\ No newline at end of file