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();
|
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;
|
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 {
|
Future<List<GenericSearchResult>> getMonthSearchResults(String query) async {
|
||||||
final List<GenericSearchResult> searchResults = [];
|
final List<GenericSearchResult> searchResults = [];
|
||||||
final nonCaseSensitiveRegexForQuery = RegExp(query, caseSensitive: false);
|
final nonCaseSensitiveRegexForQuery = RegExp(query, caseSensitive: false);
|
||||||
|
|
|
@ -120,9 +120,11 @@ class SearchResultWidget extends StatelessWidget {
|
||||||
case ResultType.event:
|
case ResultType.event:
|
||||||
return "Day";
|
return "Day";
|
||||||
case ResultType.location:
|
case ResultType.location:
|
||||||
return "Day";
|
return "Location";
|
||||||
case ResultType.fileType:
|
case ResultType.fileType:
|
||||||
return "Type";
|
return "Type";
|
||||||
|
case ResultType.fileExtension:
|
||||||
|
return "File Extension";
|
||||||
default:
|
default:
|
||||||
return type.name.toUpperCase();
|
return type.name.toUpperCase();
|
||||||
}
|
}
|
||||||
|
|
|
@ -189,6 +189,9 @@ class _SearchWidgetState extends State<SearchWidget> {
|
||||||
await _searchService.getFileTypeResults(query);
|
await _searchService.getFileTypeResults(query);
|
||||||
allResults.addAll(fileTypeSearchResults);
|
allResults.addAll(fileTypeSearchResults);
|
||||||
|
|
||||||
|
final fileExtnResult = await _searchService.getFileExtensionResults(query);
|
||||||
|
allResults.addAll(fileExtnResult);
|
||||||
|
|
||||||
final collectionResults =
|
final collectionResults =
|
||||||
await _searchService.getCollectionSearchResults(query);
|
await _searchService.getCollectionSearchResults(query);
|
||||||
allResults.addAll(collectionResults);
|
allResults.addAll(collectionResults);
|
||||||
|
|
Loading…
Reference in a new issue