From b9bbef6ff5d8160a9e77bca2854f881b54e044f1 Mon Sep 17 00:00:00 2001 From: zhouwenxuan Date: Mon, 17 Feb 2025 16:26:31 +0800 Subject: [PATCH 1/2] fix selection state error after copy items --- frontend/src/pages/lib-content-view/lib-content-view.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/src/pages/lib-content-view/lib-content-view.js b/frontend/src/pages/lib-content-view/lib-content-view.js index db083b3880..17cc1ef5e1 100644 --- a/frontend/src/pages/lib-content-view/lib-content-view.js +++ b/frontend/src/pages/lib-content-view/lib-content-view.js @@ -844,6 +844,8 @@ class LibContentView extends React.Component { if (byDialog) { this.updateRecentlyUsedList(destRepo, destDirentPath); } + + this.setState({ isDirentSelected: false, selectedDirentList: [], isAllDirentSelected: false }); }).catch((error) => { if (!error.response.data.lib_need_decrypt) { let errMessage = Utils.getErrorMsg(error); @@ -1354,6 +1356,7 @@ class LibContentView extends React.Component { seafileAPI.copyDir(repoID, destRepo.repo_id, copyToDirentPath, nodeParentPath, dirName).then(res => { this.copyItemsAjaxCallback(repoID, destRepo, dirent, copyToDirentPath, nodeParentPath, res.data.task_id || null, byDialog); + this.setState({ isDirentSelected: false, selectedDirentList: [], isAllDirentSelected: false }); }).catch((error) => { if (!error.response.data.lib_need_decrypt) { let errMessage = Utils.getErrorMsg(error); From 05702402e9d8c0e78258adfaa825c3cb5e826c4d Mon Sep 17 00:00:00 2001 From: zhouwenxuan Date: Wed, 19 Feb 2025 14:37:37 +0800 Subject: [PATCH 2/2] optimize --- frontend/src/pages/lib-content-view/lib-content-view.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/pages/lib-content-view/lib-content-view.js b/frontend/src/pages/lib-content-view/lib-content-view.js index 17cc1ef5e1..af94ca3f58 100644 --- a/frontend/src/pages/lib-content-view/lib-content-view.js +++ b/frontend/src/pages/lib-content-view/lib-content-view.js @@ -815,6 +815,7 @@ class LibContentView extends React.Component { let dirNames = this.getSelectedDirentNames(); seafileAPI.copyDir(repoID, destRepo.repo_id, destDirentPath, this.state.path, dirNames).then(res => { + this.onSelectedDirentListUpdate([]); if (repoID !== destRepo.repo_id) { this.setState({ asyncCopyMoveTaskId: res.data.task_id, @@ -844,8 +845,6 @@ class LibContentView extends React.Component { if (byDialog) { this.updateRecentlyUsedList(destRepo, destDirentPath); } - - this.setState({ isDirentSelected: false, selectedDirentList: [], isAllDirentSelected: false }); }).catch((error) => { if (!error.response.data.lib_need_decrypt) { let errMessage = Utils.getErrorMsg(error); @@ -1312,6 +1311,7 @@ class LibContentView extends React.Component { }; copyItemsAjaxCallback = (repoID, targetRepo, dirent, copyToDirentPath, nodeParentPath, taskId, byDialog = false) => { + this.onSelectedDirentListUpdate([]); if (repoID !== targetRepo.repo_id) { this.setState({ asyncCopyMoveTaskId: taskId, @@ -1356,7 +1356,6 @@ class LibContentView extends React.Component { seafileAPI.copyDir(repoID, destRepo.repo_id, copyToDirentPath, nodeParentPath, dirName).then(res => { this.copyItemsAjaxCallback(repoID, destRepo, dirent, copyToDirentPath, nodeParentPath, res.data.task_id || null, byDialog); - this.setState({ isDirentSelected: false, selectedDirentList: [], isAllDirentSelected: false }); }).catch((error) => { if (!error.response.data.lib_need_decrypt) { let errMessage = Utils.getErrorMsg(error); @@ -1493,6 +1492,7 @@ class LibContentView extends React.Component { isDirentSelected: newSelectedDirentList.length > 0, selectedDirentList: newSelectedDirentList, lastSelectedIndex: lastSelectedIndex, + isAllDirentSelected: newSelectedDirentList.length === this.state.direntList.length, }); };