From b96b685649c839963388a90aadbedc8f56b69a75 Mon Sep 17 00:00:00 2001 From: Akmal Isomadinov Date: Fri, 1 Dec 2023 18:59:24 +0500 Subject: [PATCH] Fixed folder loader after closing ConflictResolveDialog --- .../dialogs/ConflictResolveDialog/index.js | 27 ++++++++++++++----- packages/client/src/store/FilesStore.js | 22 +++++++++------ 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/packages/client/src/components/dialogs/ConflictResolveDialog/index.js b/packages/client/src/components/dialogs/ConflictResolveDialog/index.js index 4af541503b..3dfec8a777 100644 --- a/packages/client/src/components/dialogs/ConflictResolveDialog/index.js +++ b/packages/client/src/components/dialogs/ConflictResolveDialog/index.js @@ -69,7 +69,9 @@ const ConflictResolveDialog = (props) => { items, itemOperationToFolder, activeFiles, + activeFolders, setActiveFiles, + setActiveFolders, updateActiveFiles, setSelected, setMoveToPanelVisible, @@ -104,14 +106,17 @@ const ConflictResolveDialog = (props) => { setRestoreAllPanelVisible(false); setMoveToPublicRoomVisible(false); }; - const onCloseDialog = () => { - let newActiveFiles = activeFiles; - for (let item of fileIds) { - newActiveFiles = newActiveFiles.filter((f) => f !== item); - } + const differenceArray = (activeItems, ids) => { + return activeItems.filter((item) => !ids.includes(item.id ?? item)); + }; + + const onCloseDialog = () => { + const newActiveFiles = differenceArray(activeFiles, fileIds); + const newActiveFolder = differenceArray(activeFolders, folderIds); setActiveFiles(newActiveFiles); + setActiveFolders(newActiveFolder); onClose(); }; @@ -283,8 +288,14 @@ export default inject(({ auth, dialogsStore, uploadDataStore, filesStore }) => { } = dialogsStore; const { itemOperationToFolder } = uploadDataStore; - const { activeFiles, setActiveFiles, updateActiveFiles, setSelected } = - filesStore; + const { + activeFiles, + activeFolders, + setActiveFiles, + setActiveFolders, + updateActiveFiles, + setSelected, + } = filesStore; const { settingsStore } = auth; const { theme } = settingsStore; return { @@ -295,7 +306,9 @@ export default inject(({ auth, dialogsStore, uploadDataStore, filesStore }) => { setConflictResolveDialogVisible, itemOperationToFolder, activeFiles, + activeFolders, setActiveFiles, + setActiveFolders, updateActiveFiles, setSelected, setMoveToPanelVisible, diff --git a/packages/client/src/store/FilesStore.js b/packages/client/src/store/FilesStore.js index 9adb0ebca5..f62d4c4b78 100644 --- a/packages/client/src/store/FilesStore.js +++ b/packages/client/src/store/FilesStore.js @@ -709,20 +709,26 @@ class FilesStore { this.selectedFolderStore.setSelectedFolder(null); }; + mappingActiveItems = (items, destFolderId) => { + const arrayFormation = items.map((item) => + typeof item === "object" + ? { ...item, destFolderId: destFolderId ?? item.destFolderId } + : { + id: item, + destFolderId, + } + ); + return arrayFormation; + }; + setActiveFiles = (activeFiles, destFolderId) => { - const arrayFormation = activeFiles.map((id) => ({ - id, - destFolderId, - })); + const arrayFormation = this.mappingActiveItems(activeFiles, destFolderId); this.activeFiles = arrayFormation; }; setActiveFolders = (activeFolders, destFolderId) => { - const arrayFormation = activeFolders.map((id) => ({ - id, - destFolderId, - })); + const arrayFormation = this.mappingActiveItems(activeFolders, destFolderId); this.activeFolders = arrayFormation; };