From 520f6d4639c41c0192d918a03cd144de12fe0812 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E9=A1=BA=E5=BC=BA?= Date: Wed, 25 Dec 2019 10:16:09 +0800 Subject: [PATCH] Repair toolbar operation state (#4375) * repair toolbar operation state error bug * add comment * optimized code --- .../lib-content-view/lib-content-view.js | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) 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 c37648d143..161287c234 100644 --- a/frontend/src/pages/lib-content-view/lib-content-view.js +++ b/frontend/src/pages/lib-content-view/lib-content-view.js @@ -1270,7 +1270,11 @@ class LibContentView extends React.Component { let direntList = this.state.direntList.filter(item => { return item.name !== name; }); - this.setState({ direntList: direntList }); + + // Recalculate the state of the selection + this.recaculateSelectedStateAfterDirentDeleted(name, direntList); + + this.setState({direntList: direntList}); this.updateReadmeMarkdown(direntList); } else if (Utils.isAncestorPath(direntPath, this.state.path)) { // the deleted item is ancester of the current item @@ -1289,6 +1293,10 @@ class LibContentView extends React.Component { let direntList = this.state.direntList.filter(item => { return item.name !== name; }); + + // Recalculate the state of the selection + this.recaculateSelectedStateAfterDirentDeleted(name, direntList); + this.setState({direntList: direntList}); this.updateReadmeMarkdown(direntList); } @@ -1537,6 +1545,20 @@ class LibContentView extends React.Component { }); } + recaculateSelectedStateAfterDirentDeleted = (name, newDirentList) => { + let selectedDirentList = this.state.selectedDirentList.slice(0); + if (selectedDirentList.length > 0) { + selectedDirentList = selectedDirentList.filter(item => { + return item.name !== name; + }); + } + this.setState({ + selectedDirentList: selectedDirentList, + isDirentSelected: selectedDirentList.length > 0, + isAllDirentSelected: selectedDirentList.length === newDirentList.length, + }); + } + onLibDecryptDialog = () => { this.setState({libNeedDecrypt: false}); this.loadDirData(this.state.path);