From 244c1a293d04f529d16d3ead888832689de57596 Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Mon, 12 May 2025 20:12:20 +0200 Subject: [PATCH] groups: fixed default view selection when in group --- .../common/action_delegates/chip_set.dart | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/lib/widgets/filter_grids/common/action_delegates/chip_set.dart b/lib/widgets/filter_grids/common/action_delegates/chip_set.dart index da60632f5..5759ce53d 100644 --- a/lib/widgets/filter_grids/common/action_delegates/chip_set.dart +++ b/lib/widgets/filter_grids/common/action_delegates/chip_set.dart @@ -1,9 +1,10 @@ import 'package:aves/app_mode.dart'; import 'package:aves/model/covers.dart'; import 'package:aves/model/entry/entry.dart'; +import 'package:aves/model/filters/container/set_or.dart'; import 'package:aves/model/filters/covered/stored_album.dart'; import 'package:aves/model/filters/filters.dart'; -import 'package:aves/model/filters/container/set_or.dart'; +import 'package:aves/model/grouping/common.dart'; import 'package:aves/model/query.dart'; import 'package:aves/model/selection.dart'; import 'package:aves/model/settings/settings.dart'; @@ -20,6 +21,7 @@ import 'package:aves/widgets/common/action_mixins/permission_aware.dart'; import 'package:aves/widgets/common/action_mixins/size_aware.dart'; import 'package:aves/widgets/common/action_mixins/vault_aware.dart'; import 'package:aves/widgets/common/extensions/build_context.dart'; +import 'package:aves/widgets/common/providers/filter_group_provider.dart'; import 'package:aves/widgets/common/search/route.dart'; import 'package:aves/widgets/common/tile_extent_controller.dart'; import 'package:aves/widgets/dialogs/aves_dialog.dart'; @@ -240,8 +242,29 @@ abstract class ChipSetActionDelegate with FeedbackMi Iterable _selectedEntries(BuildContext context) { final source = context.read(); final visibleEntries = source.visibleEntries; - final filters = getSelectedFilters(context); - return filters.isEmpty ? visibleEntries : visibleEntries.where((entry) => filters.any((f) => f.test(entry))); + + final filters = {}; + // use user selected filters, if any + filters.addAll(getSelectedFilters(context)); + + if (filters.isEmpty) { + // use current group filters, if any + final groupUri = context.read()?.value; + if (groupUri != null) { + final grouping = FilterGrouping.forUri(groupUri); + if (grouping != null) { + final groupContent = grouping.getDirectChildren(groupUri); + filters.addAll(groupContent); + } + } + } + + if (filters.isNotEmpty) { + return visibleEntries.where((entry) => filters.any((f) => f.test(entry))); + } + + // default to all content + return visibleEntries; } Future configureView(BuildContext context) async {