sw loading

This commit is contained in:
Martti Malmi 2023-11-19 12:26:08 +02:00
parent 7ec02f9bf5
commit 7063ae3584
4 changed files with 20 additions and 15 deletions

View File

@ -10,7 +10,7 @@ const ErrorPage = () => {
return ( return (
<div className="main-content page"> <div className="main-content page">
<h4> <h4>
<FormattedMessage defaultMessage="An error has occured!" /> <FormattedMessage defaultMessage="An error has occured!" id="error.title" />
</h4> </h4>
<AsyncButton <AsyncButton
onClick={async () => { onClick={async () => {
@ -18,7 +18,7 @@ const ErrorPage = () => {
globalThis.localStorage.clear(); globalThis.localStorage.clear();
globalThis.location.href = "/"; globalThis.location.href = "/";
}}> }}>
<FormattedMessage defaultMessage="Clear cache and reload" /> <FormattedMessage defaultMessage="Clear cache and reload" id="error.clear-cache" />
</AsyncButton> </AsyncButton>
{ {
<pre> <pre>

View File

@ -21,7 +21,7 @@ import {
encodeTLVEntries, encodeTLVEntries,
socialGraphInstance, socialGraphInstance,
} from "@snort/system"; } from "@snort/system";
import PowWorkerURL from '@snort/system/dist/pow-worker.js?worker&url'; import PowWorkerURL from '@snort/system/src/pow-worker.ts?worker&url';
import { SnortContext } from "@snort/system-react"; import { SnortContext } from "@snort/system-react";
import { removeUndefined, throwIfOffline } from "@snort/shared"; import { removeUndefined, throwIfOffline } from "@snort/shared";

View File

@ -1,36 +1,40 @@
// Import the service worker with Vite's special syntax
import ServiceWorkerURL from "./service-worker?worker&url";
export function register() { export function register() {
if ("serviceWorker" in navigator) { if ('serviceWorker' in navigator) {
window.addEventListener("load", () => { window.addEventListener('load', () => {
registerValidSW("/service-worker.js"); registerValidSW(ServiceWorkerURL);
}); });
} }
} }
async function registerValidSW(swUrl: string) { async function registerValidSW(swUrl: string) {
try { try {
const registration = await navigator.serviceWorker.register(swUrl); const registration = await navigator.serviceWorker.register(swUrl,
{ type: 'module' });
registration.onupdatefound = () => { registration.onupdatefound = () => {
const installingWorker = registration.installing; const installingWorker = registration.installing;
if (installingWorker == null) { if (installingWorker == null) {
return; return;
} }
installingWorker.onstatechange = () => { installingWorker.onstatechange = () => {
if (installingWorker.state === "installed") { if (installingWorker.state === 'installed') {
if (navigator.serviceWorker.controller) { if (navigator.serviceWorker.controller) {
console.log("Service worker updated, pending reload"); console.log('Service worker updated, pending reload');
} else { } else {
console.log("Content is cached for offline use."); console.log('Content is cached for offline use.');
} }
} }
}; };
}; };
} catch (e) { } catch (e) {
console.error("Error during service worker registration:", e); console.error('Error during service worker registration:', e);
} }
} }
export async function unregister() { export async function unregister() {
if ("serviceWorker" in navigator) { if ('serviceWorker' in navigator) {
const registration = await navigator.serviceWorker.ready; const registration = await navigator.serviceWorker.ready;
await registration.unregister(); await registration.unregister();
} }

View File

@ -16,9 +16,10 @@ export class PowWorker implements PowMiner {
#worker: Worker; #worker: Worker;
#queue: Map<string, PowQueue> = new Map(); #queue: Map<string, PowQueue> = new Map();
constructor(script: string) { constructor(workerPath: string) {
this.#worker = new Worker(script, { this.#worker = new Worker(new URL(workerPath, import.meta.url), {
name: "POW", type: 'module',
name: 'POW',
}); });
this.#worker.onerror = ev => { this.#worker.onerror = ev => {
console.error(ev); console.error(ev);