[mob][photos] Group filter recommendations by type in appbar
This commit is contained in:
@@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user