From 58439bed54403d32f63564bed1845e23b25e68e1 Mon Sep 17 00:00:00 2001 From: mulan xia Date: Fri, 9 Feb 2024 16:12:18 -0500 Subject: [PATCH] merge order types --- src/constants/abacus.ts | 41 ---------- src/constants/trade.ts | 74 ++++++++++++++----- src/pages/trade/TradeDialogTrigger.tsx | 4 +- src/views/charts/TvChart.tsx | 21 +++--- src/views/dialogs/TradeDialog.tsx | 2 +- .../TradeForm/PlaceOrderButtonAndReceipt.tsx | 4 +- .../notifications/TradeNotification/index.tsx | 4 +- 7 files changed, 70 insertions(+), 80 deletions(-) diff --git a/src/constants/abacus.ts b/src/constants/abacus.ts index f09fcac..ac44cf3 100644 --- a/src/constants/abacus.ts +++ b/src/constants/abacus.ts @@ -278,47 +278,6 @@ export const ORDER_STATUS_STRINGS: Record, - Nullable -> = { - [AbacusOrderType.limit.name]: STRING_KEYS.LIMIT_ORDER_SHORT, - [AbacusOrderType.limit.rawValue]: STRING_KEYS.LIMIT_ORDER_SHORT, - - [AbacusOrderType.market.name]: STRING_KEYS.MARKET, - [AbacusOrderType.market.rawValue]: STRING_KEYS.MARKET, - - [AbacusOrderType.stopLimit.name]: STRING_KEYS.STOP_LIMIT, - [AbacusOrderType.stopLimit.rawValue]: STRING_KEYS.STOP_LIMIT, - - [AbacusOrderType.stopMarket.name]: STRING_KEYS.STOP_MARKET, - [AbacusOrderType.stopMarket.rawValue]: STRING_KEYS.STOP_MARKET, - - [AbacusOrderType.takeProfitLimit.name]: STRING_KEYS.TAKE_PROFIT, - [AbacusOrderType.takeProfitLimit.rawValue]: STRING_KEYS.TAKE_PROFIT, - - [AbacusOrderType.takeProfitMarket.name]: STRING_KEYS.TAKE_PROFIT_MARKET, - [AbacusOrderType.takeProfitMarket.rawValue]: STRING_KEYS.TAKE_PROFIT_MARKET, - - [AbacusOrderType.liquidated.name]: STRING_KEYS.LIQUIDATED, - [AbacusOrderType.liquidated.rawValue]: STRING_KEYS.LIQUIDATED, - - [AbacusOrderType.liquidation.name]: STRING_KEYS.LIQUIDATION, - [AbacusOrderType.liquidation.rawValue]: STRING_KEYS.LIQUIDATION, - - [AbacusOrderType.trailingStop.name]: STRING_KEYS.TRAILING_STOP, - [AbacusOrderType.trailingStop.rawValue]: STRING_KEYS.TRAILING_STOP, - - [AbacusOrderType.offsetting.name]: STRING_KEYS.OFFSETTING, - [AbacusOrderType.offsetting.rawValue]: STRING_KEYS.OFFSETTING, - - [AbacusOrderType.deleveraged.name]: STRING_KEYS.DELEVERAGED, - [AbacusOrderType.deleveraged.rawValue]: STRING_KEYS.DELEVERAGED, - - [AbacusOrderType.finalSettlement.name]: STRING_KEYS.FINAL_SETTLEMENT, - [AbacusOrderType.finalSettlement.rawValue]: STRING_KEYS.FINAL_SETTLEMENT, -}; - export const TRADE_TYPES: Record< KotlinIrEnumValues, Nullable diff --git a/src/constants/trade.ts b/src/constants/trade.ts index ff042cf..658134d 100644 --- a/src/constants/trade.ts +++ b/src/constants/trade.ts @@ -4,7 +4,6 @@ import { AlertType } from '@/constants/alerts'; import { STRING_KEYS } from '@/constants/localization'; import { TimeUnitShort } from '@/constants/time'; -// TODO: rename to OrderType export enum TradeTypes { MARKET = 'MARKET', LIMIT = 'LIMIT', @@ -15,6 +14,16 @@ export enum TradeTypes { TRAILING_STOP = 'TRAILING_STOP', } +enum ClosingTradeTypes { + LIQUIDATED = 'LIQUIDATED', + LIQUIDATION = 'LIQUIDATION', + OFFSETTING = 'OFFSETTING', + DELEVERAGED = 'DELEVERAGED', + FINAL_SETTLEMENT = 'FINAL_SETTLEMENT', +} + +export type OrderType = TradeTypes | ClosingTradeTypes; + export enum TimeInForceOptions { GTT = 'GTT', FOK = 'FOK', @@ -40,49 +49,74 @@ export const POSITION_SIDE_STRINGS: Record = { [PositionSide.Short]: STRING_KEYS.SHORT_POSITION_SHORT, }; -export const TRADE_TYPE_STRINGS: Record< - TradeTypes, +export const ORDER_TYPE_STRINGS: Record< + OrderType, { - tradeTypeKeyShort: string; - tradeTypeKey: string; - descriptionKey: string; + orderTypeKeyShort: string; + orderTypeKey: string; + descriptionKey: string | null; } > = { [TradeTypes.LIMIT]: { - tradeTypeKeyShort: STRING_KEYS.LIMIT_ORDER_SHORT, - tradeTypeKey: STRING_KEYS.LIMIT_ORDER, + orderTypeKeyShort: STRING_KEYS.LIMIT_ORDER_SHORT, + orderTypeKey: STRING_KEYS.LIMIT_ORDER, descriptionKey: STRING_KEYS.LIMIT_ORDER_DESCRIPTION, }, [TradeTypes.MARKET]: { - tradeTypeKeyShort: STRING_KEYS.MARKET_ORDER_SHORT, - tradeTypeKey: STRING_KEYS.MARKET_ORDER, + orderTypeKeyShort: STRING_KEYS.MARKET_ORDER_SHORT, + orderTypeKey: STRING_KEYS.MARKET_ORDER, descriptionKey: STRING_KEYS.MARKET_ORDER_DESCRIPTION, }, [TradeTypes.STOP_LIMIT]: { - tradeTypeKeyShort: STRING_KEYS.STOP_LIMIT, - tradeTypeKey: STRING_KEYS.STOP_LIMIT, + orderTypeKeyShort: STRING_KEYS.STOP_LIMIT, + orderTypeKey: STRING_KEYS.STOP_LIMIT, descriptionKey: STRING_KEYS.STOP_LIMIT_DESCRIPTION, }, [TradeTypes.STOP_MARKET]: { - tradeTypeKeyShort: STRING_KEYS.STOP_MARKET, - tradeTypeKey: STRING_KEYS.STOP_MARKET, + orderTypeKeyShort: STRING_KEYS.STOP_MARKET, + orderTypeKey: STRING_KEYS.STOP_MARKET, descriptionKey: STRING_KEYS.STOP_MARKET_DESCRIPTION, }, [TradeTypes.TAKE_PROFIT]: { - tradeTypeKeyShort: STRING_KEYS.TAKE_PROFIT_LIMIT, - tradeTypeKey: STRING_KEYS.TAKE_PROFIT_LIMIT, + orderTypeKeyShort: STRING_KEYS.TAKE_PROFIT_LIMIT, + orderTypeKey: STRING_KEYS.TAKE_PROFIT_LIMIT, descriptionKey: STRING_KEYS.TAKE_PROFIT_LIMIT_DESCRIPTION, }, [TradeTypes.TAKE_PROFIT_MARKET]: { - tradeTypeKeyShort: STRING_KEYS.TAKE_PROFIT_MARKET, - tradeTypeKey: STRING_KEYS.TAKE_PROFIT_MARKET, + orderTypeKeyShort: STRING_KEYS.TAKE_PROFIT_MARKET, + orderTypeKey: STRING_KEYS.TAKE_PROFIT_MARKET, descriptionKey: STRING_KEYS.TAKE_PROFIT_MARKET_DESCRIPTION, }, [TradeTypes.TRAILING_STOP]: { - tradeTypeKeyShort: STRING_KEYS.TRAILING_STOP, - tradeTypeKey: STRING_KEYS.TRAILING_STOP, + orderTypeKeyShort: STRING_KEYS.TRAILING_STOP, + orderTypeKey: STRING_KEYS.TRAILING_STOP, descriptionKey: STRING_KEYS.TRAILING_STOP_DESCRIPTION, }, + [ClosingTradeTypes.LIQUIDATED]: { + orderTypeKeyShort: STRING_KEYS.LIQUIDATED, + orderTypeKey: STRING_KEYS.LIQUIDATED, + descriptionKey: null, + }, + [ClosingTradeTypes.LIQUIDATION]: { + orderTypeKeyShort: STRING_KEYS.LIQUIDATION, + orderTypeKey: STRING_KEYS.LIQUIDATION, + descriptionKey: null, + }, + [ClosingTradeTypes.OFFSETTING]: { + orderTypeKeyShort: STRING_KEYS.OFFSETTING, + orderTypeKey: STRING_KEYS.OFFSETTING, + descriptionKey: null, + }, + [ClosingTradeTypes.DELEVERAGED]: { + orderTypeKeyShort: STRING_KEYS.DELEVERAGED, + orderTypeKey: STRING_KEYS.DELEVERAGED, + descriptionKey: null, + }, + [ClosingTradeTypes.FINAL_SETTLEMENT]: { + orderTypeKeyShort: STRING_KEYS.FINAL_SETTLEMENT, + orderTypeKey: STRING_KEYS.FINAL_SETTLEMENT, + descriptionKey: null, + }, }; export const GOOD_TIL_TIME_TIMESCALE_STRINGS: Record = { diff --git a/src/pages/trade/TradeDialogTrigger.tsx b/src/pages/trade/TradeDialogTrigger.tsx index 79e4094..e746142 100644 --- a/src/pages/trade/TradeDialogTrigger.tsx +++ b/src/pages/trade/TradeDialogTrigger.tsx @@ -3,7 +3,7 @@ import { useSelector, shallowEqual } from 'react-redux'; import styled, { AnyStyledComponent } from 'styled-components'; import { STRING_KEYS } from '@/constants/localization'; -import { TRADE_TYPE_STRINGS } from '@/constants/trade'; +import { ORDER_TYPE_STRINGS } from '@/constants/trade'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -43,7 +43,7 @@ export const TradeDialogTrigger = () => { - {stringGetter({ key: TRADE_TYPE_STRINGS[selectedTradeType].tradeTypeKey })} + {stringGetter({ key: ORDER_TYPE_STRINGS[selectedTradeType].orderTypeKey })} diff --git a/src/views/charts/TvChart.tsx b/src/views/charts/TvChart.tsx index 7fb8df6..783549c 100644 --- a/src/views/charts/TvChart.tsx +++ b/src/views/charts/TvChart.tsx @@ -1,9 +1,7 @@ import { useEffect, useRef, useState } from 'react'; -import styled, { type AnyStyledComponent, css } from 'styled-components'; -import { shallowEqual, useDispatch, useSelector } from 'react-redux'; -import { MustBigNumber } from '@/lib/numbers'; -import { getOrderLineColors } from '@/lib/tradingView/utils'; +import { shallowEqual, useDispatch, useSelector } from 'react-redux'; +import styled, { type AnyStyledComponent, css } from 'styled-components'; import type { IChartingLibraryWidget, @@ -11,14 +9,10 @@ import type { ResolutionString, } from 'public/tradingview/charting_library'; -import { - AbacusOrderStatus, - AbacusOrderType, - KotlinIrEnumValues, - ORDER_TYPE_LABEL_MAPPING, -} from '@/constants/abacus'; +import { AbacusOrderStatus } from '@/constants/abacus'; import { DEFAULT_RESOLUTION, RESOLUTION_CHART_CONFIGS } from '@/constants/candles'; import { DEFAULT_MARKETID } from '@/constants/markets'; +import { type OrderType, ORDER_TYPE_STRINGS } from '@/constants/trade'; import { useStringGetter } from '@/hooks'; import { useTradingView, useTradingViewTheme } from '@/hooks/tradingView'; @@ -32,6 +26,9 @@ import { getCurrentMarketId, getSelectedResolutionForMarket } from '@/state/perp import { layoutMixins } from '@/styles/layoutMixins'; +import { MustBigNumber } from '@/lib/numbers'; +import { getOrderLineColors } from '@/lib/tradingView/utils'; + type TvWidget = IChartingLibraryWidget & { _id?: string; _ready?: boolean }; let orderLines: Record = {}; @@ -151,9 +148,9 @@ export const TvChart = () => { const key = `${side.rawValue}-${id}`; const quantity = (remainingSize ?? size).toString(); - const orderType = type.rawValue as KotlinIrEnumValues; + const orderType = type.rawValue as OrderType; const orderLabel = stringGetter({ - key: ORDER_TYPE_LABEL_MAPPING[orderType] || '', + key: ORDER_TYPE_STRINGS[orderType].orderTypeKey, }); const orderString = trailingPercent ? `${orderLabel} ${trailingPercent}%` : orderLabel; diff --git a/src/views/dialogs/TradeDialog.tsx b/src/views/dialogs/TradeDialog.tsx index 081bdf2..2eff8c0 100644 --- a/src/views/dialogs/TradeDialog.tsx +++ b/src/views/dialogs/TradeDialog.tsx @@ -4,7 +4,7 @@ import styled, { AnyStyledComponent, css } from 'styled-components'; import { TradeInputField } from '@/constants/abacus'; import { STRING_KEYS, StringKey } from '@/constants/localization'; -import { TradeTypes, TRADE_TYPE_STRINGS, MobilePlaceOrderSteps } from '@/constants/trade'; +import { TradeTypes, ORDER_TYPE_STRINGS, MobilePlaceOrderSteps } from '@/constants/trade'; import { useBreakpoints, useStringGetter } from '@/hooks'; import { layoutMixins } from '@/styles/layoutMixins'; diff --git a/src/views/forms/TradeForm/PlaceOrderButtonAndReceipt.tsx b/src/views/forms/TradeForm/PlaceOrderButtonAndReceipt.tsx index 6b44ef4..3770ad5 100644 --- a/src/views/forms/TradeForm/PlaceOrderButtonAndReceipt.tsx +++ b/src/views/forms/TradeForm/PlaceOrderButtonAndReceipt.tsx @@ -5,7 +5,7 @@ import type { TradeInputSummary } from '@/constants/abacus'; import { ButtonAction, ButtonSize, ButtonType } from '@/constants/buttons'; import { DialogTypes } from '@/constants/dialogs'; import { STRING_KEYS } from '@/constants/localization'; -import { TRADE_TYPE_STRINGS, MobilePlaceOrderSteps } from '@/constants/trade'; +import { ORDER_TYPE_STRINGS, MobilePlaceOrderSteps } from '@/constants/trade'; import { useStringGetter, useTokenConfigs } from '@/hooks'; @@ -184,7 +184,7 @@ export const PlaceOrderButtonAndReceipt = ({ ORDER: stringGetter({ key: isClosePosition ? STRING_KEYS.CLOSE_ORDER - : TRADE_TYPE_STRINGS[selectedTradeType].tradeTypeKey, + : ORDER_TYPE_STRINGS[selectedTradeType].orderTypeKey, }), }, })} diff --git a/src/views/notifications/TradeNotification/index.tsx b/src/views/notifications/TradeNotification/index.tsx index d628b2d..b723f13 100644 --- a/src/views/notifications/TradeNotification/index.tsx +++ b/src/views/notifications/TradeNotification/index.tsx @@ -11,7 +11,7 @@ import { } from '@/constants/abacus'; import { STRING_KEYS } from '@/constants/localization'; -import { TRADE_TYPE_STRINGS, TradeTypes } from '@/constants/trade'; +import { ORDER_TYPE_STRINGS, TradeTypes } from '@/constants/trade'; import { useStringGetter } from '@/hooks'; import { layoutMixins } from '@/styles/layoutMixins'; @@ -48,7 +48,7 @@ export const TradeNotification = ({ isToast, data, notification }: TradeNotifica const { assetId } = marketData ?? {}; const orderType = ORDER_TYPE as KotlinIrEnumValues; const tradeType = TRADE_TYPES[orderType]; - const titleKey = tradeType && TRADE_TYPE_STRINGS[tradeType]?.tradeTypeKey; + const titleKey = tradeType && ORDER_TYPE_STRINGS[tradeType]?.orderTypeKey; const orderStatus = ORDER_STATUS as KotlinIrEnumValues; return (