mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-24 12:58:34 +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) => {
|
onNodeDragStart = (e, node) => {
|
||||||
if (Utils.isIEBrowser()) {
|
if (Utils.isIEBrowser()) {
|
||||||
return false;
|
return false;
|
||||||
@@ -133,7 +129,7 @@ class TreeView extends React.Component {
|
|||||||
this.setState({ isTreeViewDropTipShow: false });
|
this.setState({ isTreeViewDropTipShow: false });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.onItemMove(this.props.currentRepoInfo, nodeDirent, '/', nodeParentPath);
|
this.props.onItemMove(this.props.currentRepoInfo, nodeDirent, '/', nodeParentPath);
|
||||||
this.setState({ isTreeViewDropTipShow: false });
|
this.setState({ isTreeViewDropTipShow: false });
|
||||||
return;
|
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) => {
|
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
|
// 1. move to current repo
|
||||||
// 2. tow columns mode need update left tree
|
// 2. tow columns mode need update left tree
|
||||||
if (repoID === targetRepo.repo_id && this.state.isTreePanelShown) {
|
const updateAfterMove = () => {
|
||||||
this.updateMoveCopyTreeNode(moveToDirentPath);
|
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);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
this.moveDirent(direntPath, moveToDirentPath);
|
if (this.state.isTreePanelShown) {
|
||||||
|
this.deleteTreeNode(direntPath, updateAfterMove);
|
||||||
|
} else {
|
||||||
|
updateAfterMove();
|
||||||
|
}
|
||||||
|
|
||||||
// show tip message if move to current repo
|
// show tip message if move to current repo
|
||||||
if (repoID === targetRepo.repo_id) {
|
if (repoID === targetRepo.repo_id) {
|
||||||
@@ -1345,6 +1352,10 @@ class LibContentView extends React.Component {
|
|||||||
if (byDialog) {
|
if (byDialog) {
|
||||||
this.updateRecentlyUsedList(targetRepo, moveToDirentPath);
|
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) => {
|
onMoveItem = (destRepo, dirent, moveToDirentPath, nodeParentPath, byDialog = false) => {
|
||||||
@@ -2040,9 +2051,11 @@ class LibContentView extends React.Component {
|
|||||||
this.setState({ treeData: tree, currentNode });
|
this.setState({ treeData: tree, currentNode });
|
||||||
};
|
};
|
||||||
|
|
||||||
deleteTreeNode = (path) => {
|
deleteTreeNode = (path, callback) => {
|
||||||
let tree = treeHelper.deleteNodeByPath(this.state.treeData, path);
|
let tree = treeHelper.deleteNodeByPath(this.state.treeData, path);
|
||||||
this.setState({ treeData: tree });
|
this.setState({ treeData: tree }, () => {
|
||||||
|
callback && callback();
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
deleteTreeNodes = (paths) => {
|
deleteTreeNodes = (paths) => {
|
||||||
|
Reference in New Issue
Block a user