mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-23 12:27:48 +00:00
Fix move dirent in tree view not delete old dirent (#7908)
* 01 optimise codes * 02 move new dirent after delete old dirent 03 fix right panel dirent list refresh
This commit is contained in:
@@ -45,10 +45,6 @@ class TreeView extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
onItemMove = (repo, dirent, selectedPath, currentPath) => {
|
||||
this.props.onItemMove(repo, dirent, selectedPath, currentPath);
|
||||
};
|
||||
|
||||
onNodeDragStart = (e, node) => {
|
||||
if (Utils.isIEBrowser()) {
|
||||
return false;
|
||||
@@ -133,7 +129,7 @@ class TreeView extends React.Component {
|
||||
this.setState({ isTreeViewDropTipShow: false });
|
||||
return;
|
||||
}
|
||||
this.onItemMove(this.props.currentRepoInfo, nodeDirent, '/', nodeParentPath);
|
||||
this.props.onItemMove(this.props.currentRepoInfo, nodeDirent, '/', nodeParentPath);
|
||||
this.setState({ isTreeViewDropTipShow: false });
|
||||
return;
|
||||
}
|
||||
@@ -163,7 +159,7 @@ class TreeView extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
this.onItemMove(this.props.currentRepoInfo, nodeDirent, dropNodeData.path, nodeParentPath);
|
||||
this.props.onItemMove(this.props.currentRepoInfo, nodeDirent, dropNodeData.path, nodeParentPath);
|
||||
};
|
||||
|
||||
onMoveItems = (dragStartNodeData, dropNodeData, destRepo, destDirentPath) => {
|
||||
|
@@ -1323,17 +1323,24 @@ class LibContentView extends React.Component {
|
||||
});
|
||||
}
|
||||
|
||||
if (this.state.isTreePanelShown) {
|
||||
this.deleteTreeNode(direntPath);
|
||||
}
|
||||
|
||||
// 1. move to current repo
|
||||
// 2. tow columns mode need update left tree
|
||||
const updateAfterMove = () => {
|
||||
if (repoID === targetRepo.repo_id && this.state.isTreePanelShown) {
|
||||
this.updateMoveCopyTreeNode(moveToDirentPath);
|
||||
}
|
||||
|
||||
this.moveDirent(direntPath, moveToDirentPath);
|
||||
this.setState({ path: moveToDirentPath });
|
||||
if (this.state.path !== moveToDirentPath) {
|
||||
this.loadDirentList(moveToDirentPath);
|
||||
}
|
||||
};
|
||||
|
||||
if (this.state.isTreePanelShown) {
|
||||
this.deleteTreeNode(direntPath, updateAfterMove);
|
||||
} else {
|
||||
updateAfterMove();
|
||||
}
|
||||
|
||||
// show tip message if move to current repo
|
||||
if (repoID === targetRepo.repo_id) {
|
||||
@@ -1345,6 +1352,10 @@ class LibContentView extends React.Component {
|
||||
if (byDialog) {
|
||||
this.updateRecentlyUsedList(targetRepo, moveToDirentPath);
|
||||
}
|
||||
// update location
|
||||
let repoInfo = this.state.currentRepoInfo;
|
||||
let url = siteRoot + 'library/' + repoID + '/' + encodeURIComponent(repoInfo.repo_name) + Utils.encodePath(moveToDirentPath);
|
||||
window.history.pushState({ url, path: moveToDirentPath }, moveToDirentPath, url);
|
||||
};
|
||||
|
||||
onMoveItem = (destRepo, dirent, moveToDirentPath, nodeParentPath, byDialog = false) => {
|
||||
@@ -2040,9 +2051,11 @@ class LibContentView extends React.Component {
|
||||
this.setState({ treeData: tree, currentNode });
|
||||
};
|
||||
|
||||
deleteTreeNode = (path) => {
|
||||
deleteTreeNode = (path, callback) => {
|
||||
let tree = treeHelper.deleteNodeByPath(this.state.treeData, path);
|
||||
this.setState({ treeData: tree });
|
||||
this.setState({ treeData: tree }, () => {
|
||||
callback && callback();
|
||||
});
|
||||
};
|
||||
|
||||
deleteTreeNodes = (paths) => {
|
||||
|
Reference in New Issue
Block a user