optimize code

This commit is contained in:
Abhinav 2023-02-02 20:52:28 +05:30
parent e64f1c9ad7
commit ac2257771f
2 changed files with 46 additions and 32 deletions

View file

@ -12,7 +12,6 @@ import {
isSharedFile,
sortFiles,
groupFilesBasedOnCollectionID,
groupFilesBasedOnID,
} from 'utils/file';
import {
Collection,
@ -496,31 +495,58 @@ const encryptWithNewCollectionKey = async (
};
export const removeFromCollection = async (
collectionID: number,
files: EnteFile[]
toRemoveFiles: EnteFile[]
) => {
try {
const allFiles = await getLocalFiles();
const toRemoveFilesIds = new Set(toRemoveFiles.map((f) => f.id));
const toRemoveFilesCopiesInOtherCollections = allFiles.filter((f) => {
if (f.collectionID === collectionID) {
return false;
}
return toRemoveFilesIds.has(f.id);
});
const groupiedFiles = groupFilesBasedOnCollectionID(
toRemoveFilesCopiesInOtherCollections
);
const collections = await getLocalCollections();
const collectionsMap = new Map(collections.map((c) => [c.id, c]));
for (const [toMoveCollectionID, files] of groupiedFiles.entries()) {
const toMoveFiles = files.filter((f) => {
if (toRemoveFilesIds.has(f.id)) {
toRemoveFilesIds.delete(f.id);
return true;
}
return false;
});
if (toMoveFiles.length === 0) {
continue;
}
await moveToCollection(
collectionsMap[toMoveCollectionID],
collectionID,
toMoveFiles
);
}
const leftFiles = toRemoveFiles.filter((f) =>
toRemoveFilesIds.has(f.id)
);
if (leftFiles.length === 0) {
return;
}
let uncategorizedCollection = await getUncategorizedCollection();
if (!uncategorizedCollection) {
uncategorizedCollection = await createUnCategorizedCollection();
}
const allFiles = await getLocalFiles();
const groupiedFiles = groupFilesBasedOnID(allFiles);
for (const file of files) {
if (groupiedFiles[file.id].length === 1) {
await moveToCollection(uncategorizedCollection, collectionID, [
file,
]);
} else {
const differentCollectionFile = groupiedFiles[file.id].find(
(f) => f.collectionID !== collectionID
);
const collections = await getLocalCollections();
const collection = collections.find(
(c) => c.id === differentCollectionFile?.collectionID
);
await moveToCollection(collection, collectionID, [file]);
}
}
await moveToCollection(
uncategorizedCollection,
collectionID,
leftFiles
);
} catch (e) {
logError(e, 'remove from collection failed ');
throw e;

View file

@ -592,15 +592,3 @@ export const copyFileToClipboard = async (fileUrl: string) => {
.write([new ClipboardItem({ 'image/png': blobPromise })])
.catch((e) => logError(e, 'failed to copy to clipboard'));
};
export const groupFilesBasedOnID = (files: EnteFile[]) => {
const groupedFiles = files.reduce((acc, file) => {
if (!acc[file.id]) {
acc[file.id] = [];
}
acc[file.id].push(file);
return acc;
}, {} as { [key: number]: EnteFile[] });
return groupedFiles;
};