1
0
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:
Aries 2025-04-08 11:21:36 +08:00 committed by GitHub
parent 641eb1fca5
commit b28e97970f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 6 additions and 13 deletions

View File

@ -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);

View File

@ -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>

View File

@ -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 (

View File

@ -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;