From 6a718562ee80338fa4ec8511989b6322909e4058 Mon Sep 17 00:00:00 2001 From: Mamalizz Date: Thu, 13 Mar 2025 02:37:08 +0330 Subject: [PATCH] added submit discount code --- .../components/cart/global/CartSummary.vue | 60 ++++++++++++++++--- 1 file changed, 53 insertions(+), 7 deletions(-) diff --git a/frontend/components/cart/global/CartSummary.vue b/frontend/components/cart/global/CartSummary.vue index bdc7912..15ca904 100644 --- a/frontend/components/cart/global/CartSummary.vue +++ b/frontend/components/cart/global/CartSummary.vue @@ -2,10 +2,14 @@ // imports import useGetOrdersCart from "~/composables/api/orders/useGetOrdersCart"; +import useSubmitDiscountCode from "~/composables/api/orders/useSubmitDiscountCode"; +import { useToast } from "~/composables/global/useToast"; +import { QUERY_KEYS } from "~/constants"; // state const route = useRoute(); +const { $queryClient: queryClient } = useNuxtApp(); const discountCode = ref(""); @@ -13,10 +17,39 @@ const discountCode = ref(""); const { data: cart, isLoading: cartIsLoading } = useGetOrdersCart(); +const { addToast } = useToast(); + +const { + mutateAsync: submitDiscountCode, + isPending: submitDiscountCodeIsPending, +} = useSubmitDiscountCode(); + // computed const nextPage: ComputedRef<{ name: string; label: string } | undefined> = computed(() => route.meta.nextPage); + +// methods + +const handleSubmitDiscountCode = () => { + submitDiscountCode( + { code: discountCode.value }, + { + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.cart] }); + }, + onError: () => { + addToast({ + message: "خطایی در ثبت کد تخفیف رخ داد", + options: { + status: "error", + }, + }); + discountCode.value = ""; + }, + } + ); +};