mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-06 15:52:04 +00:00
37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
import { useMemo, type ReactNode } from "react";
|
|
import { useChangePassword } from "@/domain/auth/use-cases/use-change-password";
|
|
import { useLogin, useLogout, useSession } from "@/domain/auth/use-cases/use-login";
|
|
import { AuthContext, type AuthContextValue } from "@/providers/auth-context";
|
|
|
|
export function AuthProvider({ children }: { children: ReactNode }) {
|
|
const sessionQuery = useSession();
|
|
const loginMutation = useLogin();
|
|
const logoutMutation = useLogout();
|
|
const changePasswordMutation = useChangePassword();
|
|
|
|
const value = useMemo<AuthContextValue>(
|
|
() => ({
|
|
user: sessionQuery.data,
|
|
isAuthenticated: Boolean(sessionQuery.data),
|
|
isLoading: sessionQuery.isLoading,
|
|
error: sessionQuery.error,
|
|
login: (credentials) => loginMutation.mutate(credentials),
|
|
logout: () => logoutMutation.mutate(),
|
|
changePassword: (data) => changePasswordMutation.mutate(data),
|
|
isLoggingIn: loginMutation.isPending,
|
|
isLoggingOut: logoutMutation.isPending,
|
|
isChangingPassword: changePasswordMutation.isPending,
|
|
loginError: loginMutation.error,
|
|
}),
|
|
[
|
|
sessionQuery.data,
|
|
sessionQuery.isLoading,
|
|
sessionQuery.error,
|
|
loginMutation,
|
|
logoutMutation,
|
|
changePasswordMutation,
|
|
],
|
|
);
|
|
|
|
return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;
|
|
}
|