From c0700f28bfc539dbf5e303b9fd394097b95add3c Mon Sep 17 00:00:00 2001 From: Abhinav Date: Sun, 5 Feb 2023 21:37:37 +0530 Subject: [PATCH] added isValidMoveTarget target check --- src/services/collectionService.ts | 21 +++++++++++++-------- src/utils/collection/index.ts | 13 +++++++++++++ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/services/collectionService.ts b/src/services/collectionService.ts index 7a2be4f3c..133686010 100644 --- a/src/services/collectionService.ts +++ b/src/services/collectionService.ts @@ -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) { diff --git a/src/utils/collection/index.ts b/src/utils/collection/index.ts index 23ba0890c..252929d99 100644 --- a/src/utils/collection/index.ts +++ b/src/utils/collection/index.ts @@ -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) + ); +}