strapi-plugin-content-manager
Version:
A powerful UI to easily manage your data.
46 lines (36 loc) • 1.16 kB
JavaScript
import { useMemo } from 'react';
import { useContentManagerEditViewDataManager } from 'strapi-helper-plugin';
function useSelect({ isUserAllowedToEditField, isUserAllowedToReadField, name }) {
const {
isCreatingEntry,
createActionAllowedFields,
readActionAllowedFields,
updateActionAllowedFields,
} = useContentManagerEditViewDataManager();
const isFieldAllowed = useMemo(() => {
if (isUserAllowedToEditField === true) {
return true;
}
const allowedFields = isCreatingEntry ? createActionAllowedFields : updateActionAllowedFields;
return allowedFields.includes(name);
}, [
isCreatingEntry,
createActionAllowedFields,
name,
isUserAllowedToEditField,
updateActionAllowedFields,
]);
const isFieldReadable = useMemo(() => {
if (isUserAllowedToReadField) {
return true;
}
const allowedFields = isCreatingEntry ? [] : readActionAllowedFields;
return allowedFields.includes(name);
}, [isCreatingEntry, isUserAllowedToReadField, name, readActionAllowedFields]);
return {
isCreatingEntry,
isFieldAllowed,
isFieldReadable,
};
}
export default useSelect;