"use client"; import { useCallback, useEffect, useState } from "react"; import { ChevronLeft, ChevronRight, HeartHandshake } from "lucide-react"; import { Card } from "@/components/ui/Card"; import { Avatar } from "@/components/ui/Avatar"; import { Button } from "@/components/ui/Button"; import { EmptyState } from "@/components/ui/EmptyState"; import { FullScreenLoader } from "@/components/ui/FullScreenLoader"; import { ErrorBanner } from "@/components/ui/ErrorBanner"; import { formatApiError } from "@/lib/hooks"; import { AdminMatchView, listAllMatches } from "@/lib/api"; const PAGE_SIZE = 20; export default function MatchesPage() { const [items, setItems] = useState(null); const [total, setTotal] = useState(0); const [page, setPage] = useState(1); const [error, setError] = useState(null); const load = useCallback(async (p: number) => { setError(null); try { const res = await listAllMatches(p, PAGE_SIZE); setItems(res.items); setTotal(res.total); } catch (err) { setError(formatApiError(err)); } }, []); useEffect(() => { // eslint-disable-next-line react-hooks/set-state-in-effect load(page); }, [page, load]); const totalPages = Math.max(1, Math.ceil(total / PAGE_SIZE)); return (

رفقا (مچ‌ها) 💞

همه‌ی جفت‌هایی که با هم مچ شدن، جدیدترین اول.

{error && } {!items ? ( ) : items.length === 0 ? ( } title="هنوز هیچ مچی اتفاق نیفتاده" description="وقتی دو نفر همدیگه رو لایک کنن، اینجا نشون داده می‌شن." /> ) : ( <> {items.map((m, i) => (

{m.user_one_name || "بدون نام"}

{m.user_one_phone}

{m.user_two_name || "بدون نام"}

{m.user_two_phone}

{new Date(m.created_at).toLocaleDateString("fa-IR")}

))}

صفحه {page.toLocaleString("fa-IR")} از {totalPages.toLocaleString("fa-IR")} · {total.toLocaleString("fa-IR")} مچ

)}
); }