Selaa lähdekoodia

Restrict search to single match

Neeraj Gupta 1 vuosi sitten
vanhempi
commit
c396347e21
1 muutettua tiedostoa jossa 18 lisäystä ja 20 poistoa
  1. 18 20
      lib/services/location_service.dart

+ 18 - 20
lib/services/location_service.dart

@@ -242,31 +242,29 @@ Future<List<City>> parseCities(Map args) async {
 
 Map<City, List<EnteFile>> getCityResults(Map args) {
   final query = (args["query"] as String).toLowerCase();
-  final cities = args["cities"] as List<City>;
-  final files = args["files"] as List<EnteFile>;
+  final List<City> cities = args["cities"] as List<City>;
+  final List<EnteFile> files = args["files"] as List<EnteFile>;
 
-  final matchingCities = cities.where(
-    (city) => city.city.toLowerCase().contains(query),
-  );
+  final matchingCities = cities
+      .where(
+        (city) => city.city.toLowerCase().contains(query),
+      )
+      .toList();
 
   final Map<City, List<EnteFile>> results = {};
-  for (final city in matchingCities) {
-    final List<EnteFile> matchingFiles = [];
-    final cityLocation = Location(latitude: city.lat, longitude: city.lng);
-    for (final file in files) {
-      if (file.hasLocation) {
-        if (isFileInsideLocationTag(
-          cityLocation,
-          file.location!,
-          defaultCityRadius,
-        )) {
-          matchingFiles.add(file);
-        }
+  for (final file in files) {
+    if (!file.hasLocation) continue; // Skip files without location
+    for (final city in matchingCities) {
+      final cityLocation = Location(latitude: city.lat, longitude: city.lng);
+      if (isFileInsideLocationTag(
+        cityLocation,
+        file.location!,
+        defaultCityRadius,
+      )) {
+        results.putIfAbsent(city, () => []).add(file);
+        break; // Stop searching once a file is matched with a city
       }
     }
-    if (matchingFiles.isNotEmpty) {
-      results[city] = matchingFiles;
-    }
   }
   return results;
 }