1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-13 13:50:07 +00:00
Files
seahub/frontend/src/metadata/hooks/enable-metadata.js
Michael An c714726411 Encrypted repo do not support metadata (#6959)
* encrypted-repo-do-not-support-metadata

* remove useless

* encrypted repo detail image
2024-10-29 14:01:07 +08:00

54 lines
1.7 KiB
JavaScript

import React, { useContext, useEffect, useState } from 'react';
import metadataAPI from '../api';
import { Utils } from '../../utils/utils';
import toaster from '../../components/toast';
import { seafileAPI } from '../../utils/seafile-api';
// 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, setEnableMetadataManagement] = useState(false);
const [enableMetadata, setEnableExtendedProperties] = useState(false);
useEffect(() => {
seafileAPI.getRepoInfo(repoID).then(res => {
if (res.data.encrypted) {
setEnableMetadataManagement(false);
} else {
setEnableMetadataManagement(window.app.pageOptions.enableMetadataManagement);
}
});
}, [repoID]);
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;
};