"use client" import { useState, useCallback } from "react" import { RefreshCwIcon, CheckCircleIcon, XCircleIcon, AlertTriangleIcon } from "lucide-react" interface StrategyResult { strategy: string versionString: string | null buildId: string | null success: boolean error: string | null } export default function TestVersionFetchersPage() { const [appId, setAppId] = useState("") const [loading, setLoading] = useState(false) const [results, setResults] = useState(null) const [best, setBest] = useState(null) const [error, setError] = useState(null) const runTest = useCallback(async (id?: string) => { const targetId = id ?? appId if (!targetId.trim()) return setLoading(true) setError(null) setResults(null) setBest(null) try { // Use the standalone endpoint — no DB lookup needed const testRes = await fetch(`/api/version-test?steamAppId=${encodeURIComponent(targetId)}`) if (!testRes.ok) { const errData = await testRes.json().catch(() => ({})) setError(errData.error || `API error: ${testRes.status}`) setLoading(false) return } const testData = await testRes.json() if (testData.error) { setError(testData.error) setLoading(false) return } setResults(testData.results) setBest(testData.best) } catch (err) { setError(err instanceof Error ? err.message : "Unknown error") } finally { setLoading(false) } }, [appId]) const handleQuickTest = useCallback((id: string) => { setAppId(id) runTest(id) }, [runTest]) return (

Version Fetcher — Strategy Comparison

Enter a Steam App ID to test all version-fetching strategies. The best result (priority: named version > build ID) will be highlighted.

{/* Input */}
setAppId(e.target.value)} placeholder="Steam App ID (e.g., 730 for CS2)" className="flex-1 px-4 py-3 rounded-lg border border-border bg-text/5 text-text text-sm outline-none focus:border-primary focus:ring-2 focus:ring-primary/50 transition-colors" onKeyDown={(e) => e.key === "Enter" && runTest()} />
{/* Error */} {error && (

{error}

)} {/* Results */} {results && (
{/* Best Result */} {best ? (

Best Result: {best.strategy}

Version String

{best.versionString || "—"}

Build ID

{best.buildId || "—"}

) : (

No strategy found version data for this game.

)} {/* All Strategy Results */}

All Strategy Results

{results.map((r, i) => (
{r.success ? ( ) : ( )} {r.strategy}
{r.error && ( {r.error} )}
{r.success && (
Version: {r.versionString || "—"}
Build: {r.buildId || "—"}
)}
))}
)} {/* Quick Test Buttons */}

Quick Test (known Steam App IDs)

{[ { id: "730", label: "CS2" }, { id: "440", label: "TF2" }, { id: "570", label: "Dota 2" }, { id: "271590", label: "GTA V" }, { id: "1174180", label: "RDR2" }, { id: "1086940", label: "BG3" }, { id: "1245620", label: "Elden Ring" }, { id: "292030", label: "Witcher 3" }, ].map((g) => ( ))}
) }