import { useCallback, useMemo } from 'react'; import { getUser, type AuthUser } from '../store/auth'; export function usePermissions(userOverride?: AuthUser | null) { const user = userOverride === undefined ? getUser() : userOverride; const permissions = useMemo(() => user?.permissions ?? [], [user]); const permissionSet = useMemo(() => new Set(permissions), [permissions]); const can = useCallback((permission: string) => permissionSet.has(permission), [permissionSet]); const canAny = useCallback( (items: string[]) => items.some((permission) => permissionSet.has(permission)), [permissionSet], ); return { user, can, canAny, permissions, }; }