set up service worker caching, fix perf issues with rerenders, split code into more modules, switch to a green theme, add modal for updating site via service worker

This commit is contained in:
2024-02-02 17:25:32 -05:00
parent ccfe6c60cd
commit ea4c8a3a30
28 changed files with 5278 additions and 480 deletions

43
src/router.ts Normal file
View File

@@ -0,0 +1,43 @@
import { Hole } from "uhtml";
import { RequestPage, generateRequestUrl } from "./routes/request.ts";
import { SendPage } from "./routes/send.ts";
import { ReceivePage, decryptData } from "./routes/receive.ts";
import { NotFoundPage } from "./routes/notfound.ts";
import { LOCAL_STORAGE_KEYS, page, params } from "./utils/store.ts";
export enum Route {
Request = "request",
Send = "send",
Receive = "receive",
}
export const routeToPage = (toPage: Route): Hole => {
switch (toPage) {
case Route.Request:
return RequestPage();
case Route.Send:
return SendPage();
case Route.Receive:
return ReceivePage();
default:
return NotFoundPage;
}
};
export const hashChange = () => {
const updatedParams = new URLSearchParams(window.location.hash.slice(1));
params.value = updatedParams;
const p = params.value.get("p");
const iv = params.value.get("iv");
const m = params.value.get("m");
if (p && iv && m) {
decryptData({ p, iv, m });
page.value = Route.Receive;
} else if (p) {
localStorage.setItem(LOCAL_STORAGE_KEYS.REQUEST_PUBLIC_KEY, p);
page.value = Route.Send;
} else {
generateRequestUrl();
page.value = Route.Request;
}
};