Fix exif local storage

This commit is contained in:
vishnukvmd 2021-08-18 19:32:37 +05:30
parent 709c4e959c
commit f8f589f975
2 changed files with 13 additions and 9 deletions

View file

@ -1,11 +1,13 @@
import 'package:exif/exif.dart'; import 'package:exif/exif.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter_sodium/flutter_sodium.dart';
import 'package:path/path.dart'; import 'package:path/path.dart';
import 'package:photo_manager/photo_manager.dart'; import 'package:photo_manager/photo_manager.dart';
import 'package:photos/core/configuration.dart'; import 'package:photos/core/configuration.dart';
import 'package:photos/core/constants.dart'; import 'package:photos/core/constants.dart';
import 'package:photos/models/file_type.dart'; import 'package:photos/models/file_type.dart';
import 'package:photos/models/location.dart'; import 'package:photos/models/location.dart';
import 'package:photos/utils/crypto_util.dart';
class File { class File {
int generatedID; int generatedID;
@ -24,14 +26,14 @@ class File {
int duration; int duration;
String exif; String exif;
String hash; String hash;
int metadataVersion = 1; int metadataVersion;
String encryptedKey; String encryptedKey;
String keyDecryptionNonce; String keyDecryptionNonce;
String fileDecryptionHeader; String fileDecryptionHeader;
String thumbnailDecryptionHeader; String thumbnailDecryptionHeader;
String metadataDecryptionHeader; String metadataDecryptionHeader;
static const kMetadataVersion = 1; static const kCurrentMetadataVersion = 1;
File(); File();
@ -57,6 +59,7 @@ class File {
} }
file.modificationTime = asset.modifiedDateTime.microsecondsSinceEpoch; file.modificationTime = asset.modifiedDateTime.microsecondsSinceEpoch;
file.fileSubType = asset.subTypes; file.fileSubType = asset.subTypes;
file.metadataVersion = kCurrentMetadataVersion;
return file; return file;
} }
@ -126,14 +129,18 @@ class File {
} }
metadata["fileType"] = fileType.index; metadata["fileType"] = fileType.index;
final asset = await getAsset(); final asset = await getAsset();
metadata["subType"] = asset.subTypes; fileSubType = asset.subTypes;
metadata["subType"] = fileSubType;
if (fileType == FileType.video) { if (fileType == FileType.video) {
metadata["duration"] = asset.duration; duration = asset.duration;
metadata["duration"] = duration;
} else { } 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["hash"] = hash;
metadata["version"] = kMetadataVersion; metadata["version"] = metadataVersion;
return metadata; return metadata;
} }

View file

@ -318,9 +318,6 @@ class FileUploader {
final fileUploadURL = await _getUploadURL(); final fileUploadURL = await _getUploadURL();
String fileObjectKey = await _putFile(fileUploadURL, encryptedFile); String fileObjectKey = await _putFile(fileUploadURL, encryptedFile);
file.hash = Sodium.bin2base64(
await CryptoUtil.getHash(mediaUploadData.sourceFile));
final metadata = await file.getMetadata(); final metadata = await file.getMetadata();
final encryptedMetadataData = await CryptoUtil.encryptChaCha( final encryptedMetadataData = await CryptoUtil.encryptChaCha(
utf8.encode(jsonEncode(metadata)), fileAttributes.key); utf8.encode(jsonEncode(metadata)), fileAttributes.key);