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 = ""; + }, + } + ); +};