diff --git a/web/app/trades/page.tsx b/web/app/trades/page.tsx index e80d945..b0dd83f 100644 --- a/web/app/trades/page.tsx +++ b/web/app/trades/page.tsx @@ -1,8 +1,9 @@ import { getAccount, getDeals, type Deal } from "@/lib/mt5"; import { formatCurrency, formatDate } from "@/lib/format"; import EquityChart from "@/components/EquityChart"; +import TradesRefresher from "@/components/TradesRefresher"; -export const revalidate = 60; +export const dynamic = "force-dynamic"; const MAGIC = 19730; export default async function TradesPage() { @@ -42,6 +43,10 @@ export default async function TradesPage() {

All closed trades from ARES ยท magic {MAGIC}

+
+ + +
{error ? ( diff --git a/web/components/TradesRefresher.tsx b/web/components/TradesRefresher.tsx new file mode 100644 index 0000000..a147f39 --- /dev/null +++ b/web/components/TradesRefresher.tsx @@ -0,0 +1,22 @@ +"use client"; +import { useEffect, useState } from "react"; +import { useRouter } from "next/navigation"; + +export default function TradesRefresher() { + const router = useRouter(); + const [lastUpdated, setLastUpdated] = useState(new Date()); + + useEffect(() => { + const id = setInterval(() => { + router.refresh(); + setLastUpdated(new Date()); + }, 30_000); + return () => clearInterval(id); + }, [router]); + + return ( + + Updated {lastUpdated.toLocaleTimeString()} + + ); +}