"use client"; import { Copy, CopyCheck, ImageIcon, OctagonAlert, RefreshCwIcon, ScanSearch, SquircleDashed, } from "lucide-react"; import Image from "next/image"; import { useEffect, useState } from "react"; import Enka from "#/enka_logo.png"; import { SimpleTooltip } from "@/components/tooltip"; import { Button } from "@/components/ui/button"; import { Spinner } from "@/components/ui/spinner"; import { getCardStatus, revalidateCard } from "@/lib/api"; import { cn } from "@/lib/utils"; export function EnkaBrowser({ sub, uid }: { sub: string; uid: string }) { const [ready, setReady] = useState(false); const [error, setError] = useState(null); const [useWeb, setUseWeb] = useState(false); const [isCached, setIsCached] = useState(true); const [t, setT] = useState(0); async function refresh() { setReady(false); setIsCached(false); if (!useWeb) await revalidateCard(sub); setT(Date.now()); } // biome-ignore lint/correctness/useExhaustiveDependencies: for update useEffect(() => { setReady(false); setError(null); setIsCached(true); getCardStatus(sub).then((s) => { setIsCached(s.cached); if (!s.cached) setError(s.error); }); }, [sub, uid, t]); return (
{!ready && !error && (isCached || useWeb) && (
กำลังโหลดข้อมูล...
)} {error && (
{error.includes("ใหม่") ? ( ) : ( )} {error}
)} {!error && !ready && !isCached && !useWeb && (
ยังไม่ได้เตรียมการ์ดไว้ล่วงหน้า จะใช้เวลาสักพัก
)}
{useWeb ? (