Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
commit
69ab902e3b
6 changed files with 15 additions and 13 deletions
|
@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
## <a id="unreleased"></a>[Unreleased]
|
## <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
|
## <a id="v1.13.0"></a>[v1.13.0] - 2025-05-12
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
|
@ -46,7 +46,7 @@ mixin EntryStorageMixin on FeedbackMixin, PermissionAwareMixin, SizeAwareMixin {
|
||||||
final destinationAlbumFilter = await pickAlbum(
|
final destinationAlbumFilter = await pickAlbum(
|
||||||
context: context,
|
context: context,
|
||||||
moveType: MoveType.export,
|
moveType: MoveType.export,
|
||||||
albumTypes: {AlbumChipType.stored},
|
albumChipTypes: {AlbumChipType.stored},
|
||||||
initialGroup: null,
|
initialGroup: null,
|
||||||
);
|
);
|
||||||
if (destinationAlbumFilter == null || destinationAlbumFilter is! StoredAlbumFilter) return false;
|
if (destinationAlbumFilter == null || destinationAlbumFilter is! StoredAlbumFilter) return false;
|
||||||
|
@ -379,7 +379,7 @@ mixin EntryStorageMixin on FeedbackMixin, PermissionAwareMixin, SizeAwareMixin {
|
||||||
final destinationAlbumFilter = await pickAlbum(
|
final destinationAlbumFilter = await pickAlbum(
|
||||||
context: context,
|
context: context,
|
||||||
moveType: moveType,
|
moveType: moveType,
|
||||||
albumTypes: {AlbumChipType.stored},
|
albumChipTypes: {AlbumChipType.stored},
|
||||||
initialGroup: null,
|
initialGroup: null,
|
||||||
);
|
);
|
||||||
if (destinationAlbumFilter == null || destinationAlbumFilter is! StoredAlbumFilter) return false;
|
if (destinationAlbumFilter == null || destinationAlbumFilter is! StoredAlbumFilter) return false;
|
||||||
|
|
|
@ -40,7 +40,7 @@ import 'package:provider/provider.dart';
|
||||||
Future<AlbumBaseFilter?> pickAlbum({
|
Future<AlbumBaseFilter?> pickAlbum({
|
||||||
required BuildContext context,
|
required BuildContext context,
|
||||||
required MoveType? moveType,
|
required MoveType? moveType,
|
||||||
required Iterable<AlbumChipType> albumTypes,
|
required Iterable<AlbumChipType> albumChipTypes,
|
||||||
required Uri? initialGroup,
|
required Uri? initialGroup,
|
||||||
}) async {
|
}) async {
|
||||||
final source = context.read<CollectionSource>();
|
final source = context.read<CollectionSource>();
|
||||||
|
@ -56,7 +56,7 @@ Future<AlbumBaseFilter?> pickAlbum({
|
||||||
builder: (context) => _AlbumPickPage(
|
builder: (context) => _AlbumPickPage(
|
||||||
source: source,
|
source: source,
|
||||||
moveType: moveType,
|
moveType: moveType,
|
||||||
albumChipTypes: albumTypes,
|
albumChipTypes: albumChipTypes,
|
||||||
initialGroup: initialGroup,
|
initialGroup: initialGroup,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
@ -97,7 +97,7 @@ class AlbumListPage extends StatelessWidget {
|
||||||
static List<FilterGridItem<AlbumBaseFilter>> getAlbumGridItems(
|
static List<FilterGridItem<AlbumBaseFilter>> getAlbumGridItems(
|
||||||
BuildContext context,
|
BuildContext context,
|
||||||
CollectionSource source,
|
CollectionSource source,
|
||||||
Iterable<AlbumChipType> albumTypes,
|
Iterable<AlbumChipType> albumChipTypes,
|
||||||
Uri? groupUri,
|
Uri? groupUri,
|
||||||
) {
|
) {
|
||||||
final groupContent = albumGrouping.getDirectChildren(groupUri);
|
final groupContent = albumGrouping.getDirectChildren(groupUri);
|
||||||
|
@ -110,7 +110,7 @@ class AlbumListPage extends StatelessWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
final listedStoredAlbums = <String>{};
|
final listedStoredAlbums = <String>{};
|
||||||
if (albumTypes.contains(AlbumChipType.stored)) {
|
if (albumChipTypes.contains(AlbumChipType.stored)) {
|
||||||
if (groupUri == null) {
|
if (groupUri == null) {
|
||||||
final withinGroups = whereTypeRecursively<StoredAlbumFilter>(groupContent).map((v) => v.album).toSet();
|
final withinGroups = whereTypeRecursively<StoredAlbumFilter>(groupContent).map((v) => v.album).toSet();
|
||||||
listedStoredAlbums.addAll(source.rawAlbums.whereNot(withinGroups.contains));
|
listedStoredAlbums.addAll(source.rawAlbums.whereNot(withinGroups.contains));
|
||||||
|
@ -120,7 +120,7 @@ class AlbumListPage extends StatelessWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
final listedDynamicAlbums = <DynamicAlbumFilter>{};
|
final listedDynamicAlbums = <DynamicAlbumFilter>{};
|
||||||
if (albumTypes.contains(AlbumChipType.dynamic)) {
|
if (albumChipTypes.contains(AlbumChipType.dynamic)) {
|
||||||
if (groupUri == null) {
|
if (groupUri == null) {
|
||||||
final withinGroups = whereTypeRecursively<DynamicAlbumFilter>(groupContent).toSet();
|
final withinGroups = whereTypeRecursively<DynamicAlbumFilter>(groupContent).toSet();
|
||||||
listedDynamicAlbums.addAll(dynamicAlbums.all.whereNot(withinGroups.contains));
|
listedDynamicAlbums.addAll(dynamicAlbums.all.whereNot(withinGroups.contains));
|
||||||
|
@ -129,10 +129,8 @@ class AlbumListPage extends StatelessWidget {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final albumGroupFilters = <AlbumGroupFilter>{};
|
// always show groups, which are needed to navigate to other types
|
||||||
if (albumTypes.contains(AlbumChipType.group)) {
|
final albumGroupFilters = groupContent.whereType<AlbumGroupFilter>().toSet();
|
||||||
albumGroupFilters.addAll(groupContent.whereType<AlbumGroupFilter>());
|
|
||||||
}
|
|
||||||
|
|
||||||
final filters = <AlbumBaseFilter>{
|
final filters = <AlbumBaseFilter>{
|
||||||
...albumGroupFilters,
|
...albumGroupFilters,
|
||||||
|
|
|
@ -458,7 +458,7 @@ class AlbumChipSetActionDelegate extends ChipSetActionDelegate<AlbumBaseFilter>
|
||||||
final filter = await pickAlbum(
|
final filter = await pickAlbum(
|
||||||
context: context,
|
context: context,
|
||||||
moveType: null,
|
moveType: null,
|
||||||
albumTypes: {AlbumChipType.group},
|
albumChipTypes: {AlbumChipType.group},
|
||||||
initialGroup: initialGroup,
|
initialGroup: initialGroup,
|
||||||
);
|
);
|
||||||
if (filter == null) return;
|
if (filter == null) return;
|
||||||
|
|
|
@ -68,7 +68,7 @@ class _DrawerAlbumTabState extends State<DrawerAlbumTab> {
|
||||||
final albumFilter = await pickAlbum(
|
final albumFilter = await pickAlbum(
|
||||||
context: context,
|
context: context,
|
||||||
moveType: null,
|
moveType: null,
|
||||||
albumTypes: AlbumChipType.values,
|
albumChipTypes: AlbumChipType.values,
|
||||||
initialGroup: null,
|
initialGroup: null,
|
||||||
);
|
);
|
||||||
if (albumFilter == null || items.contains(albumFilter)) return;
|
if (albumFilter == null || items.contains(albumFilter)) return;
|
||||||
|
|
Loading…
Reference in a new issue