Files
web/src/hooks/login.tsx
Kieran 9d70de9b8a
All checks were successful
continuous-integration/drone/push Build is passing
feat: currency selector
2025-03-28 14:29:00 +00:00

29 lines
864 B
TypeScript

import { useContext, useMemo, useSyncExternalStore } from "react";
import { LoginSession, LoginState } from "../login";
import { SnortContext } from "@snort/system-react";
import { LNVpsApi } from "../api";
import { ApiUrl } from "../const";
export default function useLogin() {
const session = useSyncExternalStore(
(c) => LoginState.hook(c),
() => LoginState.snapshot(),
);
const system = useContext(SnortContext);
return useMemo(
() =>
session
? {
type: session.type,
publicKey: session.publicKey,
system,
currency: session.currency,
api: new LNVpsApi(ApiUrl, LoginState.getSigner()),
update: (fx: (ses: LoginSession) => void) => LoginState.updateSession(fx),
logout: () => LoginState.logout(),
}
: undefined,
[session, system],
);
}