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:
parent
eebdc53b22
commit
a82b0224e9
|
@ -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);
|
||||
|
|
|
@ -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 ');
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue