36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
import type { Timeframe, OHLCVBar } from '../types';
|
|
import { useUpbitData, type WsStatus } from './useUpbitData';
|
|
import { useStompChartData } from './useStompChartData';
|
|
|
|
export type ChartRealtimeSource = 'BACKEND_STOMP' | 'UPBIT_DIRECT';
|
|
|
|
interface Options {
|
|
onTickUpdate: (bar: OHLCVBar) => void;
|
|
onNewCandle: (bar: OHLCVBar) => void;
|
|
enabled?: boolean;
|
|
deepObvHistory?: boolean;
|
|
source?: ChartRealtimeSource;
|
|
}
|
|
|
|
export function useChartRealtimeData(
|
|
market: string,
|
|
timeframe: Timeframe,
|
|
opts: Options,
|
|
) {
|
|
const useStomp = opts.source !== 'UPBIT_DIRECT';
|
|
const stomp = useStompChartData(market, timeframe, {
|
|
onTickUpdate: opts.onTickUpdate,
|
|
onNewCandle: opts.onNewCandle,
|
|
enabled: opts.enabled !== false && useStomp,
|
|
});
|
|
const upbit = useUpbitData(market, timeframe, {
|
|
onTickUpdate: opts.onTickUpdate,
|
|
onNewCandle: opts.onNewCandle,
|
|
enabled: opts.enabled !== false && !useStomp,
|
|
deepObvHistory: opts.deepObvHistory,
|
|
});
|
|
return useStomp ? stomp : upbit;
|
|
}
|
|
|
|
export type { WsStatus };
|