UNPKG

sanity

Version:

Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches

44 lines (36 loc) 1.13 kB
import {useMemo} from 'react' import {useTemplatePermissions} from '../../../../store' import {useSource} from '../../../source' import {type NewDocumentOption} from './types' interface NewDocumentOptionsValue { canCreateDocument: boolean loading: boolean options: NewDocumentOption[] } /** * @internal */ export function useNewDocumentOptions(): NewDocumentOptionsValue { const { __internal: {staticInitialValueTemplateItems}, } = useSource() const [permissions, loading] = useTemplatePermissions({ templateItems: staticInitialValueTemplateItems, }) const canCreateDocument = permissions?.some((p) => staticInitialValueTemplateItems.some((t) => t.id === p.id)) || false const optionsWithPermissions = useMemo(() => { return staticInitialValueTemplateItems.map((item) => { return { ...item, title: item?.title || item.id, hasPermission: permissions?.find((p) => p.id === item.id)?.granted || false, } }) }, [permissions, staticInitialValueTemplateItems]) return { canCreateDocument, loading, options: optionsWithPermissions, } }