Presupuestador_web/client/src/lib/hooks/useAuth/useLogin.tsx

39 lines
1.2 KiB
TypeScript
Raw Normal View History

2024-06-06 11:05:54 +00:00
import { AuthActionResponse, useAuth } from "@/lib/hooks";
import { ILogin_DTO } from "@shared/contexts";
import { UseMutationOptions, useMutation } from "@tanstack/react-query";
import { useNavigate } from "react-router-dom";
import { toast } from "react-toastify";
import { useQueryKey } from "../useQueryKey";
export const useLogin = (params?: UseMutationOptions<AuthActionResponse, Error, ILogin_DTO>) => {
const { onSuccess, onError, ...restParams } = params || {};
const keys = useQueryKey();
const { login } = useAuth();
const navigate = useNavigate();
return useMutation({
mutationKey: keys().auth().action("login").get(),
mutationFn: login,
2024-06-29 19:39:25 +00:00
onSuccess: (data, variables, context) => {
2024-06-06 11:05:54 +00:00
const { success, redirectTo } = data;
if (success && redirectTo) {
2024-07-01 17:12:15 +00:00
navigate(redirectTo || "/", { replace: true });
2024-06-06 11:05:54 +00:00
}
if (onSuccess) {
onSuccess(data, variables, context);
}
},
onError: (error, variables, context) => {
const { message } = error;
2024-06-09 20:04:46 +00:00
console.error(message);
2024-06-06 11:05:54 +00:00
toast.error(message);
if (onError) {
onError(error, variables, context);
}
},
...restParams,
});
};