mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-08 18:30:53 +00:00
* feat: metadata longtext editor * feat: optimize code * feat: optimize code * feat: optimize code * feat: delete code * feat: update code * feat: update font * feat: update font * feat: optimize code --------- Co-authored-by: 杨国璇 <ygx@Hello-word.local>
60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
import React, { useEffect } from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import LibDetail from './lib-details';
|
|
import DirentDetail from './dirent-details';
|
|
import ObjectUtils from '../../metadata/metadata-view/utils/object-utils';
|
|
import { MetadataContext } from '../../metadata';
|
|
|
|
const Index = React.memo(({ repoID, path, dirent, currentRepoInfo, repoTags, fileTags, onClose, onFileTagChanged }) => {
|
|
|
|
useEffect(() => {
|
|
// init context
|
|
const context = new MetadataContext();
|
|
window.sfMetadataContext = context;
|
|
window.sfMetadataContext.init({ repoID, repoInfo: currentRepoInfo });
|
|
return () => {
|
|
window.sfMetadataContext.destroy();
|
|
delete window['sfMetadataContext'];
|
|
};
|
|
}, [repoID, currentRepoInfo]);
|
|
|
|
if (path === '/' && !dirent) {
|
|
return (
|
|
<LibDetail currentRepoInfo={currentRepoInfo} onClose={onClose} />
|
|
);
|
|
}
|
|
return (
|
|
<DirentDetail
|
|
repoID={repoID}
|
|
path={path}
|
|
dirent={dirent}
|
|
currentRepoInfo={currentRepoInfo}
|
|
repoTags={repoTags}
|
|
fileTags={fileTags}
|
|
onFileTagChanged={onFileTagChanged}
|
|
onClose={onClose}
|
|
/>
|
|
);
|
|
}, (props, nextProps) => {
|
|
const isChanged = props.repoID !== nextProps.repoID ||
|
|
props.path !== nextProps.path ||
|
|
!ObjectUtils.isSameObject(props.dirent, nextProps.dirent) ||
|
|
!ObjectUtils.isSameObject(props.currentRepoInfo, nextProps.currentRepoInfo) ||
|
|
JSON.stringify(props.repoTags || []) !== JSON.stringify(nextProps.repoTags || []) ||
|
|
JSON.stringify(props.fileTags || []) !== JSON.stringify(nextProps.fileTags || []);
|
|
return !isChanged;
|
|
});
|
|
|
|
Index.propTypes = {
|
|
repoID: PropTypes.string,
|
|
path: PropTypes.string,
|
|
dirent: PropTypes.object,
|
|
currentRepoInfo: PropTypes.object,
|
|
repoTags: PropTypes.array,
|
|
fileTags: PropTypes.array,
|
|
onClose: PropTypes.func,
|
|
onFileTagChanged: PropTypes.func,
|
|
};
|
|
|
|
export default Index;
|