Explorar el Código

Fix exif lookup on iOS

Neeraj Gupta hace 3 años
padre
commit
25d6291877
Se han modificado 2 ficheros con 17 adiciones y 6 borrados
  1. 11 5
      lib/utils/exif_util.dart
  2. 6 1
      lib/utils/file_util.dart

+ 11 - 5
lib/utils/exif_util.dart

@@ -3,12 +3,18 @@ import 'dart:io' as io;
 import 'package:exif/exif.dart';
 import 'package:photos/models/file.dart';
 import 'package:photos/utils/file_util.dart';
+import 'package:logging/logging.dart';
 
 Future<Map<String, IfdTag>> getExif(File file) async {
-  final originFile = await getFile(file, isOrigin: true);
-  final exif = await readExifFromFile(originFile);
-  if (!file.isRemoteFile() && io.Platform.isIOS) {
-    originFile.delete();
+  try {
+    final originFile = await getFile(file, isOrigin: true);
+    final exif = await readExifFromFile(originFile);
+    if (!file.isRemoteFile() && io.Platform.isIOS) {
+      await originFile.delete();
+    }
+    return exif;
+  } catch (e) {
+    Logger("getExif").severe("failed to getExif", e);
+    rethrow;
   }
-  return exif;
 }

+ 6 - 1
lib/utils/file_util.dart

@@ -1,5 +1,6 @@
 import 'dart:async';
 import 'dart:io' as io;
+import 'dart:io';
 import 'dart:typed_data';
 
 import 'package:archive/archive.dart';
@@ -46,7 +47,11 @@ Future<io.File> getFile(
         liveVideo: liveVideo,
         isOrigin: isOrigin,
       );
-      FileLruCache.put(key, diskFile);
+      // do not cache origin file for IOS as they are immediately deleted
+      // after usage
+      if (!(isOrigin && Platform.isIOS)) {
+        FileLruCache.put(key, diskFile);
+      }
       return diskFile;
     }
     return cachedFile;