diff --git a/web/apps/photos/src/services/collectionService.ts b/web/apps/photos/src/services/collectionService.ts index def8eba9cb..feb5ea91ad 100644 --- a/web/apps/photos/src/services/collectionService.ts +++ b/web/apps/photos/src/services/collectionService.ts @@ -1,4 +1,5 @@ import type { User } from "ente-accounts/services/user"; +import { isDevBuild } from "ente-base/env"; import log from "ente-base/log"; import { apiURL } from "ente-base/origins"; import { groupFilesByCollectionID, sortFiles } from "ente-gallery/utils/file"; @@ -7,6 +8,7 @@ import { addToFavorites, createUncategorizedCollection, moveFromCollection, + removeFromCollection2, removeNonUserFilesFromCollection, savedUserFavoritesCollection, } from "ente-new/photos/services/collection"; @@ -40,6 +42,10 @@ export const removeFromCollection = async ( collectionID: number, toRemoveFiles: EnteFile[], ) => { + // TODO(RE): + if (isDevBuild && process.env.ENTE_WIP_MOVE) + return removeFromCollection2(collectionID, toRemoveFiles); + try { const user: User = getData("user"); const nonUserFiles = []; diff --git a/web/packages/new/photos/services/collection.ts b/web/packages/new/photos/services/collection.ts index 78a1412840..8110ff93c5 100644 --- a/web/packages/new/photos/services/collection.ts +++ b/web/packages/new/photos/services/collection.ts @@ -701,10 +701,28 @@ export const deleteFromTrash = async (fileIDs: number[]) => * * See: [Note: Deleting a collection]. */ -export const removeFromCollection = ( +export const removeFromCollection2 = async ( collectionID: number, files: EnteFile[], -) => {}; +) => { + const userID = ensureLocalUser().id; + const [userFiles, nonUserFiles] = splitByPredicate( + files, + (f) => f.ownerID == userID, + ); + if (userFiles.length) { + await moveUserFilesToUncategorizedIfSoleCollection( + collectionID, + userFiles, + ); + } + if (nonUserFiles.length) { + await removeNonUserFilesFromCollection( + collectionID, + nonUserFiles.map((f) => f.id), + ); + } +}; /** * Move the given user owned files whose only user owned instance is in the