diff --git a/mobile/lib/ui/viewer/hierarchicial_search/recommended_filters.dart b/mobile/lib/ui/viewer/hierarchicial_search/recommended_filters.dart index c222ecff88..81307c9cf0 100644 --- a/mobile/lib/ui/viewer/hierarchicial_search/recommended_filters.dart +++ b/mobile/lib/ui/viewer/hierarchicial_search/recommended_filters.dart @@ -8,6 +8,7 @@ import "package:photos/ui/viewer/gallery/state/inherited_search_filter_data.dart import "package:photos/ui/viewer/gallery/state/search_filter_data_provider.dart"; import "package:photos/ui/viewer/hierarchicial_search/filter_chip.dart"; import "package:photos/ui/viewer/hierarchicial_search/filter_options_bottom_sheet.dart"; +import "package:photos/utils/hierarchical_search_util.dart"; class RecommendedFilters extends StatefulWidget { const RecommendedFilters({super.key}); @@ -31,12 +32,9 @@ class _RecommendedFiltersState extends State { ); _searchFilterDataProvider = inheritedSearchFilterData.searchFilterDataProvider!; - _recommendations = _searchFilterDataProvider.recommendations; - - if (_recommendations.length > kMaxAppbarFilters) { - _recommendations = _recommendations.sublist(0, kMaxAppbarFilters); - _filtersUpdateCount++; - } + _recommendations = + getRecommendedFiltersForAppBar(_searchFilterDataProvider); + _filtersUpdateCount++; _searchFilterDataProvider.removeListener( fromRecommended: true, @@ -154,10 +152,8 @@ class _RecommendedFiltersState extends State { void onRecommendedFiltersUpdate() { setState(() { _filtersUpdateCount++; - _recommendations = _searchFilterDataProvider.recommendations; - if (_recommendations.length > kMaxAppbarFilters) { - _recommendations = _recommendations.sublist(0, kMaxAppbarFilters); - } + _recommendations = + getRecommendedFiltersForAppBar(_searchFilterDataProvider); }); } } diff --git a/mobile/lib/utils/hierarchical_search_util.dart b/mobile/lib/utils/hierarchical_search_util.dart index 502461dc73..1ae9cd2137 100644 --- a/mobile/lib/utils/hierarchical_search_util.dart +++ b/mobile/lib/utils/hierarchical_search_util.dart @@ -3,6 +3,7 @@ import "dart:developer"; import "package:flutter/material.dart"; import "package:logging/logging.dart"; import "package:photos/core/configuration.dart"; +import "package:photos/core/constants.dart"; import "package:photos/db/files_db.dart"; import "package:photos/db/ml/db.dart"; import "package:photos/generated/l10n.dart"; @@ -432,11 +433,40 @@ Map> getFiltersForBottomSheet( return { "faceFilters": faceFilters, - "albumFilters": albumFilters, - "fileTypeFilters": fileTypeFilters, + "magicFilters": magicFilters, "locationFilters": locationFilters, "contactsFilters": contactsFilters, - "magicFilters": magicFilters, + "albumFilters": albumFilters, + "fileTypeFilters": fileTypeFilters, "topLevelGenericFilter": topLevelGenericFilter, }; } + +List getRecommendedFiltersForAppBar( + SearchFilterDataProvider searchFilterDataProvider, +) { + List recommendations = + searchFilterDataProvider.recommendations; + if (recommendations.length > kMaxAppbarFilters) { + recommendations = recommendations.sublist(0, kMaxAppbarFilters); + } + + final topLevelGenericRecco = + recommendations.whereType().toList(); + final faceReccos = recommendations.whereType().toList(); + final magicReccos = recommendations.whereType().toList(); + final locationReccos = recommendations.whereType().toList(); + final contactsReccos = recommendations.whereType().toList(); + final albumReccos = recommendations.whereType().toList(); + final fileTypeReccos = recommendations.whereType().toList(); + + return [ + ...topLevelGenericRecco, + ...faceReccos, + ...magicReccos, + ...locationReccos, + ...contactsReccos, + ...albumReccos, + ...fileTypeReccos, + ]; +}