Restrict search to single match
This commit is contained in:
parent
6085aff3e9
commit
c396347e21
1 changed files with 18 additions and 20 deletions
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue