import { useEffect, useState } from 'react'; import { Link, Navigate, useParams } from 'react-router-dom'; import { api, formatCredits } from '../api'; import { useAuth } from '../AuthContext'; import CaseReel from '../components/CaseReel'; import ItemTile from '../components/ItemTile'; import { rarityColor } from '../rarities'; export default function CasePage() { const { id } = useParams(); const { user, loading, updateBalance } = useAuth(); const [crate, setCrate] = useState(null); const [error, setError] = useState(''); const [spinning, setSpinning] = useState(false); const [winnerId, setWinnerId] = useState(null); const [wonItem, setWonItem] = useState(null); const [showResult, setShowResult] = useState(false); useEffect(() => { let cancelled = false; (async () => { try { const data = await api.case(id); if (!cancelled) setCrate(data.case); } catch (err) { if (!cancelled) setError(err.message); } })(); return () => { cancelled = true; }; }, [id]); if (loading) return
Loading…
; if (!user) returnLoading case…
} {error &&Cost {formatCredits(crate.price)} cr · Balance {formatCredits(user.balance)} cr
Relative drop odds for this case.