From 90c3f6dbec45eba623b44acf32693b94166d98f8 Mon Sep 17 00:00:00 2001 From: Mamalizz Date: Fri, 18 Apr 2025 19:49:27 +0330 Subject: [PATCH] updated selecting address logic --- .../components/cart/delivery/AddressItem.vue | 78 +++++++++++++------ 1 file changed, 54 insertions(+), 24 deletions(-) diff --git a/frontend/components/cart/delivery/AddressItem.vue b/frontend/components/cart/delivery/AddressItem.vue index 7151960..8f28869 100644 --- a/frontend/components/cart/delivery/AddressItem.vue +++ b/frontend/components/cart/delivery/AddressItem.vue @@ -2,6 +2,7 @@ // imports import useDeleteAddress from "~/composables/api/account/useDeleteAddress"; +import useSetOrderAddress from "~/composables/api/orders/useSetOrderAddress"; import { useToast } from "~/composables/global/useToast"; import { QUERY_KEYS } from "~/constants"; @@ -15,13 +16,11 @@ type Props = { // props -withDefaults(defineProps(), { +const props = withDefaults(defineProps(), { selectable: true, }); -// emit - -const emit = defineEmits(["select"]); +const { address } = toRefs(props); // state @@ -31,19 +30,48 @@ const { addToast } = useToast(); // queries -const { mutateAsync: deleteAddress, isPending: deleteAddressIsPending } = - useDeleteAddress(); +const { mutateAsync: deleteAddress, isPending: deleteAddressIsPending } = useDeleteAddress(); + +const { mutateAsync: setOrderAddress, isPending: setOrderAddressIsPending } = useSetOrderAddress(); // methods +const handleSelectAddress = () => { + setOrderAddress( + { address_id: address.value?.id! }, + { + onSettled: () => { + queryClient.invalidateQueries({ + queryKey: [QUERY_KEYS.cart], + }); + queryClient.invalidateQueries({ + queryKey: [QUERY_KEYS.addresses], + }); + }, + onError: () => { + addToast({ + message: "در انتخاب آدرس خطایی رخ داد", + options: { + description: "لطفا مجدد تلاش کنید", + }, + }); + }, + } + ); +}; + const handleDeleteAddress = (id: number) => { deleteAddress( { id }, { onSuccess: () => { + queryClient.invalidateQueries({ + queryKey: [QUERY_KEYS.cart], + }); queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.addresses], }); + addToast({ message: "آدرس با موفقیت حذف شد", options: { @@ -66,29 +94,30 @@ const handleDeleteAddress = (id: number) => {