UNPKG

@daveyplate/better-auth-persistent

Version:

Persistent session management for Better Auth

30 lines (25 loc) 926 B
import { useStore } from "@nanostores/react" import { useEffect, useMemo } from "react" import { emptyResult } from "../empty-result" import { initPersistSession } from "../init-persist-session" import { $persistentSession } from "../stores/persistent-session" import type { AnyAuthClient } from "../types/any-auth-client" import { useIsHydrated } from "./use-hydrated" export function useSession<TAuthClient extends AnyAuthClient>( authClient: TAuthClient ) { const isHydrated = useIsHydrated() const store = useStore($persistentSession) useEffect(() => { if (authClient) initPersistSession(authClient) }, [authClient]) const result = useMemo(() => { return isHydrated ? { ...store, data: store.data as TAuthClient["$Infer"]["Session"] | null } : emptyResult }, [isHydrated, store]) return result }