Files
web/src/hooks/login.tsx
2025-02-26 11:54:10 +00:00

23 lines
675 B
TypeScript

import { useContext, useMemo, useSyncExternalStore } from "react";
import { 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,
api: new LNVpsApi(ApiUrl, LoginState.getSigner()),
logout: () => LoginState.logout()
}
: undefined, [session, system]);
}