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: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;
}

View file

@ -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);