Files
ncd-fe/packages/pl-fe/src/utils/sw.ts
marcin mikołajczak 07085b431e pl-fe: fix?
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
2024-09-18 21:10:07 +02:00

34 lines
941 B
TypeScript

/** Register the ServiceWorker. */
const registerSW = (path: string) => {
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register?.(path, { scope: '/' });
}
};
/** Prevent a new ServiceWorker from being installed. */
const lockSW = () => {
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register = () => {
throw new Error('ServiceWorker already registered.');
};
}
};
/** Unregister the ServiceWorker */
// https://stackoverflow.com/a/49771828/8811886
const unregisterSW = async(): Promise<void> => {
if (navigator.serviceWorker) {
// FIXME: this only works if using a single tab.
// Send a message to sw.js instead to refresh all tabs.
const registrations = await navigator.serviceWorker.getRegistrations();
const unregisterAll = registrations.map(r => r.unregister());
await Promise.all(unregisterAll);
}
};
export {
registerSW,
unregisterSW,
lockSW,
};