Sfoglia il codice sorgente

Refactored by not calling getExif() twice and only once

ashilkn 2 anni fa
parent
commit
6c054b0f79

+ 1 - 1
lib/ui/viewer/file/file_details_widget.dart

@@ -248,7 +248,7 @@ class _FileDetailsWidgetState extends State<FileDetailsWidget> {
 
 
   Future<bool> _setLocationDataFromExif() async {
   Future<bool> _setLocationDataFromExif() async {
     final locationDataFromExif =
     final locationDataFromExif =
-        (await gpsDataFromExif(widget.file)).toLocationObj();
+        (await gpsDataFromExif(_exifNotifier.value!)).toLocationObj();
     if (locationDataFromExif?.latitude != null &&
     if (locationDataFromExif?.latitude != null &&
         locationDataFromExif?.longitude != null) {
         locationDataFromExif?.longitude != null) {
       widget.file.location = locationDataFromExif;
       widget.file.location = locationDataFromExif;

+ 1 - 2
lib/utils/exif_util.dart

@@ -48,14 +48,13 @@ Future<DateTime?> getCreationTimeFromEXIF(io.File file) async {
   return null;
   return null;
 }
 }
 
 
-Future<GPSData> gpsDataFromExif(File file) async {
+Future<GPSData> gpsDataFromExif(Map<String, IfdTag> exif) async {
   final Map<String, dynamic> exifLocationData = {
   final Map<String, dynamic> exifLocationData = {
     "lat": null,
     "lat": null,
     "long": null,
     "long": null,
     "latRef": null,
     "latRef": null,
     "longRef": null,
     "longRef": null,
   };
   };
-  final exif = await getExif(file);
   if (exif["GPS GPSLatitude"] != null) {
   if (exif["GPS GPSLatitude"] != null) {
     exifLocationData["lat"] = exif["GPS GPSLatitude"]!
     exifLocationData["lat"] = exif["GPS GPSLatitude"]!
         .values
         .values

+ 3 - 1
lib/utils/file_uploader_util.dart

@@ -160,13 +160,15 @@ Future<void> _decorateEnteFileData(ente.File file, AssetEntity asset) async {
       //In some devices, asset.latlngAsync() doesn't fetch the location data even
       //In some devices, asset.latlngAsync() doesn't fetch the location data even
       //if it is present. In such cases, extract location data from EXIF.
       //if it is present. In such cases, extract location data from EXIF.
       try {
       try {
-        final locationData = (await gpsDataFromExif(file)).toLocationObj();
+        final exif = await getExif(file);
+        final locationData = (await gpsDataFromExif(exif)).toLocationObj();
         latLong = LatLng(
         latLong = LatLng(
           latitude: locationData?.latitude,
           latitude: locationData?.latitude,
           longitude: locationData?.longitude,
           longitude: locationData?.longitude,
         );
         );
       } catch (e, s) {
       } catch (e, s) {
         _logger.warning("Failed to get location from exif", e, s);
         _logger.warning("Failed to get location from exif", e, s);
+        return;
       }
       }
     }
     }
     file.location =
     file.location =