"use client"; import { useSearchParams } from "next/navigation"; import { useQuery } from "@tanstack/react-query"; import { useTranslations, useLocale } from "next-intl"; import { Link } from "@/i18n/routing"; import { apiGet } from "@/lib/api/client"; import type { QueueBoard } from "@/lib/api/types"; import { useAuthStore } from "@/lib/stores/auth.store"; import { formatNumber } from "@/lib/format"; export function QueueDisplayScreen() { const t = useTranslations("queue"); const locale = useLocale(); const numberLocale = locale === "en" ? "en-US" : "fa-IR"; const cafeId = useAuthStore((s) => s.user?.cafeId); const searchParams = useSearchParams(); const branchId = searchParams.get("branchId"); const branchQuery = branchId ? `?branchId=${encodeURIComponent(branchId)}` : ""; const { data: board } = useQuery({ queryKey: ["queue-today", cafeId, branchId, "display"], queryFn: () => apiGet(`/api/cafes/${cafeId}/queue/today${branchQuery}`), enabled: !!cafeId, refetchInterval: 5_000, }); const waiting = board?.tickets.filter((x) => x.status === "Waiting") ?? []; const nowServing = board?.nowServing; return (

{t("title")} · {t("displayMode")}

{t("exitDisplay")}

{t("nowServing")}

{nowServing != null ? formatNumber(nowServing, numberLocale) : "—"}

{t("lastIssued")}

{formatNumber(board?.lastIssued ?? 0, numberLocale)}

{t("displayWaitingLabel")}

{formatNumber(board?.waitingCount ?? 0, numberLocale)}

{waiting.length > 0 ? (

{t("displayUpNext")}

{waiting.slice(0, 12).map((ticket) => ( {formatNumber(ticket.number, numberLocale)} ))}
) : null}
); }