import React, { useState, useEffect, useContext } from 'react'; import { Form, InputNumber, DatePicker, Button, Message, Typography, Card } from '@arco-design/web-react'; import '@arco-design/web-react/dist/css/arco.css'; import dayjs from 'dayjs'; import utc from 'dayjs/plugin/utc'; import timezone from 'dayjs/plugin/timezone'; import API_BASE_URL from '../config'; import { MarketContext, MARKET_FULL_NAMES } from '../App'; dayjs.extend(utc); dayjs.extend(timezone); const MARKET_TIMEZONES = { ISONE: 'America/New_York', NYISO: 'America/New_York', MISO: 'America/Chicago' }; function SubmitBidPage() { const { selectedMarket } = useContext(MarketContext); const [form] = Form.useForm(); const [loading, setLoading] = useState(false); const [localNow, setLocalNow] = useState(''); const [marketNow, setMarketNow] = useState(''); useEffect(() => { const updateTime = () => { const now = dayjs(); const localFormatted = now.format('dddd, MMMM D, h:mm A'); const marketTz = MARKET_TIMEZONES[selectedMarket] || 'America/New_York'; const marketTime = now.tz(marketTz); const marketFormatted = marketTime.format('dddd, MMMM D, h:mm A'); setLocalNow(localFormatted); setMarketNow(marketFormatted); }; updateTime(); const interval = setInterval(updateTime, 1000); return () => clearInterval(interval); }, [selectedMarket]); const handleSubmit = async (values) => { setLoading(true); try { const picked = dayjs(values.timestamp); const adjusted = picked.minute(0).second(0).millisecond(0); const marketTz = MARKET_TIMEZONES[selectedMarket] || 'America/New_York'; const timestampInMarketTz = adjusted.tz(marketTz).format(); const payload = { timestamp: timestampInMarketTz, quantity: values.quantity, price: values.price, market: selectedMarket, user_id: 1 }; const res = await fetch(`${API_BASE_URL}/bids/`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }); if (!res.ok) { const error = await res.json(); throw new Error(error.detail || 'Failed to submit bid'); } Message.success('Bid submitted successfully!'); form.resetFields(); } catch (err) { console.error(err); Message.error(err.message || 'Submission failed'); } finally { setLoading(false); } }; return (