@sv-use/core
Version:
A collection of Svelte 5 utilities.
44 lines (43 loc) • 1.2 kB
JavaScript
import { onMount } from 'svelte';
/**
* Retrieves the status of a given permission.
* @see https://svelte-librarian.github.io/sv-use/docs/core/get-permission
*/
export function getPermission(nameOrDesc, options = {}) {
const { exposeControls = false } = options;
const _descriptor = typeof nameOrDesc === 'string' ? { name: nameOrDesc } : nameOrDesc;
let _current = $state('prompt');
let _isSupported = $state(false);
function query() {
return navigator.permissions.query(_descriptor);
}
onMount(async () => {
if (!('permissions' in navigator))
return;
try {
const status = await query();
_isSupported = true;
_current = status.state;
status.onchange = async () => {
_current = (await query()).state;
};
}
catch {
/* empty */
}
});
if (exposeControls) {
return {
get isSupported() {
return _isSupported;
},
get current() {
return _current;
},
query
};
}
else {
return _current;
}
}