[mob][photos] Handle and log failures in curating and applying filters

This commit is contained in:
ashilkn 2024-10-03 07:51:15 +05:30
parent 2c2c7f6c9e
commit 18a22c8014

View File

@ -1,3 +1,4 @@
import "package:logging/logging.dart";
import "package:photos/db/files_db.dart"; import "package:photos/db/files_db.dart";
import "package:photos/models/file/file.dart"; import "package:photos/models/file/file.dart";
import "package:photos/models/file/file_type.dart"; import "package:photos/models/file/file_type.dart";
@ -14,32 +15,36 @@ Future<List<EnteFile>> getFilteredFiles(
final filteredFiles = <EnteFile>[]; final filteredFiles = <EnteFile>[];
final files = await SearchService.instance.getAllFiles(); final files = await SearchService.instance.getAllFiles();
for (EnteFile file in files) { try {
if (file.uploadedFileID == null || file.uploadedFileID == -1) { for (EnteFile file in files) {
continue; if (file.uploadedFileID == null || file.uploadedFileID == -1) {
} continue;
for (HierarchicalSearchFilter filter in filters) { }
if (filter.isMatch(file)) { for (HierarchicalSearchFilter filter in filters) {
filter.matchedUploadedIDs.add(file.uploadedFileID!); if (filter.isMatch(file)) {
filter.matchedUploadedIDs.add(file.uploadedFileID!);
}
} }
} }
}
Set<int> filteredUploadedIDs = {}; Set<int> filteredUploadedIDs = {};
for (int i = 0; i < filters.length; i++) { for (int i = 0; i < filters.length; i++) {
if (i == 0) { if (i == 0) {
filteredUploadedIDs = filteredUploadedIDs =
filteredUploadedIDs.union(filters[i].getMatchedUploadedIDs()); filteredUploadedIDs.union(filters[i].getMatchedUploadedIDs());
} else { } else {
filteredUploadedIDs = filteredUploadedIDs = filteredUploadedIDs
filteredUploadedIDs.intersection(filters[i].getMatchedUploadedIDs()); .intersection(filters[i].getMatchedUploadedIDs());
}
} }
}
final filteredIDtoFile = final filteredIDtoFile =
await FilesDB.instance.getFilesFromIDs(filteredUploadedIDs.toList()); await FilesDB.instance.getFilesFromIDs(filteredUploadedIDs.toList());
for (int id in filteredIDtoFile.keys) { for (int id in filteredIDtoFile.keys) {
filteredFiles.add(filteredIDtoFile[id]!); filteredFiles.add(filteredIDtoFile[id]!);
}
} catch (e) {
Logger("HierarchicalSearchUtil").severe("Failed to get filtered files: $e");
} }
return filteredFiles; return filteredFiles;
@ -49,13 +54,17 @@ void curateFilters(
SearchFilterDataProvider searchFilterDataProvider, SearchFilterDataProvider searchFilterDataProvider,
List<EnteFile> files, List<EnteFile> files,
) async { ) async {
final albumFilters = try {
await _curateAlbumFilters(searchFilterDataProvider, files); final albumFilters =
final fileTypeFilters = await _curateAlbumFilters(searchFilterDataProvider, files);
_curateFileTypeFilters(searchFilterDataProvider, files); final fileTypeFilters =
_curateFileTypeFilters(searchFilterDataProvider, files);
searchFilterDataProvider searchFilterDataProvider
.clearAndAddRecommendations([...albumFilters, ...fileTypeFilters]); .clearAndAddRecommendations([...albumFilters, ...fileTypeFilters]);
} catch (e) {
Logger("HierarchicalSearchUtil").severe("Failed to curate filters: $e");
}
} }
Future<List<AlbumFilter>> _curateAlbumFilters( Future<List<AlbumFilter>> _curateAlbumFilters(