From a06a5be98382b7034b1fd5f37267e18a5ed6ddf7 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Wed, 23 Jul 2025 15:45:20 +0530 Subject: [PATCH] [mob] Skip dup fileID from src collection during copy --- .../lib/services/collections_service.dart | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/mobile/apps/photos/lib/services/collections_service.dart b/mobile/apps/photos/lib/services/collections_service.dart index ee3d662a63..a8c1986f1b 100644 --- a/mobile/apps/photos/lib/services/collections_service.dart +++ b/mobile/apps/photos/lib/services/collections_service.dart @@ -1427,12 +1427,20 @@ class CollectionsService { } // group files by collectionID final Map> filesByCollection = {}; + final Map> fileSeenByCollection = {}; for (final file in filesToCopy) { - if (filesByCollection.containsKey(file.collectionID!)) { - filesByCollection[file.collectionID!]!.add(file.copyWith()); - } else { - filesByCollection[file.collectionID!] = [file.copyWith()]; + fileSeenByCollection.putIfAbsent(file.collectionID!, () => {}); + if (fileSeenByCollection[file.collectionID]! + .contains(file.uploadedFileID)) { + _logger.warning( + "skip copy, duplicate ID: ${file.uploadedFileID} in collection " + "${file.collectionID}", + ); + continue; } + filesByCollection + .putIfAbsent(file.collectionID!, () => []) + .add(file.copyWith()); } for (final entry in filesByCollection.entries) { final srcCollectionID = entry.key; @@ -1579,9 +1587,6 @@ class CollectionsService { params["files"] = []; for (final batchFile in batch) { final fileKey = getFileKey(batchFile); - _logger.info( - "srcCollection : $srcCollectionID file: ${batchFile.uploadedFileID} key: ${CryptoUtil.bin2base64(fileKey)} ", - ); final encryptedKeyData = CryptoUtil.encryptSync(fileKey, getCollectionKey(dstCollectionID)); batchFile.encryptedKey =