From 83ff0e9e38e917d016e0214ff72b70f039d14d15 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Wed, 8 May 2024 15:42:47 +0530 Subject: [PATCH] [mob][multipart] Minor refactor --- mobile/lib/db/upload_locks_db.dart | 18 ++---------------- mobile/lib/utils/file_uploader.dart | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 27 deletions(-) diff --git a/mobile/lib/db/upload_locks_db.dart b/mobile/lib/db/upload_locks_db.dart index 10bd5ade6..107839c20 100644 --- a/mobile/lib/db/upload_locks_db.dart +++ b/mobile/lib/db/upload_locks_db.dart @@ -182,20 +182,6 @@ class UploadLocksDB { ); } - // For multipart download tracking - Future doesExists(String localId, String hash, int collectionID) async { - final db = await instance.database; - final rows = await db.query( - _trackUploadTable.table, - where: '${_trackUploadTable.columnLocalID} = ?' - ' AND ${_trackUploadTable.columnFileHash} = ?' - ' AND ${_trackUploadTable.columnCollectionID} = ?', - whereArgs: [localId, hash, collectionID], - ); - - return rows.isNotEmpty; - } - Future<({String encryptedFileKey, String fileNonce, String keyNonce})> getFileEncryptionData( String localId, @@ -421,7 +407,7 @@ class UploadLocksDB { }); } - Future getEncryptedFileName( + Future getEncryptedFileName( String localId, String fileHash, int collectionID, @@ -435,7 +421,7 @@ class UploadLocksDB { whereArgs: [localId, fileHash, collectionID], ); if (rows.isEmpty) { - throw Exception("No cached links found for $localId and $fileHash"); + return null; } final row = rows.first; return row[_trackUploadTable.columnEncryptedFileName] as String; diff --git a/mobile/lib/utils/file_uploader.dart b/mobile/lib/utils/file_uploader.dart index b4eab94b9..ebe1926e1 100644 --- a/mobile/lib/utils/file_uploader.dart +++ b/mobile/lib/utils/file_uploader.dart @@ -456,23 +456,23 @@ class FileUploader { MediaUploadData? mediaUploadData; mediaUploadData = await getUploadDataFromEnteFile(file); - var multipartEntryExists = mediaUploadData.hashData?.fileHash != null && - await _uploadLocks.doesExists( - lockKey, - mediaUploadData.hashData!.fileHash!, - collectionID, - ); + final String? existingMultipartEncFileName = + mediaUploadData.hashData?.fileHash != null + ? await _uploadLocks.getEncryptedFileName( + lockKey, + mediaUploadData.hashData!.fileHash!, + collectionID, + ) + : null; + bool multipartEntryExists = existingMultipartEncFileName != null; final String uniqueID = const Uuid().v4().toString(); final encryptedFilePath = multipartEntryExists - ? '$uploadPrefix${await _uploadLocks.getEncryptedFileName( - lockKey, - mediaUploadData.hashData!.fileHash!, - collectionID, - )}' + ? '$uploadPrefix$existingMultipartEncFileName' : '$uploadPrefix${uniqueID}_file.encrypted'; final encryptedThumbnailPath = '$uploadPrefix${uniqueID}_thumb.encrypted'; + var uploadCompleted = false; // This flag is used to decide whether to clear the iOS origin file cache // or not.