@adonis-agora/authkit-react
Version:
Frontend ergonomics over AuthKit for AdonisJS + Inertia + React apps: a typed useAuth() hook, role-gating hooks and gating components.
29 lines (28 loc) • 1.04 kB
JavaScript
import { QueryClient } from '@tanstack/react-query';
import { createContext, createElement, useContext } from 'react';
import { createAuthkitClient } from './client.js';
const AuthkitClientContext = createContext(null);
export function useAuthkitClient() {
const client = useContext(AuthkitClientContext);
if (!client) {
throw new Error('[AuthkitClient] useAuthkitClient() chamado fora de <AuthkitClientProvider>. ' +
'Envolva sua árvore com <AuthkitClientProvider>.');
}
return client;
}
export function AuthkitClientProvider({ client, opts, children }) {
const resolved = client ?? createAuthkitClient(opts);
return createElement(AuthkitClientContext.Provider, { value: resolved }, children);
}
export function createAuthkitQueryClient() {
return new QueryClient({
defaultOptions: {
queries: {
staleTime: 30_000,
gcTime: 5 * 60_000,
retry: 1,
refetchOnWindowFocus: false,
},
},
});
}