"use client"; import Button from '@/components/button/PrimaryButton'; import { ef } from '@/lib/helpers/utfNumbers'; import { ArrowLeft, Edit2, TickCircle, Trash } from 'iconsax-react'; import Link from 'next/link'; import { useRouter, useSearchParams } from 'next/navigation'; import React, { useState } from 'react'; import { useGetAddresses, useSetDefaultAddress, useDeleteAddress } from './hooks/useAddressData'; import { Address } from './types/Types'; import Prompt from '@/components/utils/Prompt'; import { toast } from '@/components/Toast'; import useToggle from '@/hooks/helpers/useToggle'; type Props = object function UserAddressesPage({ }: Props) { const { data: addressesResponse, isLoading } = useGetAddresses(); const router = useRouter(); const searchParams = useSearchParams(); const redirect = searchParams.get('redirect'); const { mutate: setDefault, isPending: isSettingDefault } = useSetDefaultAddress(); const { mutate: deleteAddressMutation, isPending: isDeleting } = useDeleteAddress(); const { state: deleteModalVisible, set: setDeleteModal } = useToggle(); const [selectedAddressId, setSelectedAddressId] = useState(null); const addresses = addressesResponse?.data || []; const handleSetDefault = (addressId: string) => { setDefault(addressId, { onSuccess: () => { toast('آدرس به عنوان پیش‌فرض تنظیم شد', 'success'); if (redirect) { router.replace(redirect); } }, onError: (error) => { const errorMessage = error instanceof Error ? error.message : 'خطا در تنظیم آدرس پیش‌فرض'; toast(errorMessage, 'error'); }, }); }; const handleDeleteClick = (addressId: string) => { setSelectedAddressId(addressId); setDeleteModal(true); }; const handleDeleteConfirm = () => { if (!selectedAddressId) return; deleteAddressMutation(selectedAddressId, { onSuccess: () => { toast('آدرس با موفقیت حذف شد', 'success'); setDeleteModal(false); setSelectedAddressId(null); }, onError: (error) => { const errorMessage = error instanceof Error ? error.message : 'خطا در حذف آدرس'; toast(errorMessage, 'error'); }, }); }; const handleDeleteCancel = () => { setDeleteModal(false); setSelectedAddressId(null); }; const formatAddress = (address: Address) => { return `${address.address}، ${address.city}، ${address.province}`; }; const getEditHref = (addressId: string) => { const base = `address/new?id=${addressId}`; return redirect ? `${base}&redirect=${encodeURIComponent(redirect)}` : base; }; return (

افزودن و انتخاب آدرس

{ router.back() }} />
{isLoading ? (

در حال بارگذاری...

) : addresses.length === 0 ? (

شما هیچ آدرسی ثبت نکرده اید. برای ثبت آدرس دکمه افزودن را بزنید

) : ( addresses.map((address) => (

{address.title}

{address.isDefault && ( پیش‌فرض )}

{formatAddress(address)}

کد پستی: {ef(address.postalCode || 'ثبت نشده')}

تلفن: {ef(address.phone)}

{!address.isDefault && ( )}
)) )}
) } export default UserAddressesPage