UNPKG

fastapi-rtk

Version:

A React component library for FastAPI in combination with FastAPI React Toolkit backend, built with Mantine, JsonForms, and Zustand.

92 lines (91 loc) 3.33 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const useQuery = require("../../../../../.external/cjs/@tanstack_react-query@5.89.0_react@18.3.1/@tanstack/react-query/build/modern/useQuery.cjs"); const QueryClientProvider = require("../../../../../.external/cjs/@tanstack_react-query@5.89.0_react@18.3.1/@tanstack/react-query/build/modern/QueryClientProvider.cjs"); const React = require("react"); const authFetch = require("../utils/authFetch.cjs"); const userCRUD = require("../utils/userCRUD.cjs"); const defaultAuth = { getUser: userCRUD.getUser, update: userCRUD.updateUser, signin: authFetch.authSignin, signout: authFetch.authSignout, resetPassword: authFetch.authResetPassword, oauthSignin: authFetch.authOAuthSignin }; function useProvideAuth(baseURL, authQueryProps, auth = defaultAuth) { const queryClient = QueryClientProvider.useQueryClient(); const query = useQuery.useQuery({ queryKey: ["user"], queryFn: ({ signal }) => userCRUD.getUser(baseURL, signal), retry: false, ...authQueryProps }); const [error, setError] = React.useState(); const resetError = React.useCallback(() => setError(void 0), []); const signin = React.useCallback( async ({ username, password }) => { try { resetError(); await auth.signin(baseURL, { username, password }); await queryClient.invalidateQueries({ queryKey: ["user"] }); } catch (error2) { setError({ message: "Could not sign in", originalError: error2 }); } }, [auth, baseURL, queryClient, resetError] ); const signout = React.useCallback(async () => { try { resetError(); await auth.signout(baseURL); await queryClient.resetQueries({ queryKey: ["user"] }); await queryClient.resetQueries({ queryKey: ["info"] }); } catch (error2) { setError({ message: "Could not sign out", originalError: error2 }); } }, [auth, baseURL, queryClient, resetError]); const update = React.useCallback( async (data) => { try { resetError(); await auth.update(baseURL, data); await queryClient.invalidateQueries({ queryKey: ["user"] }); } catch (error2) { setError({ message: "Could not update user", originalError: error2 }); } }, [auth, baseURL, queryClient, resetError] ); const resetPassword = React.useCallback( async (password) => { try { resetError(); await auth.resetPassword(baseURL, password, query.data); } catch (error2) { setError({ message: "Could not reset password", originalError: error2 }); } }, [auth, baseURL, query.data, resetError] ); const oauthSignin = React.useCallback( (provider, popup) => auth.oauthSignin(baseURL, provider, popup, () => queryClient.invalidateQueries({ queryKey: ["user"] })), [auth, baseURL, queryClient] ); const oauth_signin = React.useMemo(() => oauthSignin, [oauthSignin]); return { user: query.isError ? null : query.data, loading: query.isFetching, error: error ? error.message : null, signin, signout, update, resetPassword, oauthSignin, refetch: query.refetch, resetError, // Deprecated, use oauthSignin instead oauth_signin }; } exports.useProvideAuth = useProvideAuth;