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; } };