Skip to content

Commit f59f186

Browse files
fix: use reference price for market baseline (kuestcom#1333)
Upstream: fc2852b
1 parent f1fe826 commit f59f186

4 files changed

Lines changed: 10 additions & 42 deletions

File tree

src/app/[locale]/(platform)/event/[slug]/_components/EventLiveSeriesChart.tsx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,6 @@ function EventLiveSeriesChartContent({
195195
const {
196196
referenceSnapshot,
197197
referenceSnapshotStatus,
198-
baselinePrice,
199-
setBaselinePrice,
200198
persistedFallbackPrice: snapshotFallbackPrice,
201199
} = useLiveSeriesPriceSnapshot({
202200
config,
@@ -227,7 +225,6 @@ function EventLiveSeriesChartContent({
227225
eventEndTimestamp: explicitEndTimestamp,
228226
subscriptionSymbol,
229227
isLiveView: isLiveView && !isEventClosed,
230-
setBaselinePrice,
231228
})
232229

233230
const isMarketClosed = useMemo(() => {
@@ -463,9 +460,7 @@ function EventLiveSeriesChartContent({
463460
requiresCanonicalClose: requiresCanonicalBinanceClose,
464461
})
465462
const axisSourceData = renderData
466-
const resolvedBaselinePrice = isEventClosed
467-
? referenceOpeningPrice
468-
: baselinePrice ?? referenceOpeningPrice
463+
const resolvedBaselinePrice = referenceOpeningPrice
469464
const precisionReferencePrice = currentPrice
470465
?? resolvedBaselinePrice
471466
?? referenceSnapshot?.latest_price

src/app/[locale]/(platform)/event/[slug]/_hooks/useLiveSeriesPriceSnapshot.ts

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type {
44
PersistedLivePrice,
55
} from '../_utils/eventLiveSeriesChartUtils'
66
import type { EventLiveChartConfig } from '@/types'
7-
import { useCallback, useMemo, useState, useSyncExternalStore } from 'react'
7+
import { useCallback, useMemo, useSyncExternalStore } from 'react'
88
import {
99
LIVE_DATA_RETENTION_MS,
1010
normalizeLiveChartPrice,
@@ -22,8 +22,6 @@ interface UseLiveSeriesPriceSnapshotOptions {
2222
export interface LiveSeriesPriceSnapshotResult {
2323
referenceSnapshot: LiveSeriesPriceSnapshot | null
2424
referenceSnapshotStatus: LiveSeriesPriceSnapshotStatus
25-
baselinePrice: number | null
26-
setBaselinePrice: React.Dispatch<React.SetStateAction<number | null>>
2725
persistedFallbackPrice: PersistedLivePrice | null
2826
}
2927

@@ -449,21 +447,9 @@ export function useLiveSeriesPriceSnapshot({
449447
getServerSnapshot,
450448
)
451449

452-
const [baselinePrice, setBaselinePrice] = useState<number | null>(null)
453-
454-
const effectiveBaselinePrice = baselinePrice ?? (
455-
typeof referenceSnapshot.referenceSnapshot?.opening_price === 'number'
456-
&& Number.isFinite(referenceSnapshot.referenceSnapshot.opening_price)
457-
&& referenceSnapshot.referenceSnapshot.opening_price > 0
458-
? referenceSnapshot.referenceSnapshot.opening_price
459-
: null
460-
)
461-
462450
return {
463451
referenceSnapshot: referenceSnapshot.referenceSnapshot,
464452
referenceSnapshotStatus: referenceSnapshot.referenceSnapshotStatus,
465-
baselinePrice: effectiveBaselinePrice,
466-
setBaselinePrice,
467453
persistedFallbackPrice: referenceSnapshot.persistedFallbackPrice,
468454
}
469455
}

src/app/[locale]/(platform)/event/[slug]/_hooks/useLiveSeriesWebSocket.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ interface UseLiveSeriesWebSocketOptions {
2121
eventEndTimestamp: number | null
2222
subscriptionSymbol: string
2323
isLiveView: boolean
24-
setBaselinePrice: React.Dispatch<React.SetStateAction<number | null>>
2524
}
2625

2726
export function useLiveSeriesWebSocket({
@@ -30,7 +29,6 @@ export function useLiveSeriesWebSocket({
3029
eventEndTimestamp,
3130
subscriptionSymbol,
3231
isLiveView,
33-
setBaselinePrice,
3432
}: UseLiveSeriesWebSocketOptions) {
3533
const { wsLiveDataUrl } = usePublicRuntimeConfig()
3634
const wsUrl = wsLiveDataUrl
@@ -185,8 +183,6 @@ export function useLiveSeriesWebSocket({
185183
transitionDurationMs,
186184
)
187185
})
188-
189-
setBaselinePrice(current => current ?? wsUpdatesForRender[0]?.price ?? null)
190186
}
191187

192188
function handleError() {
@@ -259,7 +255,7 @@ export function useLiveSeriesWebSocket({
259255
})
260256
}
261257
}
262-
}, [eventEndTimestamp, eventType, topic, isLiveView, wsUrl, subscriptionSymbol, setBaselinePrice])
258+
}, [eventEndTimestamp, eventType, topic, isLiveView, wsUrl, subscriptionSymbol])
263259

264260
return { data, status }
265261
}

tests/unit/useLiveSeriesWebSocket.test.tsx

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { act, cleanup, renderHook } from '@testing-library/react'
2-
import { useState } from 'react'
32
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
43
import { useLiveSeriesWebSocket } from '@/app/[locale]/(platform)/event/[slug]/_hooks/useLiveSeriesWebSocket'
54
import {
@@ -62,19 +61,13 @@ describe('useLiveSeriesWebSocket', () => {
6261
})
6362

6463
function mountHook(eventEndTimestamp: number | null = null) {
65-
const view = renderHook(() => {
66-
const [baseline, setBaseline] = useState<number | null>(null)
67-
const live = useLiveSeriesWebSocket({
68-
topic: 'crypto_prices',
69-
eventType: 'price',
70-
eventEndTimestamp,
71-
subscriptionSymbol: 'BTC',
72-
isLiveView: true,
73-
setBaselinePrice: setBaseline,
74-
})
75-
76-
return { ...live, baseline }
77-
})
64+
const view = renderHook(() => useLiveSeriesWebSocket({
65+
topic: 'crypto_prices',
66+
eventType: 'price',
67+
eventEndTimestamp,
68+
subscriptionSymbol: 'BTC',
69+
isLiveView: true,
70+
}))
7871

7972
const socket = MockWebSocket.instances[0]!
8073
act(() => socket.emitOpen())
@@ -100,7 +93,6 @@ describe('useLiveSeriesWebSocket', () => {
10093
expect(result.current.data.map(point => [point.date.getTime(), point[SERIES_KEY]])).toEqual(
10194
snapshot.map(point => [point.timestamp, point.value]),
10295
)
103-
expect(result.current.baseline).toBe(100)
10496
expect(result.current.status).toBe('live')
10597
})
10698

@@ -146,7 +138,6 @@ describe('useLiveSeriesWebSocket', () => {
146138
expect(firstPrice).toBeLessThan(110)
147139
expect(transition.at(-1)?.date.getTime()).toBe(retargetStart + duration)
148140
expect(transition.at(-1)?.[SERIES_KEY]).toBe(90)
149-
expect(result.current.baseline).toBe(100)
150141
})
151142

152143
it('finishes the last transition at the event cutoff and ignores later updates', () => {

0 commit comments

Comments
 (0)