Show fileTypes and extensions examples in search section

This commit is contained in:
ashilkn 2023-10-09 19:52:37 +05:30
parent fe7896b85a
commit 45a4a8cc51
2 changed files with 41 additions and 1 deletions

View file

@ -181,7 +181,8 @@ extension SectionTypeExtensions on SectionType {
return SearchService.instance.getAllCollectionSearchResults(limit);
case SectionType.fileTypesAndExtension:
return SearchService.instance.getAllLocationTags(limit);
return SearchService.instance
.getAllFileTypesAndExtensionsResults(limit);
case SectionType.fileCaption:
return SearchService.instance.getAllLocationTags(limit);

View file

@ -186,6 +186,45 @@ class SearchService {
return searchResults;
}
Future<List<GenericSearchResult>> getAllFileTypesAndExtensionsResults(
int? limit,
) async {
final List<GenericSearchResult> searchResults = [];
final List<EnteFile> allFiles = await getAllFiles();
final fileTypesAndMatchingFiles = <FileType, List<EnteFile>>{};
final extensionsAndMatchingFiles = <String, List<EnteFile>>{};
int i = 0;
for (EnteFile file in allFiles) {
if (limit != null && i++ <= limit) {
final String fileName = file.displayName;
final String ext = fileName.split(".").last.toUpperCase();
if (!fileTypesAndMatchingFiles.containsKey(file.fileType)) {
fileTypesAndMatchingFiles[file.fileType] = <EnteFile>[];
}
fileTypesAndMatchingFiles[file.fileType]!.add(file);
if (!extensionsAndMatchingFiles.containsKey(ext)) {
extensionsAndMatchingFiles[ext] = <EnteFile>[];
}
extensionsAndMatchingFiles[ext]!.add(file);
}
}
fileTypesAndMatchingFiles.forEach((key, value) {
searchResults
.add(GenericSearchResult(ResultType.fileType, key.name, value));
});
extensionsAndMatchingFiles.forEach((key, value) {
searchResults
.add(GenericSearchResult(ResultType.fileExtension, key, value));
});
return searchResults;
}
Future<List<GenericSearchResult>> getCaptionAndNameResults(
String query,
) async {