fix: use existing encryption path on multipart entry found
This commit is contained in:
parent
f65e8359a7
commit
336a6c53fc
2 changed files with 37 additions and 11 deletions
|
@ -395,4 +395,25 @@ class UploadLocksDB {
|
|||
now - createdAt > 7 * 24 * 60 * 60 * 1000;
|
||||
});
|
||||
}
|
||||
|
||||
Future<String> getEncryptedPath(
|
||||
String localId,
|
||||
String fileHash,
|
||||
int collectionID,
|
||||
) {
|
||||
return instance.database.then((db) async {
|
||||
final rows = await db.query(
|
||||
_trackUploadTable.table,
|
||||
where: '${_trackUploadTable.columnLocalID} = ?'
|
||||
' AND ${_trackUploadTable.columnFileHash} = ?'
|
||||
' AND ${_trackUploadTable.columnCollectionID} = ?',
|
||||
whereArgs: [localId, fileHash, collectionID],
|
||||
);
|
||||
if (rows.isEmpty) {
|
||||
throw Exception("No cached links found for $localId and $fileHash");
|
||||
}
|
||||
final row = rows.first;
|
||||
return row[_trackUploadTable.columnEncryptedFilePath] as String;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -427,10 +427,22 @@ class FileUploader {
|
|||
MediaUploadData? mediaUploadData;
|
||||
mediaUploadData = await getUploadDataFromEnteFile(file);
|
||||
|
||||
var multipartEntryExists = mediaUploadData.hashData?.fileHash != null &&
|
||||
await _uploadLocks.doesExists(
|
||||
lockKey,
|
||||
mediaUploadData.hashData!.fileHash!,
|
||||
collectionID,
|
||||
);
|
||||
|
||||
final String uniqueID = const Uuid().v4().toString();
|
||||
|
||||
final encryptedFilePath =
|
||||
'$tempDirectory$kUploadTempPrefix${uniqueID}_file.encrypted';
|
||||
final encryptedFilePath = multipartEntryExists
|
||||
? await _uploadLocks.getEncryptedPath(
|
||||
lockKey,
|
||||
mediaUploadData.hashData!.fileHash!,
|
||||
collectionID,
|
||||
)
|
||||
: '$tempDirectory$kUploadTempPrefix${uniqueID}_file.encrypted';
|
||||
final encryptedThumbnailPath =
|
||||
'$tempDirectory$kUploadTempPrefix${uniqueID}_thumb.encrypted';
|
||||
var uploadCompleted = false;
|
||||
|
@ -446,13 +458,6 @@ class FileUploader {
|
|||
'${isUpdatedFile ? 're-upload' : 'upload'} of ${file.toString()}',
|
||||
);
|
||||
|
||||
var multipartEntryExists = mediaUploadData.hashData?.fileHash != null &&
|
||||
await _uploadLocks.doesExists(
|
||||
lockKey,
|
||||
mediaUploadData.hashData!.fileHash!,
|
||||
collectionID,
|
||||
);
|
||||
|
||||
Uint8List? key;
|
||||
EncryptionResult? multipartEncryptionResult;
|
||||
if (isUpdatedFile) {
|
||||
|
@ -535,8 +540,8 @@ class FileUploader {
|
|||
|
||||
// Calculate the number of parts for the file.
|
||||
final count = await _multiPartUploader.calculatePartCount(
|
||||
await encryptedFile.length(),
|
||||
);
|
||||
await encryptedFile.length(),
|
||||
);
|
||||
|
||||
late String fileObjectKey;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue