瀏覽代碼

Handle infinite or Nan values

Neeraj Gupta 2 年之前
父節點
當前提交
c20cb8040a
共有 2 個文件被更改,包括 15 次插入3 次删除
  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!,