Browse Source

misc. changes

ashilkn 2 years ago
parent
commit
74d66f9a83

+ 2 - 2
lib/ui/viewer/search/location_collection_page.dart → lib/ui/viewer/search/collections/files_in_location_page.dart

@@ -9,14 +9,14 @@ import 'package:photos/ui/viewer/gallery/gallery.dart';
 import 'package:photos/ui/viewer/gallery/gallery_app_bar_widget.dart';
 import 'package:photos/ui/viewer/gallery/gallery_overlay_widget.dart';
 
-class LocationCollectionPage extends StatelessWidget {
+class FilesInLocationPage extends StatelessWidget {
   final LocationSearchResult locationSearchResult;
   final String tagPrefix;
   final GalleryType appBarType;
   final GalleryType overlayType;
   final _selectedFiles = SelectedFiles();
 
-  LocationCollectionPage({
+  FilesInLocationPage({
     this.locationSearchResult,
     this.tagPrefix = "location_search",
     this.appBarType = GalleryType.searchResults,

+ 2 - 2
lib/ui/viewer/search/search_result_widgets/collection_result_widget.dart

@@ -6,10 +6,10 @@ import 'package:photos/ui/viewer/file/thumbnail_widget.dart';
 import 'package:photos/ui/viewer/gallery/collection_page.dart';
 import 'package:photos/utils/navigation_util.dart';
 
-class CollectionResultWidget extends StatelessWidget {
+class AlbumSearchResultWidget extends StatelessWidget {
   final AlbumSearchResult albumSearchResult;
 
-  const CollectionResultWidget(this.albumSearchResult, {Key key})
+  const AlbumSearchResultWidget(this.albumSearchResult, {Key key})
       : super(key: key);
 
   @override

+ 2 - 2
lib/ui/viewer/search/search_result_widgets/filename_result_widget.dart

@@ -6,9 +6,9 @@ import 'package:photos/ui/viewer/file/detail_page.dart';
 import 'package:photos/ui/viewer/file/thumbnail_widget.dart';
 import 'package:photos/utils/navigation_util.dart';
 
-class FilenameResultWidget extends StatelessWidget {
+class FileSearchResultWidget extends StatelessWidget {
   final FileSearchResult matchedFile;
-  const FilenameResultWidget(this.matchedFile, {Key key}) : super(key: key);
+  const FileSearchResultWidget(this.matchedFile, {Key key}) : super(key: key);
 
   @override
   Widget build(BuildContext context) {

+ 10 - 10
lib/ui/viewer/search/search_result_widgets/location_result_widget.dart

@@ -2,16 +2,16 @@ import 'package:flutter/material.dart';
 import 'package:photos/ente_theme_data.dart';
 import 'package:photos/models/search/location_search_result.dart';
 import 'package:photos/ui/viewer/file/thumbnail_widget.dart';
-import 'package:photos/ui/viewer/search/location_collection_page.dart';
+import 'package:photos/ui/viewer/search/collections/files_in_location_page.dart';
 import 'package:photos/utils/navigation_util.dart';
 
-class LocationResultsWidget extends StatelessWidget {
-  final LocationSearchResult locationAndMatchedFiles;
-  const LocationResultsWidget(this.locationAndMatchedFiles, {Key key})
+class LocationSearchResultWidget extends StatelessWidget {
+  final LocationSearchResult locationSearchResult;
+  const LocationSearchResultWidget(this.locationSearchResult, {Key key})
       : super(key: key);
   @override
   Widget build(BuildContext context) {
-    int noOfMemories = locationAndMatchedFiles.files.length;
+    final noOfMemories = locationSearchResult.files.length;
     return GestureDetector(
       behavior: HitTestBehavior.opaque,
       child: Container(
@@ -32,7 +32,7 @@ class LocationResultsWidget extends StatelessWidget {
                     ),
                     const SizedBox(height: 8),
                     Text(
-                      locationAndMatchedFiles.location,
+                      locationSearchResult.location,
                       style: const TextStyle(fontSize: 18),
                       overflow: TextOverflow.ellipsis,
                     ),
@@ -53,11 +53,11 @@ class LocationResultsWidget extends StatelessWidget {
                 ),
               ),
               Hero(
-                tag: "location_search" + locationAndMatchedFiles.files[0].tag(),
+                tag: "location_search" + locationSearchResult.files[0].tag(),
                 child: SizedBox(
                   height: 50,
                   width: 50,
-                  child: ThumbnailWidget(locationAndMatchedFiles.files[0]),
+                  child: ThumbnailWidget(locationSearchResult.files[0]),
                 ),
               ),
             ],
@@ -67,8 +67,8 @@ class LocationResultsWidget extends StatelessWidget {
       onTap: () {
         routeToPage(
           context,
-          LocationCollectionPage(
-            locationSearchResult: locationAndMatchedFiles,
+          FilesInLocationPage(
+            locationSearchResult: locationSearchResult,
           ),
         );
       },

+ 9 - 6
lib/ui/viewer/search/search_results_suggestions.dart → lib/ui/viewer/search/search_suggestions.dart

@@ -1,4 +1,5 @@
 import 'package:flutter/material.dart';
+import 'package:logging/logging.dart';
 import 'package:photos/ente_theme_data.dart';
 import 'package:photos/models/search/album_search_result.dart';
 import 'package:photos/models/search/file_search_result.dart';
@@ -8,9 +9,9 @@ import 'package:photos/ui/viewer/search/search_result_widgets/collection_result_
 import 'package:photos/ui/viewer/search/search_result_widgets/filename_result_widget.dart';
 import 'package:photos/ui/viewer/search/search_result_widgets/location_result_widget.dart';
 
-class SearchResultsSuggestionsWidget extends StatelessWidget {
+class SearchSuggestionsWidget extends StatelessWidget {
   final List<SearchResult> results;
-  const SearchResultsSuggestionsWidget(
+  const SearchSuggestionsWidget(
     this.results, {
     Key key,
   }) : super(key: key);
@@ -49,13 +50,15 @@ class SearchResultsSuggestionsWidget extends StatelessWidget {
                 }
                 final result = results[index];
                 if (result is AlbumSearchResult) {
-                  return CollectionResultWidget(result);
+                  return AlbumSearchResultWidget(result);
                 } else if (result is FileSearchResult) {
-                  return FilenameResultWidget(result);
+                  return FileSearchResultWidget(result);
                 } else if (result is LocationSearchResult) {
-                  return LocationResultsWidget(result);
+                  return LocationSearchResultWidget(result);
                 } else {
-                  throw StateError("Invalid/Unsupported value");
+                  Logger('SearchSuggestionsWidget')
+                      .info("Invalid/Unsupported value");
+                  return const SizedBox.shrink();
                 }
               },
             ),

+ 23 - 59
lib/ui/viewer/search/search_widget.dart

@@ -7,7 +7,8 @@ import 'package:photos/models/search/file_search_result.dart';
 import 'package:photos/models/search/location_search_result.dart';
 import 'package:photos/models/search/search_results.dart';
 import 'package:photos/services/search_service.dart';
-import 'package:photos/ui/viewer/search/search_results_suggestions.dart';
+import 'package:photos/ui/viewer/search/search_suggestions.dart';
+import 'package:photos/utils/navigation_util.dart';
 
 class SearchIconWidget extends StatefulWidget {
   const SearchIconWidget({Key key}) : super(key: key);
@@ -107,24 +108,8 @@ class _SearchWidgetState extends State<SearchWidget> {
                         ),
                       ),
                       onChanged: (value) async {
-                        final List<SearchResult> allResults = [];
-
-                        final collectionResults = await SearchService.instance
-                            .getFilteredCollectionsWithThumbnail(value);
-                        for (CollectionWithThumbnail collectionResult
-                            in collectionResults) {
-                          allResults.add(AlbumSearchResult(collectionResult));
-                        }
-                        final locationResults = await SearchService.instance
-                            .getLocationsAndMatchedFiles(value);
-                        for (LocationSearchResult result in locationResults) {
-                          allResults.add(result);
-                        }
-                        final fileResults = await SearchService.instance
-                            .getFilesOnFilenameSearch(value);
-                        for (File file in fileResults) {
-                          allResults.add(FileSearchResult(file));
-                        }
+                        final List<SearchResult> allResults =
+                            await getSearchResultsForQuery(value);
                         if (mounted) {
                           setState(() {
                             results.clear();
@@ -139,53 +124,32 @@ class _SearchWidgetState extends State<SearchWidget> {
               ],
             ),
             results.isNotEmpty
-                ? SearchResultsSuggestionsWidget(results)
+                ? SearchSuggestionsWidget(results)
                 : const SizedBox.shrink(),
           ],
         ),
       ),
     );
   }
-}
 
-class TransparentRoute extends PageRoute<void> {
-  TransparentRoute({
-    @required this.builder,
-    RouteSettings settings,
-  })  : assert(builder != null),
-        super(settings: settings, fullscreenDialog: false);
-
-  final WidgetBuilder builder;
-
-  @override
-  bool get opaque => false;
-
-  @override
-  Color get barrierColor => null;
+  Future<List<SearchResult>> getSearchResultsForQuery(String query) async {
+    final List<SearchResult> allResults = [];
 
-  @override
-  String get barrierLabel => null;
-
-  @override
-  bool get maintainState => true;
-
-  @override
-  Duration get transitionDuration => const Duration(milliseconds: 350);
-
-  @override
-  Widget buildPage(
-    BuildContext context,
-    Animation<double> animation,
-    Animation<double> secondaryAnimation,
-  ) {
-    final result = builder(context);
-    return FadeTransition(
-      opacity: Tween<double>(begin: 0, end: 1).animate(animation),
-      child: Semantics(
-        scopesRoute: true,
-        explicitChildNodes: true,
-        child: result,
-      ),
-    );
+    final collectionResults =
+        await SearchService.instance.getFilteredCollectionsWithThumbnail(query);
+    for (CollectionWithThumbnail collectionResult in collectionResults) {
+      allResults.add(AlbumSearchResult(collectionResult));
+    }
+    final locationResults =
+        await SearchService.instance.getLocationsAndMatchedFiles(query);
+    for (LocationSearchResult result in locationResults) {
+      allResults.add(result);
+    }
+    final fileResults =
+        await SearchService.instance.getFilesOnFilenameSearch(query);
+    for (File file in fileResults) {
+      allResults.add(FileSearchResult(file));
+    }
+    return allResults;
   }
 }

+ 42 - 0
lib/utils/navigation_util.dart

@@ -54,3 +54,45 @@ PageRouteBuilder<T> _buildPageRoute<T extends Object>(Widget page) {
     opaque: false,
   );
 }
+
+class TransparentRoute extends PageRoute<void> {
+  TransparentRoute({
+    @required this.builder,
+    RouteSettings settings,
+  })  : assert(builder != null),
+        super(settings: settings, fullscreenDialog: false);
+
+  final WidgetBuilder builder;
+
+  @override
+  bool get opaque => false;
+
+  @override
+  Color get barrierColor => null;
+
+  @override
+  String get barrierLabel => null;
+
+  @override
+  bool get maintainState => true;
+
+  @override
+  Duration get transitionDuration => const Duration(milliseconds: 350);
+
+  @override
+  Widget buildPage(
+    BuildContext context,
+    Animation<double> animation,
+    Animation<double> secondaryAnimation,
+  ) {
+    final result = builder(context);
+    return FadeTransition(
+      opacity: Tween<double>(begin: 0, end: 1).animate(animation),
+      child: Semantics(
+        scopesRoute: true,
+        explicitChildNodes: true,
+        child: result,
+      ),
+    );
+  }
+}