"use client" import React, { useEffect, useState } from 'react' interface Trade { id: string symbol: string side: string amount: number price: number status: string executedAt: string pnl?: number } export default function TradingHistory() { const [trades, setTrades] = useState([]) const [loading, setLoading] = useState(true) const [isClient, setIsClient] = useState(false) useEffect(() => { setIsClient(true) }, []) const formatTime = (dateString: string) => { if (!isClient) return '--:--:--' return new Date(dateString).toLocaleTimeString() } useEffect(() => { async function fetchTrades() { try { // Try Drift trading history first const driftRes = await fetch('/api/drift/trading-history') if (driftRes.ok) { const data = await driftRes.json() if (data.success && data.trades) { setTrades(data.trades) } else { // No trades available setTrades([]) } } else { // API failed - try fallback to local database const res = await fetch('/api/trading-history') if (res.ok) { const data = await res.json() setTrades(data || []) } else { // Both APIs failed - show empty state setTrades([]) } } } catch (error) { console.error('Failed to fetch trades:', error) setTrades([]) } setLoading(false) } fetchTrades() }, []) const getSideColor = (side: string) => { return side.toLowerCase() === 'buy' ? 'text-green-400' : 'text-red-400' } const getStatusColor = (status: string) => { switch (status.toLowerCase()) { case 'filled': return 'text-green-400' case 'pending': return 'text-yellow-400' case 'cancelled': return 'text-red-400' default: return 'text-gray-400' } } const getPnLColor = (pnl?: number) => { if (!pnl) return 'text-gray-400' return pnl >= 0 ? 'text-green-400' : 'text-red-400' } return (

📊 Trading History

Latest {trades.length} trades
{loading ? (
Loading trades...
) : trades.length === 0 ? (
📈

No trading history

Your completed trades will appear here

) : (
{trades.map((trade, index) => ( ))}
Asset Side Amount Price Status P&L Time
{trade.symbol.slice(0, 2)}
{trade.symbol}
{trade.side} {trade.amount} ${trade.price.toLocaleString()} {trade.status} {trade.pnl ? `${trade.pnl >= 0 ? '+' : ''}$${trade.pnl.toFixed(2)}` : '--'} {formatTime(trade.executedAt)}
)}
) }