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:
43
src/router.ts
Normal file
43
src/router.ts
Normal 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;
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user