mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-17 07:41:26 +00:00
feat: sdoc metadata (#6687)
* feat: sdoc metadata * feat: update code --------- Co-authored-by: 杨国璇 <ygx@Hello-word.local>
This commit is contained in:
45
frontend/src/metadata/hooks/enable-metadata.js
Normal file
45
frontend/src/metadata/hooks/enable-metadata.js
Normal file
@@ -0,0 +1,45 @@
|
||||
import React, { useContext, useEffect, useMemo, useState } from 'react';
|
||||
import metadataAPI from '../api';
|
||||
import { Utils } from '../../utils/utils';
|
||||
import toaster from '../../components/toast';
|
||||
|
||||
// This hook provides content related to seahub interaction, such as whether to enable extended attributes
|
||||
const EnableMetadataContext = React.createContext(null);
|
||||
|
||||
export const EnableMetadataProvider = ({ repoID, children }) => {
|
||||
const enableMetadataManagement = useMemo(() => {
|
||||
return window.app.pageOptions.enableMetadataManagement;
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [window.app.pageOptions.enableMetadataManagement]);
|
||||
|
||||
const [enableMetadata, setEnableExtendedProperties] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
if (!enableMetadataManagement) {
|
||||
return;
|
||||
}
|
||||
metadataAPI.getMetadataStatus(repoID).then(res => {
|
||||
const enableMetadata = res.data.enabled;
|
||||
setEnableExtendedProperties(enableMetadata);
|
||||
}).catch(error => {
|
||||
const errorMsg = Utils.getErrorMsg(error, true);
|
||||
toaster.danger(errorMsg);
|
||||
setEnableExtendedProperties(false);
|
||||
});
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [repoID, enableMetadataManagement]);
|
||||
|
||||
return (
|
||||
<EnableMetadataContext.Provider value={{ enableMetadata }}>
|
||||
{children}
|
||||
</EnableMetadataContext.Provider>
|
||||
);
|
||||
};
|
||||
|
||||
export const useEnableMetadata = () => {
|
||||
const context = useContext(EnableMetadataContext);
|
||||
if (!context) {
|
||||
throw new Error('\'EnableMetadataContext\' is null');
|
||||
}
|
||||
return context;
|
||||
};
|
Reference in New Issue
Block a user