mirror of
https://github.com/haiwen/seahub.git
synced 2025-04-28 03:10:45 +00:00
feat: metadata status callback (#7716)
* feat: metadata status callback * feat: optimzie code --------- Co-authored-by: 杨国璇 <ygx@Hello-word.local>
This commit is contained in:
parent
a865aecb6f
commit
53bedae485
@ -7,7 +7,7 @@ import { MetadataAIOperationsProvider } from './metadata-ai-operation';
|
|||||||
// This hook provides content related to seahub interaction, such as whether to enable extended attributes
|
// This hook provides content related to seahub interaction, such as whether to enable extended attributes
|
||||||
const MetadataStatusContext = React.createContext(null);
|
const MetadataStatusContext = React.createContext(null);
|
||||||
|
|
||||||
export const MetadataStatusProvider = ({ repoID, repoInfo, hideMetadataView, updateUsedRepoTags, clearRepoTags, children }) => {
|
export const MetadataStatusProvider = ({ repoID, repoInfo, hideMetadataView, statusCallback, children }) => {
|
||||||
const enableMetadataManagement = useMemo(() => {
|
const enableMetadataManagement = useMemo(() => {
|
||||||
if (repoInfo?.encrypted) return false;
|
if (repoInfo?.encrypted) return false;
|
||||||
return window.app.pageOptions.enableMetadataManagement;
|
return window.app.pageOptions.enableMetadataManagement;
|
||||||
@ -60,9 +60,6 @@ export const MetadataStatusProvider = ({ repoID, repoInfo, hideMetadataView, upd
|
|||||||
if (!enableMetadata) {
|
if (!enableMetadata) {
|
||||||
cancelMetadataURL();
|
cancelMetadataURL();
|
||||||
}
|
}
|
||||||
if (enableTags) {
|
|
||||||
updateUsedRepoTags();
|
|
||||||
}
|
|
||||||
setEnableTags(enableTags);
|
setEnableTags(enableTags);
|
||||||
setTagsLang(tagsLang || 'en');
|
setTagsLang(tagsLang || 'en');
|
||||||
setDetailsSettings(JSON.parse(detailsSettings));
|
setDetailsSettings(JSON.parse(detailsSettings));
|
||||||
@ -79,6 +76,11 @@ export const MetadataStatusProvider = ({ repoID, repoInfo, hideMetadataView, upd
|
|||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
}, [repoID, enableMetadataManagement]);
|
}, [repoID, enableMetadataManagement]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
statusCallback && statusCallback({ enableMetadata, enableTags });
|
||||||
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
}, [enableMetadata, enableTags]);
|
||||||
|
|
||||||
const updateEnableMetadata = useCallback((newValue) => {
|
const updateEnableMetadata = useCallback((newValue) => {
|
||||||
if (newValue === enableMetadata) return;
|
if (newValue === enableMetadata) return;
|
||||||
if (!newValue) {
|
if (!newValue) {
|
||||||
@ -96,12 +98,10 @@ export const MetadataStatusProvider = ({ repoID, repoInfo, hideMetadataView, upd
|
|||||||
if (newValue === enableTags && lang === tagsLang) return;
|
if (newValue === enableTags && lang === tagsLang) return;
|
||||||
if (!newValue) {
|
if (!newValue) {
|
||||||
cancelMetadataURL(true);
|
cancelMetadataURL(true);
|
||||||
clearRepoTags();
|
|
||||||
}
|
}
|
||||||
setEnableTags(newValue);
|
setEnableTags(newValue);
|
||||||
if (newValue) updateUsedRepoTags();
|
|
||||||
setTagsLang(lang);
|
setTagsLang(lang);
|
||||||
}, [enableTags, tagsLang, cancelMetadataURL, clearRepoTags, updateUsedRepoTags]);
|
}, [enableTags, tagsLang, cancelMetadataURL]);
|
||||||
|
|
||||||
const updateEnableOCR = useCallback((newValue) => {
|
const updateEnableOCR = useCallback((newValue) => {
|
||||||
if (newValue === enableOCR) return;
|
if (newValue === enableOCR) return;
|
||||||
|
@ -2245,6 +2245,14 @@ class LibContentView extends React.Component {
|
|||||||
this.setState({ isDirentSelected });
|
this.setState({ isDirentSelected });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
metadataStatusCallback = ({ enableMetadata, enableTags }) => {
|
||||||
|
if (enableMetadata && enableTags) {
|
||||||
|
this.updateUsedRepoTags();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.clearRepoTags();
|
||||||
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { repoID } = this.props;
|
const { repoID } = this.props;
|
||||||
let { currentRepoInfo, userPerm, isCopyMoveProgressDialogShow, isDeleteFolderDialogOpen, errorMsg,
|
let { currentRepoInfo, userPerm, isCopyMoveProgressDialogShow, isDeleteFolderDialogOpen, errorMsg,
|
||||||
@ -2320,7 +2328,7 @@ class LibContentView extends React.Component {
|
|||||||
}
|
}
|
||||||
const detailDirent = currentDirent || currentNode?.object || null;
|
const detailDirent = currentDirent || currentNode?.object || null;
|
||||||
return (
|
return (
|
||||||
<MetadataStatusProvider repoID={repoID} repoInfo={currentRepoInfo} hideMetadataView={this.hideMetadataView} updateUsedRepoTags={this.updateUsedRepoTags} clearRepoTags={this.clearRepoTags} >
|
<MetadataStatusProvider repoID={repoID} repoInfo={currentRepoInfo} hideMetadataView={this.hideMetadataView} statusCallback={this.metadataStatusCallback} >
|
||||||
<TagsProvider repoID={repoID} currentPath={path} repoInfo={currentRepoInfo} selectTagsView={this.onTreeNodeClick} >
|
<TagsProvider repoID={repoID} currentPath={path} repoInfo={currentRepoInfo} selectTagsView={this.onTreeNodeClick} >
|
||||||
<MetadataProvider repoID={repoID} currentPath={path} repoInfo={currentRepoInfo} selectMetadataView={this.onTreeNodeClick} >
|
<MetadataProvider repoID={repoID} currentPath={path} repoInfo={currentRepoInfo} selectMetadataView={this.onTreeNodeClick} >
|
||||||
<CollaboratorsProvider repoID={repoID}>
|
<CollaboratorsProvider repoID={repoID}>
|
||||||
|
Loading…
Reference in New Issue
Block a user