1
0
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:
杨国璇
2024-09-03 10:46:53 +08:00
committed by GitHub
parent 4a2b160c23
commit 5672cf51b6
20 changed files with 286 additions and 84 deletions

View 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;
};