UNPKG

@authduo/authduo

Version:

Free User-sovereign Authentication for the World

122 lines 4.13 kB
import { shadowComponent, loading } from "@benev/slate"; import { manager } from "../../context.js"; import { Passport } from "../../../auth/passport.js"; import { EgressPage } from "../pages/egress/view.js"; import { IngressPage } from "../pages/ingress/view.js"; import { OnboardPage } from "../pages/onboard/view.js"; import { ListPage } from "../../views/pages/list/view.js"; import { EditPage } from "../../views/pages/edit/view.js"; import { CreatePage } from "../../views/pages/create/view.js"; import { DeletePage } from "../../views/pages/delete/view.js"; import stylesCss from "./styles.css.js"; import themeCss from "../../../common/theme.css.js"; export const AuthManager = shadowComponent(use => { use.styles([themeCss, stylesCss]); const { passportStore, storagePersistence, situationOp } = manager; use.once(() => storagePersistence.check()); function gotoHome() { if (passportStore.list().length === 0) gotoOnboard(); else gotoList(); } function gotoList() { situationOp.load(async () => ({ kind: "list", passportStore, onEdit: gotoEdit, onCreate: gotoCreate, onEgress: passports => gotoEgress(passports, gotoHome), onIngress: () => gotoIngress(undefined, gotoHome), })); } async function gotoOnboard() { const passport = await Passport.generate(); situationOp.load(async () => ({ kind: "onboard", passport, onDone: gotoHome, onIngress: () => gotoIngress(undefined, gotoHome), onSaveNewPassport: passport => { passportStore.add(passport); storagePersistence.request(); }, })); } async function gotoCreate() { const passport = await Passport.generate(); situationOp.load(async () => ({ kind: "create", passport, onCancel: gotoHome, onComplete: passport => { passportStore.add(passport); storagePersistence.request(); gotoHome(); }, })); } function gotoEdit(passport) { situationOp.load(async () => ({ kind: "edit", passport, onCancel: gotoHome, onDelete: gotoDelete, onComplete: passport => { passportStore.add(passport); storagePersistence.request(); gotoHome(); }, })); } function gotoDelete(passport) { situationOp.load(async () => ({ kind: "delete", passport, onCancel: gotoHome, onComplete: passport => { passportStore.delete(passport); storagePersistence.request(); gotoHome(); }, })); } function gotoEgress(passports, onBack) { situationOp.load(async () => ({ kind: "egress", passports, onBack, })); } function gotoIngress(passports, onBack) { situationOp.load(async () => ({ kind: "ingress", passports, onBack, onAddPassports: passports => passportStore.add(...passports), })); } use.once(gotoHome); const page = loading.braille(situationOp, situation => { switch (situation.kind) { case "list": return ListPage([situation]); case "onboard": return OnboardPage([situation]); case "create": return CreatePage([situation]); case "edit": return EditPage([situation]); case "delete": return DeletePage([situation]); case "egress": return EgressPage([situation]); case "ingress": return IngressPage([situation]); default: throw new Error("unknown situation"); } }); return page; }); //# sourceMappingURL=element.js.map