Search: Support for searching by fileExtension

This commit is contained in:
Neeraj Gupta 2022-09-15 10:14:09 +05:30
parent db37c8b6dd
commit c730e36201
No known key found for this signature in database
GPG key ID: 3C5A1684DC1729E1
4 changed files with 50 additions and 2 deletions

View file

@ -14,4 +14,13 @@ abstract class SearchResult {
List<File> resultFiles();
}
enum ResultType { collection, file, location, month, year, fileType, event }
enum ResultType {
collection,
file,
location,
month,
year,
fileType,
fileExtension,
event
}

View file

@ -220,6 +220,40 @@ class SearchService {
return searchResults;
}
Future<List<GenericSearchResult>> getFileExtensionResults(
String query,
) async {
final List<GenericSearchResult> searchResults = [];
if (!query.startsWith(".")) {
return searchResults;
}
final nonCaseSensitiveRegexForQuery = RegExp(query, caseSensitive: false);
final List<File> allFiles = await _getAllFiles();
final Map<String, List<File>> resultMap = <String, List<File>>{};
for (File eachFile in allFiles) {
final String fileName = eachFile.getDisplayName();
if (fileName.contains(nonCaseSensitiveRegexForQuery)) {
final String exnType = fileName.split(".").last.toUpperCase();
if (!resultMap.containsKey(exnType)) {
resultMap[exnType] = <File>[];
}
resultMap[exnType].add(eachFile);
}
}
for (MapEntry<String, List<File>> entry in resultMap.entries) {
searchResults.add(
GenericSearchResult(
ResultType.fileExtension,
entry.key.toUpperCase(),
entry.value,
),
);
}
return searchResults;
}
Future<List<GenericSearchResult>> getMonthSearchResults(String query) async {
final List<GenericSearchResult> searchResults = [];
final nonCaseSensitiveRegexForQuery = RegExp(query, caseSensitive: false);

View file

@ -120,9 +120,11 @@ class SearchResultWidget extends StatelessWidget {
case ResultType.event:
return "Day";
case ResultType.location:
return "Day";
return "Location";
case ResultType.fileType:
return "Type";
case ResultType.fileExtension:
return "File Extension";
default:
return type.name.toUpperCase();
}

View file

@ -189,6 +189,9 @@ class _SearchWidgetState extends State<SearchWidget> {
await _searchService.getFileTypeResults(query);
allResults.addAll(fileTypeSearchResults);
final fileExtnResult = await _searchService.getFileExtensionResults(query);
allResults.addAll(fileExtnResult);
final collectionResults =
await _searchService.getCollectionSearchResults(query);
allResults.addAll(collectionResults);