mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-01 23:38:37 +00:00
optimize view tree render (#7713)
Co-authored-by: zhouwenxuan <aries@Mac.local>
This commit is contained in:
parent
641eb1fca5
commit
b28e97970f
@ -129,7 +129,7 @@ export const MetadataProvider = ({ repoID, currentPath, repoInfo, selectMetadata
|
|||||||
setCollapsedFolders(updatedCollapsedFoldersIds);
|
setCollapsedFolders(updatedCollapsedFoldersIds);
|
||||||
}, [getCollapsedFolders, setCollapsedFolders]);
|
}, [getCollapsedFolders, setCollapsedFolders]);
|
||||||
|
|
||||||
const addFolder = useCallback((name, successCallback, failCallback) => {
|
const addFolder = useCallback(({ name, successCallback, failCallback }) => {
|
||||||
metadataAPI.addFolder(repoID, name).then(res => {
|
metadataAPI.addFolder(repoID, name).then(res => {
|
||||||
let newNavigation = [...navigation];
|
let newNavigation = [...navigation];
|
||||||
const folder = new Folder(res.data.folder);
|
const folder = new Folder(res.data.folder);
|
||||||
|
@ -69,10 +69,6 @@ const MetadataTreeView = ({ userPerm, currentPath }) => {
|
|||||||
setShowInput(true);
|
setShowInput(true);
|
||||||
}, [generateNewViewDefaultName]);
|
}, [generateNewViewDefaultName]);
|
||||||
|
|
||||||
const closeNewView = useCallback(() => {
|
|
||||||
setShowInput(false);
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
const closeNewFolder = useCallback(() => {
|
const closeNewFolder = useCallback(() => {
|
||||||
setShowInput(false);
|
setShowInput(false);
|
||||||
}, []);
|
}, []);
|
||||||
@ -89,7 +85,7 @@ const MetadataTreeView = ({ userPerm, currentPath }) => {
|
|||||||
}, [getFolders]);
|
}, [getFolders]);
|
||||||
|
|
||||||
const handleAddView = useCallback((name, type) => {
|
const handleAddView = useCallback((name, type) => {
|
||||||
addView({ name, type });
|
addView({ name, type, successCallback: () => setShowInput(false) });
|
||||||
}, [addView]);
|
}, [addView]);
|
||||||
|
|
||||||
const handleDuplicateView = useCallback((viewId) => {
|
const handleDuplicateView = useCallback((viewId) => {
|
||||||
@ -163,7 +159,7 @@ const MetadataTreeView = ({ userPerm, currentPath }) => {
|
|||||||
return renderView(view, index);
|
return renderView(view, index);
|
||||||
})}
|
})}
|
||||||
{showInput && (newView ?
|
{showInput && (newView ?
|
||||||
<NewView newView={newView} leftIndent={TREE_NODE_LEFT_INDENT * 2} closeNewView={closeNewView} addView={handleAddView} /> :
|
<NewView newView={newView} leftIndent={TREE_NODE_LEFT_INDENT * 2} addView={handleAddView} /> :
|
||||||
<NewFolder closeNewFolder={closeNewFolder} />
|
<NewFolder closeNewFolder={closeNewFolder} />
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
@ -25,8 +25,7 @@ const NewFolder = ({ closeNewFolder }) => {
|
|||||||
inputRef.current && inputRef.current.focus();
|
inputRef.current && inputRef.current.focus();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
addFolder(message);
|
addFolder({ name: message, successCallback: closeNewFolder });
|
||||||
closeNewFolder();
|
|
||||||
}, [addFolder, getFoldersNames, closeNewFolder]);
|
}, [addFolder, getFoldersNames, closeNewFolder]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -7,7 +7,7 @@ import { useMetadata } from '../hooks';
|
|||||||
import { validateName } from '../utils/validate';
|
import { validateName } from '../utils/validate';
|
||||||
import { VIEW_TYPE, VIEW_TYPE_ICON } from '../constants';
|
import { VIEW_TYPE, VIEW_TYPE_ICON } from '../constants';
|
||||||
|
|
||||||
const NewView = ({ newView, leftIndent, closeNewView, addView }) => {
|
const NewView = ({ newView, leftIndent, addView }) => {
|
||||||
const { type: newViewType } = newView;
|
const { type: newViewType } = newView;
|
||||||
const { idViewMap } = useMetadata();
|
const { idViewMap } = useMetadata();
|
||||||
const editorRef = useRef(null);
|
const editorRef = useRef(null);
|
||||||
@ -22,8 +22,7 @@ const NewView = ({ newView, leftIndent, closeNewView, addView }) => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
addView(message, newViewType);
|
addView(message, newViewType);
|
||||||
closeNewView();
|
}, [newViewType, idViewMap, addView]);
|
||||||
}, [newViewType, idViewMap, addView, closeNewView]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="tree-node">
|
<div className="tree-node">
|
||||||
@ -48,7 +47,6 @@ const NewView = ({ newView, leftIndent, closeNewView, addView }) => {
|
|||||||
NewView.propTypes = {
|
NewView.propTypes = {
|
||||||
newView: PropTypes.object,
|
newView: PropTypes.object,
|
||||||
leftIndent: PropTypes.number,
|
leftIndent: PropTypes.number,
|
||||||
closeNewView: PropTypes.func,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default NewView;
|
export default NewView;
|
||||||
|
Loading…
Reference in New Issue
Block a user