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

60 lines
1.9 KiB
TypeScript

import { useMutation, useQueryClient } from "@tanstack/react-query";
import { useAuthToken } from "../hooks/use-root-data";
import { useToast } from "../hooks/use-toast";
import { createDiscountManagementApi } from "~/utils/api-client-factory";
// Query keys
export const discountKeys = {
all: ["discounts"] as const,
verify: () => [...discountKeys.all, "verify"] as const,
};
// Hook to verify discount code
export function useVerifyDiscountCode() {
const token = useAuthToken();
const queryClient = useQueryClient();
const { toast } = useToast();
return useMutation({
mutationFn: async ({ code, cartId }: { code: number; cartId: string }) => {
try {
const discountApi = createDiscountManagementApi(token);
const response = await discountApi.apiDiscountV1DiscountsVerifyCreate({
data: {
code,
cartId,
},
});
return response;
} catch (error) {
console.error("Error verifying discount code:", error);
throw error;
}
},
onSuccess: (response) => {
if (response.valid) {
toast({
title: "تخفیف",
description: response.message || "تخفیف با موفقیت اعمال شد",
});
} else {
toast({
title: "خطا",
description: response.message || "کد تخفیف نامعتبر است",
variant: "destructive",
});
}
// Invalidate relevant queries (cart details would need to be refreshed)
queryClient.invalidateQueries({ queryKey: ["carts"] });
queryClient.invalidateQueries({ queryKey: ["getCouriersService"] });
},
onError: (error) => {
console.error("Error applying discount code:", error);
toast({
title: "خطا",
description: "کد تخفیف نامعتبر است",
variant: "destructive",
});
},
});
}