Browse Source

Handle infinite or Nan values

Neeraj Gupta 2 years ago
parent
commit
c20cb8040a
2 changed files with 15 additions and 3 deletions
  1. 14 0
      lib/models/location/location.dart
  2. 1 3
      lib/services/local_file_update_service.dart

+ 14 - 0
lib/models/location/location.dart

@@ -12,4 +12,18 @@ class Location with _$Location {
 
   factory Location.fromJson(Map<String, Object?> json) =>
       _$LocationFromJson(json);
+
+  static isValidLocation(Location? location) {
+    if (location == null) return false;
+    if (location.latitude == null || location.longitude == null) return false;
+    final latValue = location.latitude!;
+    final longValue = location.longitude!;
+    if (latValue.isNaN || latValue.isNaN || latValue == 0.0) {
+      return false;
+    }
+    if (longValue.isInfinite || longValue.isInfinite || longValue == 0.0) {
+      return false;
+    }
+    return true;
+  }
 }

+ 1 - 3
lib/services/local_file_update_service.dart

@@ -257,9 +257,7 @@ class LocalFileUpdateService {
 
       for (ente.File file in enteFiles) {
         final Location? location = await tryLocationFromExif(file);
-        if (location != null &&
-            (location.latitude ?? 0) != 0.0 &&
-            (location.longitude ?? 0) != 0.0) {
+        if (location != null && Location.isValidLocation(location)) {
           remoteFilesToUpdate.add(file);
           fileIDToUpdateMetadata[file.uploadedFileID!] = {
             pubMagicKeyLat: location.latitude!,