added isValidMoveTarget target check

This commit is contained in:
Abhinav 2023-02-05 21:37:37 +05:30
parent 3cbfe58ec0
commit c0700f28bf
2 changed files with 26 additions and 8 deletions

View file

@ -56,6 +56,7 @@ import {
isOutgoingShare,
isIncomingShare,
isSharedOnlyViaLink,
isValidMoveTarget,
} from 'utils/collection';
import ComlinkCryptoWorker from 'utils/comlink/ComlinkCryptoWorker';
import { getLocalFiles } from './fileService';
@ -524,7 +525,7 @@ export const removeFromCollection = async (
};
export const removeUserFiles = async (
collectionID: number,
sourceCollectionID: number,
toRemoveFiles: EnteFile[],
allFiles?: EnteFile[]
) => {
@ -534,9 +535,6 @@ export const removeUserFiles = async (
}
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(
@ -545,8 +543,15 @@ export const removeUserFiles = async (
const collections = await getLocalCollections();
const collectionsMap = new Map(collections.map((c) => [c.id, c]));
const user: User = getData(LS_KEYS.USER);
for (const [toMoveCollectionID, files] of groupiedFiles.entries()) {
for (const [targetCollectionID, files] of groupiedFiles.entries()) {
const targetCollection = collectionsMap.get(targetCollectionID);
if (
!isValidMoveTarget(sourceCollectionID, targetCollection, user)
) {
continue;
}
const toMoveFiles = files.filter((f) => {
if (toRemoveFilesIds.has(f.id)) {
toRemoveFilesIds.delete(f.id);
@ -558,8 +563,8 @@ export const removeUserFiles = async (
continue;
}
await moveToCollection(
collectionsMap.get(toMoveCollectionID),
collectionID,
targetCollection,
sourceCollectionID,
toMoveFiles
);
}
@ -576,7 +581,7 @@ export const removeUserFiles = async (
}
await moveToCollection(
uncategorizedCollection,
collectionID,
sourceCollectionID,
leftFiles
);
} catch (e) {

View file

@ -228,3 +228,16 @@ export function isIncomingShare(collection: Collection, user: User) {
export function isSharedOnlyViaLink(collection: Collection) {
return collection.publicURLs?.length && !collection.sharees?.length;
}
export function isValidMoveTarget(
sourceCollectionID: number,
targetCollection: Collection,
user: User
) {
return (
sourceCollectionID !== targetCollection.id &&
!isCollectionHidden(targetCollection) &&
!isQuickLinkCollection(targetCollection) &&
!isIncomingShare(targetCollection, user)
);
}