From acf3943f8065bb5964e48dcde8e27e268450f071 Mon Sep 17 00:00:00 2001 From: direkturcrypto Date: Tue, 24 Feb 2026 13:33:48 +0700 Subject: [PATCH] fix(oneshot): use endDate instead of endDateIso for market expiry check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Gamma API returns two date fields: endDateIso = "2026-02-24" ← date only, no time endDate = "2026-02-24T06:35:00Z" ← correct close datetime _parseEndTs() was preferring endDateIso, which parsed to midnight UTC and was already in the past by the time any market opened during the day. Both current and next-slot markets were therefore rejected as "already expired". Fix: prioritise endDate (full ISO datetime) over endDateIso (date-only). Co-Authored-By: direkturcrypto --- src/oneshot/MarketFeedService.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/oneshot/MarketFeedService.js b/src/oneshot/MarketFeedService.js index df311ec..9a28759 100644 --- a/src/oneshot/MarketFeedService.js +++ b/src/oneshot/MarketFeedService.js @@ -177,7 +177,10 @@ export class MarketFeedService { } _parseEndTs(market) { - const raw = market.endDateIso || market.end_date_iso || market.endDate; + // endDate contains the full datetime (e.g. "2026-02-24T06:35:00Z"). + // endDateIso is date-only ("2026-02-24") and parses to midnight UTC — + // which is already in the past by market-open time, so it must come last. + const raw = market.endDate || market.end_date || market.endDateIso || market.end_date_iso; if (!raw) return null; const ts = new Date(raw).getTime(); return Number.isFinite(ts) ? ts : null;