Merge branch 'develop'

This commit is contained in:
Thibault Deckers 2025-05-14 22:20:08 +02:00
commit 5726e7bcc0
15 changed files with 116 additions and 29 deletions

View file

@ -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

View file

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

View file

@ -0,0 +1,4 @@
In v1.13.1:
- group albums
- filter by day of the week
Full changelog available on GitHub

View file

@ -0,0 +1,4 @@
In v1.13.1:
- group albums
- filter by day of the week
Full changelog available on GitHub

View file

@ -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": {}
}

View file

@ -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": {}
}

View file

@ -144,5 +144,19 @@
"stopTooltip": "עצור",
"@stopTooltip": {},
"chipActionGoToExplorerPage": "הצג בסייר",
"@chipActionGoToExplorerPage": {}
"@chipActionGoToExplorerPage": {},
"chipActionSetCover": "הגדר עטיפה",
"@chipActionSetCover": {},
"chipActionCreateAlbum": "צור אלבום",
"@chipActionCreateAlbum": {},
"chipActionShowCountryStates": "הצג סטטיסטיקות",
"@chipActionShowCountryStates": {},
"createButtonLabel": "צור",
"@createButtonLabel": {},
"chipActionGroup": "קבוצה",
"@chipActionGroup": {},
"chipActionCreateGroup": "צור קבוצה",
"@chipActionCreateGroup": {},
"chipActionCreateVault": "צור כספת",
"@chipActionCreateVault": {}
}

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,29 +110,31 @@ class AlbumListPage extends StatelessWidget {
}
final listedStoredAlbums = <String>{};
if (albumTypes.contains(AlbumChipType.stored)) {
if (albumChipTypes.contains(AlbumChipType.stored)) {
final allAlbums = source.rawAlbums;
if (groupUri == null) {
final withinGroups = whereTypeRecursively<StoredAlbumFilter>(groupContent).map((v) => v.album).toSet();
listedStoredAlbums.addAll(source.rawAlbums.whereNot(withinGroups.contains));
listedStoredAlbums.addAll(allAlbums.whereNot(withinGroups.contains));
} else {
listedStoredAlbums.addAll(groupContent.whereType<StoredAlbumFilter>().map((v) => v.album));
// check that group content is listed from source, to prevent displaying hidden content
listedStoredAlbums.addAll(groupContent.whereType<StoredAlbumFilter>().map((v) => v.album).where(allAlbums.contains));
}
}
final listedDynamicAlbums = <DynamicAlbumFilter>{};
if (albumTypes.contains(AlbumChipType.dynamic)) {
if (albumChipTypes.contains(AlbumChipType.dynamic)) {
final allDynamicAlbums = dynamicAlbums.all;
if (groupUri == null) {
final withinGroups = whereTypeRecursively<DynamicAlbumFilter>(groupContent).toSet();
listedDynamicAlbums.addAll(dynamicAlbums.all.whereNot(withinGroups.contains));
listedDynamicAlbums.addAll(allDynamicAlbums.whereNot(withinGroups.contains));
} else {
listedDynamicAlbums.addAll(groupContent.whereType<DynamicAlbumFilter>());
// check that group content is listed from source, to prevent displaying hidden content
listedDynamicAlbums.addAll(groupContent.whereType<DynamicAlbumFilter>().where(allDynamicAlbums.contains));
}
}
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

@ -473,7 +473,7 @@ class _FilterSectionedContentState<T extends CollectionFilter> 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<T extends CollectionFilter> extends State<_Fi
void didChangeDependencies() {
super.didChangeDependencies();
_unregisterDependencies();
_grouping = context.read<FilterGrouping?>();
_groupNotifier = context.read<FilterGroupNotifier?>();
_registerDependencies();
}
@ -505,11 +505,11 @@ class _FilterSectionedContentState<T extends CollectionFilter> extends State<_Fi
}
void _registerDependencies() {
_grouping?.addListener(_scrollToTop);
_groupNotifier?.addListener(_scrollToTop);
}
void _unregisterDependencies() {
_grouping?.removeListener(_scrollToTop);
_groupNotifier?.removeListener(_scrollToTop);
}
void _registerWidget(_FilterSectionedContent<T> widget) {

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;

View file

@ -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:

View file

@ -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