updated getSelectedFiles to return current specific file copy and updated moveToCollection to not expected sourceCollectionID separately and update moveToCollection usages

This commit is contained in:
Abhinav 2023-05-12 12:39:12 +05:30
parent eebdc53b22
commit a82b0224e9
4 changed files with 30 additions and 36 deletions

View file

@ -460,12 +460,7 @@ export default function Gallery() {
if (toProcessFiles.length === 0) {
return;
}
await handleCollectionOps(
ops,
collection,
toProcessFiles,
selected.collectionID
);
await handleCollectionOps(ops, collection, toProcessFiles);
clearSelection();
await syncWithRemote(false, true);
setActiveCollection(collection.id);

View file

@ -490,18 +490,21 @@ export const restoreToCollection = async (
};
export const moveToCollection = async (
toCollection: Collection,
fromCollectionID: number,
files: EnteFile[]
) => {
try {
const token = getToken();
const groupiedFiles = groupFilesBasedOnCollectionID(files);
if (groupiedFiles.size > 1) {
throw Error(CustomError.TO_MOVE_FILES_FROM_MULTIPLE_COLLECTIONS);
}
const batchedFiles = batch(files, REQUEST_BATCH_SIZE);
for (const batch of batchedFiles) {
const fileKeysEncryptedWithNewCollection =
await encryptWithNewCollectionKey(toCollection, batch);
const requestBody: MoveToCollectionRequest = {
fromCollectionID: fromCollectionID,
fromCollectionID: batch[0].collectionID,
toCollectionID: toCollection.id,
files: fileKeysEncryptedWithNewCollection,
};
@ -609,11 +612,7 @@ export const removeUserFiles = async (
if (toMoveFiles.length === 0) {
continue;
}
await moveToCollection(
targetCollection,
sourceCollectionID,
toMoveFiles
);
await moveToCollection(targetCollection, toMoveFiles);
}
const leftFiles = toRemoveFiles.filter((f) =>
toRemoveFilesIds.has(f.id)
@ -626,11 +625,7 @@ export const removeUserFiles = async (
if (!uncategorizedCollection) {
uncategorizedCollection = await createUnCategorizedCollection();
}
await moveToCollection(
uncategorizedCollection,
sourceCollectionID,
leftFiles
);
await moveToCollection(uncategorizedCollection, leftFiles);
} catch (e) {
logError(e, 'remove user files failed ');
throw e;
@ -1220,8 +1215,9 @@ export async function moveToHiddenCollection(files: EnteFile[]) {
hiddenCollection = await createHiddenCollection();
}
const groupiedFiles = groupFilesBasedOnCollectionID(files);
for (const [collectionID, files] of groupiedFiles.entries()) {
await moveToCollection(hiddenCollection, collectionID, files);
// eslint-disable-next-line @typescript-eslint/no-unused-vars
for (const [_, files] of groupiedFiles.entries()) {
await moveToCollection(hiddenCollection, files);
}
} catch (e) {
logError(e, 'move to hidden collection failed ');

View file

@ -46,19 +46,14 @@ export enum COLLECTION_OPS_TYPE {
export async function handleCollectionOps(
type: COLLECTION_OPS_TYPE,
collection: Collection,
selectedFiles: EnteFile[],
selectedCollectionID: number
selectedFiles: EnteFile[]
) {
switch (type) {
case COLLECTION_OPS_TYPE.ADD:
await addToCollection(collection, selectedFiles);
break;
case COLLECTION_OPS_TYPE.MOVE:
await moveToCollection(
collection,
selectedCollectionID,
selectedFiles
);
await moveToCollection(collection, selectedFiles);
break;
case COLLECTION_OPS_TYPE.REMOVE:
await removeFromCollection(collection.id, selectedFiles);

View file

@ -156,18 +156,26 @@ export function getSelectedFiles(
files: EnteFile[],
includeAllCopies = false
): EnteFile[] {
const filesIDs = new Set(getSelectedFileIds(selected));
const selectedFiles: EnteFile[] = [];
const selectedFilesIDs = new Set(getSelectedFileIds(selected));
const foundFiles = new Set<number>();
for (const file of files) {
if (
filesIDs.has(file.id) &&
(includeAllCopies || !foundFiles.has(file.id))
) {
selectedFiles.push(file);
const selectedFiles = files.filter((file) => {
if (selectedFilesIDs.has(file.id)) {
if (includeAllCopies) {
return true;
}
if (foundFiles.has(file.id)) {
return false;
}
if (
selected.collectionID >= 0 &&
file.collectionID !== selected.collectionID
) {
return false;
}
foundFiles.add(file.id);
return true;
}
}
});
return selectedFiles;
}