21 lines
588 B
JavaScript
21 lines
588 B
JavaScript
|
|
import { useMemo } from 'react'
|
||
|
|
import { useSession } from '../context/SessionContext.jsx'
|
||
|
|
|
||
|
|
export function useCapabilities() {
|
||
|
|
const { context, entitlements } = useSession()
|
||
|
|
|
||
|
|
const capabilities = useMemo(() => {
|
||
|
|
const fromContext = context?.capabilities || []
|
||
|
|
const fromEntitlements = entitlements?.capabilities || []
|
||
|
|
const merged = new Set([...fromContext, ...fromEntitlements])
|
||
|
|
return merged
|
||
|
|
}, [context, entitlements])
|
||
|
|
|
||
|
|
const hasCapability = (key) => {
|
||
|
|
if (!key) return true
|
||
|
|
return capabilities.has(key)
|
||
|
|
}
|
||
|
|
|
||
|
|
return { capabilities, hasCapability }
|
||
|
|
}
|