import { Link, useNavigate } from "@remix-run/react"; import { MapPin, Menu, Pencil, Plus, Trash, X } from "lucide-react"; import { useEffect, useState } from "react"; import ProfilePagesHeader from "../components/ProfilePagesHeader"; import { MetaFunction } from "@remix-run/node"; import { useServiceDeleteAddress, useServiceGetAddresses, } from "../utils/RequestHandler"; import { Button } from "../components/ui/button"; import { Drawer, DrawerContent, DrawerHeader } from "../components/ui/drawer"; import { Dialog, DialogContent, DialogOverlay } from "../components/ui/dialog"; import { useToast } from "../hooks/use-toast"; import { Address } from "src/api/types"; import UiProvider from "~/components/UiProvider"; export const meta: MetaFunction = () => { const title = "آدرس‌های من | ویترون"; const description = "مدیریت آدرس‌های ارسال سفارشات در ویترون"; const imageUrl = "https://vitrownstatics.s3.ir-thr-at1.arvanstorage.ir/SVG-06.svg?versionId="; return [ { title }, { name: "description", content: description }, { name: "keywords", content: "آدرس، مدیریت آدرس، آدرس ارسال، ویترون", }, { name: "robots", content: "noindex, follow" }, // Open Graph { property: "og:type", content: "website" }, { property: "og:title", content: title }, { property: "og:description", content: description }, { property: "og:image", content: imageUrl }, { property: "og:site_name", content: "ویترون" }, { property: "og:locale", content: "fa_IR" }, // Twitter Card { name: "twitter:card", content: "summary_large_image" }, { name: "twitter:title", content: title }, { name: "twitter:description", content: description }, { name: "twitter:image", content: imageUrl }, ]; }; export default function Locaton() { return (

آدرس‌های من

); } const MainContent = () => { const { data: dataAddress, isFetching: isFetchingAddress, isError, refetch, } = useServiceGetAddresses(); return (
{dataAddress?.map((address: Address, index: number) => { return ( ); })}
); }; const AddressRow = ({ address, isLastAddress, }: { address: Address; isLastAddress: boolean; }) => { const [isOpen, setIsOpen] = useState(false); const toggleDrawer = () => { setIsOpen(!isOpen); }; return ( <>
toggleDrawer()} onKeyDown={() => {}} role="button" tabIndex={0} className={`w-full flex gap-2 items-center py-4 ${isLastAddress ? "border-b" : ""}`} >

{address?.title}

{address?.mainAddress}

); }; export const AdderssSettingDrawer = ({ isOpen, setIsOpen, address, }: { isOpen: boolean; setIsOpen: (open: boolean) => void; address: Address | null; }) => { const [deleteModalOpen, setDeleteModalOpen] = useState(false); const navigate = useNavigate(); return ( <>
setIsOpen(false)} className="absolute size-6 top-2 right-3" />

تنظیمات آدرس

{address?.title}

{address?.mainAddress}

); }; const DeleteAddressModal = ({ address, open, onOpenChange, }: { address: Address | null; open: boolean; onOpenChange: (open: boolean) => void; }) => { const { toast } = useToast(); const deleteAddressMutation = useServiceDeleteAddress( address?.id || "", address?.title || "", toast ); useEffect(() => { if (deleteAddressMutation.data) { onOpenChange(false); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [deleteAddressMutation.data, deleteAddressMutation.error]); const onDelete = async () => { if (!deleteAddressMutation.isPending) { try { onOpenChange(false); await deleteAddressMutation.mutateAsync(); toast({ title: "آدرس با موفقیت حذف شد", description: "آدرس شما با موفقیت حذف شد.", }); } catch (error) { toast({ title: "خطا در حذف آدرس", description: "متاسفانه مشکلی در حذف آدرس پیش آمده است. لطفا دوباره تلاش کنید.", variant: "destructive", }); } } }; return (

حذف آدرس

مطمئن هستید که آدرس ''{address?.title}'' حذف شود؟

); };