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 (