From f8f589f975ee01a401fb2a8cb28a521e87033061 Mon Sep 17 00:00:00 2001 From: vishnukvmd Date: Wed, 18 Aug 2021 19:32:37 +0530 Subject: [PATCH] Fix exif local storage --- lib/models/file.dart | 19 +++++++++++++------ lib/utils/file_uploader.dart | 3 --- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/models/file.dart b/lib/models/file.dart index 373cc57df..86e4c831d 100644 --- a/lib/models/file.dart +++ b/lib/models/file.dart @@ -1,11 +1,13 @@ import 'package:exif/exif.dart'; import 'package:flutter/foundation.dart'; +import 'package:flutter_sodium/flutter_sodium.dart'; import 'package:path/path.dart'; import 'package:photo_manager/photo_manager.dart'; import 'package:photos/core/configuration.dart'; import 'package:photos/core/constants.dart'; import 'package:photos/models/file_type.dart'; import 'package:photos/models/location.dart'; +import 'package:photos/utils/crypto_util.dart'; class File { int generatedID; @@ -24,14 +26,14 @@ class File { int duration; String exif; String hash; - int metadataVersion = 1; + int metadataVersion; String encryptedKey; String keyDecryptionNonce; String fileDecryptionHeader; String thumbnailDecryptionHeader; String metadataDecryptionHeader; - static const kMetadataVersion = 1; + static const kCurrentMetadataVersion = 1; File(); @@ -57,6 +59,7 @@ class File { } file.modificationTime = asset.modifiedDateTime.microsecondsSinceEpoch; file.fileSubType = asset.subTypes; + file.metadataVersion = kCurrentMetadataVersion; return file; } @@ -126,14 +129,18 @@ class File { } metadata["fileType"] = fileType.index; final asset = await getAsset(); - metadata["subType"] = asset.subTypes; + fileSubType = asset.subTypes; + metadata["subType"] = fileSubType; if (fileType == FileType.video) { - metadata["duration"] = asset.duration; + duration = asset.duration; + metadata["duration"] = duration; } else { - metadata["exif"] = await readExifFromFile(await asset.originFile); + exif = (await readExifFromFile(await asset.originFile)).toString(); + metadata["exif"] = exif; } + hash = Sodium.bin2base64(await CryptoUtil.getHash(await asset.originFile)); metadata["hash"] = hash; - metadata["version"] = kMetadataVersion; + metadata["version"] = metadataVersion; return metadata; } diff --git a/lib/utils/file_uploader.dart b/lib/utils/file_uploader.dart index e3f525084..ce1a34243 100644 --- a/lib/utils/file_uploader.dart +++ b/lib/utils/file_uploader.dart @@ -318,9 +318,6 @@ class FileUploader { final fileUploadURL = await _getUploadURL(); String fileObjectKey = await _putFile(fileUploadURL, encryptedFile); - file.hash = Sodium.bin2base64( - await CryptoUtil.getHash(mediaUploadData.sourceFile)); - final metadata = await file.getMetadata(); final encryptedMetadataData = await CryptoUtil.encryptChaCha( utf8.encode(jsonEncode(metadata)), fileAttributes.key);