[mob][photos] Group filter recommendations by type in appbar

This commit is contained in:
ashilkn
2024-10-23 18:44:35 +05:30
parent e7525ff5ea
commit 802ba55016
2 changed files with 39 additions and 13 deletions

View File

@@ -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<RecommendedFilters> {
);
_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<RecommendedFilters> {
void onRecommendedFiltersUpdate() {
setState(() {
_filtersUpdateCount++;
_recommendations = _searchFilterDataProvider.recommendations;
if (_recommendations.length > kMaxAppbarFilters) {
_recommendations = _recommendations.sublist(0, kMaxAppbarFilters);
}
_recommendations =
getRecommendedFiltersForAppBar(_searchFilterDataProvider);
});
}
}

View File

@@ -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<String, List<HierarchicalSearchFilter>> getFiltersForBottomSheet(
return {
"faceFilters": faceFilters,
"albumFilters": albumFilters,
"fileTypeFilters": fileTypeFilters,
"magicFilters": magicFilters,
"locationFilters": locationFilters,
"contactsFilters": contactsFilters,
"magicFilters": magicFilters,
"albumFilters": albumFilters,
"fileTypeFilters": fileTypeFilters,
"topLevelGenericFilter": topLevelGenericFilter,
};
}
List<HierarchicalSearchFilter> getRecommendedFiltersForAppBar(
SearchFilterDataProvider searchFilterDataProvider,
) {
List<HierarchicalSearchFilter> recommendations =
searchFilterDataProvider.recommendations;
if (recommendations.length > kMaxAppbarFilters) {
recommendations = recommendations.sublist(0, kMaxAppbarFilters);
}
final topLevelGenericRecco =
recommendations.whereType<TopLevelGenericFilter>().toList();
final faceReccos = recommendations.whereType<FaceFilter>().toList();
final magicReccos = recommendations.whereType<MagicFilter>().toList();
final locationReccos = recommendations.whereType<LocationFilter>().toList();
final contactsReccos = recommendations.whereType<ContactsFilter>().toList();
final albumReccos = recommendations.whereType<AlbumFilter>().toList();
final fileTypeReccos = recommendations.whereType<FileTypeFilter>().toList();
return [
...topLevelGenericRecco,
...faceReccos,
...magicReccos,
...locationReccos,
...contactsReccos,
...albumReccos,
...fileTypeReccos,
];
}