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( () => ({ 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 {children}; }