diff --git a/apps/trading/components/chart-container/chart-container.tsx b/apps/trading/components/chart-container/chart-container.tsx index 535f8e2b6..9775ecbaa 100644 --- a/apps/trading/components/chart-container/chart-container.tsx +++ b/apps/trading/components/chart-container/chart-container.tsx @@ -1,5 +1,5 @@ import invert from 'lodash/invert'; -import { type Interval } from '@vegaprotocol/types'; +import { Interval } from '@vegaprotocol/types'; import { TradingViewContainer, ALLOWED_TRADINGVIEW_HOSTNAMES, @@ -11,6 +11,7 @@ import { } from '@vegaprotocol/candles-chart'; import { useEnvironment } from '@vegaprotocol/environment'; import { useChartSettings, STUDY_SIZE } from './use-chart-settings'; +import { SUPPORTED_INTERVALS, type SupportedInterval } from './constants'; /** * Renders either the pennant chart or the tradingview chart @@ -36,7 +37,7 @@ export const ChartContainer = ({ marketId }: { marketId: string }) => { const pennantChart = ( { libraryPath={CHARTING_LIBRARY_PATH} libraryHash={CHARTING_LIBRARY_HASH} marketId={marketId} - interval={toTradingViewResolution(interval)} + interval={toTradingViewResolution(interval as SupportedInterval)} studies={tradingViewStudies} onIntervalChange={(newInterval) => { setInterval(fromTradingViewResolution(newInterval)); @@ -83,7 +84,11 @@ export const ChartContainer = ({ marketId }: { marketId: string }) => { } }; -const toTradingViewResolution = (interval: Interval) => { +const toTradingViewResolution = (interval: SupportedInterval) => { + if (!SUPPORTED_INTERVALS.includes(interval)) { + throw new Error(`interval ${interval} is not supported`); + } + const resolution = TRADINGVIEW_INTERVAL_MAP[interval]; if (!resolution) { @@ -107,7 +112,11 @@ const fromTradingViewResolution = (resolution: string) => { return interval as Interval; }; -const toPennantInterval = (interval: Interval) => { +const toPennantInterval = (interval: SupportedInterval) => { + if (!SUPPORTED_INTERVALS.includes(interval)) { + throw new Error(`interval ${interval} is not supported`); + } + const pennantInterval = PENNANT_INTERVAL_MAP[interval]; if (!pennantInterval) { diff --git a/apps/trading/components/chart-container/chart-menu.tsx b/apps/trading/components/chart-container/chart-menu.tsx index bb0a4bb7b..6c568330d 100644 --- a/apps/trading/components/chart-container/chart-menu.tsx +++ b/apps/trading/components/chart-container/chart-menu.tsx @@ -24,15 +24,7 @@ import { ALLOWED_TRADINGVIEW_HOSTNAMES } from '@vegaprotocol/trading-view'; import { IconNames, type IconName } from '@blueprintjs/icons'; import { useChartSettings } from './use-chart-settings'; import { useT } from '../../lib/use-t'; - -const INTERVALS = [ - Interval.INTERVAL_I1M, - Interval.INTERVAL_I5M, - Interval.INTERVAL_I15M, - Interval.INTERVAL_I1H, - Interval.INTERVAL_I6H, - Interval.INTERVAL_I1D, -]; +import { SUPPORTED_INTERVALS } from './constants'; const chartTypeIcon = new Map([ [ChartType.AREA, IconNames.TIMELINE_AREA_CHART], @@ -93,7 +85,7 @@ export const ChartMenu = () => { setInterval(value as Interval); }} > - {INTERVALS.map((timeInterval) => ( + {SUPPORTED_INTERVALS.map((timeInterval) => (