Merge pull request #484 from ente-io/search_by_file_extension
This commit is contained in:
commit
00ea460ce6
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue