Merge branch 'develop'
This commit is contained in:
commit
5726e7bcc0
15 changed files with 116 additions and 29 deletions
2
.github/workflows/dependency-review.yml
vendored
2
.github/workflows/dependency-review.yml
vendored
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
4
fastlane/metadata/android/en-US/changelogs/152.txt
Normal file
4
fastlane/metadata/android/en-US/changelogs/152.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
In v1.13.1:
|
||||
- group albums
|
||||
- filter by day of the week
|
||||
Full changelog available on GitHub
|
4
fastlane/metadata/android/en-US/changelogs/15201.txt
Normal file
4
fastlane/metadata/android/en-US/changelogs/15201.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
In v1.13.1:
|
||||
- group albums
|
||||
- filter by day of the week
|
||||
Full changelog available on GitHub
|
|
@ -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": {}
|
||||
}
|
||||
|
|
|
@ -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": {}
|
||||
}
|
||||
|
|
|
@ -144,5 +144,19 @@
|
|||
"stopTooltip": "עצור",
|
||||
"@stopTooltip": {},
|
||||
"chipActionGoToExplorerPage": "הצג בסייר",
|
||||
"@chipActionGoToExplorerPage": {}
|
||||
"@chipActionGoToExplorerPage": {},
|
||||
"chipActionSetCover": "הגדר עטיפה",
|
||||
"@chipActionSetCover": {},
|
||||
"chipActionCreateAlbum": "צור אלבום",
|
||||
"@chipActionCreateAlbum": {},
|
||||
"chipActionShowCountryStates": "הצג סטטיסטיקות",
|
||||
"@chipActionShowCountryStates": {},
|
||||
"createButtonLabel": "צור",
|
||||
"@createButtonLabel": {},
|
||||
"chipActionGroup": "קבוצה",
|
||||
"@chipActionGroup": {},
|
||||
"chipActionCreateGroup": "צור קבוצה",
|
||||
"@chipActionCreateGroup": {},
|
||||
"chipActionCreateVault": "צור כספת",
|
||||
"@chipActionCreateVault": {}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
),
|
||||
),
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
Loading…
Reference in a new issue