فهرست منبع

Add support for searching by caption

Neeraj Gupta 2 سال پیش
والد
کامیت
ec8aab680d
4فایلهای تغییر یافته به همراه32 افزوده شده و 0 حذف شده
  1. 4 0
      lib/models/file.dart
  2. 1 0
      lib/models/magic_metadata.dart
  3. 24 0
      lib/services/search_service.dart
  4. 3 0
      lib/ui/viewer/search/search_widget.dart

+ 4 - 0
lib/models/file.dart

@@ -211,6 +211,10 @@ class File extends EnteFile {
     }
   }
 
+  String? get caption {
+    return pubMagicMetadata?.caption;
+  }
+
   String get thumbnailUrl {
     final endpoint = Configuration.instance.getHttpEndpoint();
     if (endpoint != kDefaultProductionEndpoint ||

+ 1 - 0
lib/models/magic_metadata.dart

@@ -39,6 +39,7 @@ class MagicMetadata {
 class PubMagicMetadata {
   int? editedTime;
   String? editedName;
+  String? caption;
 
   PubMagicMetadata({this.editedTime, this.editedName});
 

+ 24 - 0
lib/services/search_service.dart

@@ -209,6 +209,30 @@ class SearchService {
     return searchResults;
   }
 
+  Future<List<GenericSearchResult>> getCaptionResults(
+    String query,
+  ) async {
+    final List<GenericSearchResult> searchResults = [];
+    if (query.isEmpty) {
+      return searchResults;
+    }
+    final RegExp pattern = RegExp(query, caseSensitive: false);
+    final List<File> allFiles = await _getAllFiles();
+    final matchedFiles = allFiles
+        .where((e) => e.caption != null && pattern.hasMatch(e.caption))
+        .toList();
+    if (matchedFiles.isNotEmpty) {
+      searchResults.add(
+        GenericSearchResult(
+          ResultType.fileCaption,
+          query,
+          matchedFiles,
+        ),
+      );
+    }
+    return searchResults;
+  }
+
   Future<List<GenericSearchResult>> getFileExtensionResults(
     String query,
   ) async {

+ 3 - 0
lib/ui/viewer/search/search_widget.dart

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