44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
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;
|
|
}
|
|
};
|