Primitives / foldkit-primitives/device
permissions
function · packages/primitives/src/device/permissions.ts:78
function permissions<const Name extends string>(config: {
readonly name: Name
readonly create?:
((navigator: Navigator) => PermissionsHandle | null) | undefined
}): Bundle.Bundle<
Name,
{ readonly names: ReadonlyArray<string> },
{
readonly states: { readonly [x: string]: 'denied' | 'granted' | 'prompt' }
readonly lastError: string | null
},
| { readonly _tag: 'Cleared' }
| {
readonly _tag: 'Changed'
readonly name: string
readonly state: 'denied' | 'granted' | 'prompt'
}
| { readonly _tag: 'Failed'; readonly message: string }
| {
readonly _tag: 'Snapshot'
readonly states: { readonly [x: string]: 'denied' | 'granted' | 'prompt' }
},
never,
never,
ManagedResource.ManagedResourceService<'permissions'>,
void,
Readonly<{
watch: ManagedResource.Entry<
PermissionsModel,
PermissionsMessage,
Option.Option<ReadonlyArray<string>>,
Acquired,
WatchService,
(acquired: Acquired) => PermissionsMessage
>
}>,
{}
>Permission states as a bundle factory: queried on placement, kept current
by each status object's onchange. A resource holds the status objects
(they cannot live in the Model); its queue feeds the subscription, and
release detaches every handler. An unknown permission name fails the
acquire; an unknown state string fails it too — both become Failed,
never Model facts.