[mob]Handle duplicate fileID during addOrCopy

This commit is contained in:
Neeraj Gupta
2025-07-23 16:41:55 +05:30
parent e2aabfb95a
commit 4a743be322

View File

@@ -1648,17 +1648,27 @@ class CollectionsService {
);
final List<EnteFile> filesToCopy = [];
final List<EnteFile> filesToAdd = [];
final Set<int> seenForAdd = {};
final Set<int> seenForCopy = {};
for (final EnteFile file in othersFile) {
if (hashToUserFile.containsKey(file.hash ?? '')) {
final userFile = hashToUserFile[file.hash]!;
if (userFile.fileType == file.fileType) {
filesToAdd.add(userFile);
} else {
filesToCopy.add(file);
}
} else {
filesToCopy.add(file);
final userFile = hashToUserFile[file.hash ?? ''];
final bool shouldAdd =
userFile != null && userFile.fileType == file.fileType;
final targetList = shouldAdd ? filesToAdd : filesToCopy;
final seenSet = shouldAdd ? seenForAdd : seenForCopy;
final fileToProcess = shouldAdd ? userFile : file;
final uploadID = fileToProcess.uploadedFileID;
if (seenSet.contains(uploadID)) {
final action = shouldAdd ? "adding" : "copying";
_logger.warning(
"skip $action file $uploadID as it is already ${action}ed",
);
continue;
}
targetList.add(fileToProcess);
seenSet.add(uploadID!);
}
return (filesToAdd, filesToCopy);
}