Vitron-Front/app/requestHandler/use-auth-hooks.tsx
2026-04-29 01:44:16 +03:30

64 lines
1.8 KiB
TypeScript

import { useMutation, useQueryClient } from "@tanstack/react-query";
import { createUserManagementApi } from "~/utils/api-client-factory";
export function useServiceSendOtp(
phoneNumber: string,
setEnableVerifySection: (enable: boolean) => void
) {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async () => {
const userApi = createUserManagementApi();
try {
await userApi.apiUserV1RegisterCreate({
data: { phoneNumber },
});
setEnableVerifySection(true);
return true;
} catch (error) {
console.log("error on send otp", error);
throw new Error("Failed to send OTP");
}
},
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ["sendOtpService"] });
},
});
}
// New service to send OTP and phone_number
export function useServiceVerifyOtp(
phoneNumber: string,
otp: string,
toast: (toast: {
title: string;
description?: string;
variant?: "default" | "destructive";
}) => void
) {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async () => {
const userApi = createUserManagementApi();
try {
const response = await userApi.apiUserV1VerifyOtpCreate({
data: { phoneNumber, otp },
});
return response;
} catch (error) {
console.log("error on verify otp", error);
toast({
description: "کد تایید یا شماره موبایل اشتباه است.",
title: "خطایی رخ داد.",
variant: "destructive",
});
throw error;
}
},
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ["VerifyOtpService"] });
queryClient.invalidateQueries();
},
});
}