@@ -24,8 +24,6 @@ import { useStores } from "@stores";
2424
2525import { ORDER_MODE , useCreateOrderVM } from "../../RightBlock/CreateOrder/CreateOrderVM" ;
2626
27- import { useSpotOrderbookVM } from "./SpotOrderbookVM" ;
28-
2927interface IProps extends HTMLAttributes < HTMLDivElement > { }
3028
3129export enum SPOT_ORDER_FILTER {
@@ -43,7 +41,7 @@ const SPOT_SETTINGS_ICONS = {
4341} ;
4442
4543export const SpotOrderBook : React . FC < IProps > = observer ( ( ) => {
46- const vm = useSpotOrderbookVM ( ) ;
44+ const { spotOrderBookStore } = useStores ( ) ;
4745 const orderSpotVm = useCreateOrderVM ( ) ;
4846 const media = useMedia ( ) ;
4947 const theme = useTheme ( ) ;
@@ -53,18 +51,19 @@ export const SpotOrderBook: React.FC<IProps> = observer(() => {
5351 const [ isSettingsOpen , openSettings , closeSettings ] = useFlag ( ) ;
5452
5553 useEffect ( ( ) => {
56- vm . calcSize ( media . mobile ) ;
54+ spotOrderBookStore . calcSize ( media . mobile ) ;
5755 } , [ media . mobile ] ) ;
5856
5957 const handleCalcSize = useCallback ( ( ) => {
60- vm . calcSize ( media . mobile ) ;
58+ spotOrderBookStore . calcSize ( media . mobile ) ;
6159 } , [ media . mobile ] ) ;
6260
6361 useEventListener ( "resize" , handleCalcSize ) ;
6462
65- const isOrderBookEmpty = vm . allBuyOrders . length === 0 && vm . allSellOrders . length === 0 ;
63+ const isOrderBookEmpty =
64+ spotOrderBookStore . allBuyOrders . length === 0 && spotOrderBookStore . allSellOrders . length === 0 ;
6665
67- if ( vm . isOrderBookLoading && isOrderBookEmpty ) {
66+ if ( spotOrderBookStore . isOrderBookLoading && isOrderBookEmpty ) {
6867 return < Loader size = { 32 } hideText /> ;
6968 }
7069
@@ -85,9 +84,9 @@ export const SpotOrderBook: React.FC<IProps> = observer(() => {
8584 < SettingIcon
8685 key = { index }
8786 alt = "filter"
88- selected = { vm . orderFilter === index }
87+ selected = { spotOrderBookStore . orderFilter === index }
8988 src = { value }
90- onClick = { ( ) => vm . setOrderFilter ( index ) }
89+ onClick = { ( ) => spotOrderBookStore . setOrderFilter ( index ) }
9190 />
9291 ) ) ;
9392 } ;
@@ -97,41 +96,45 @@ export const SpotOrderBook: React.FC<IProps> = observer(() => {
9796 return (
9897 < SpreadContainer >
9998 < Text type = { TEXT_TYPES . H } primary >
100- { vm . spreadPrice }
99+ { spotOrderBookStore . spreadPrice }
101100 </ Text >
102- < Text > { `(${ vm . spreadPercent } %)` } </ Text >
101+ < Text > { `(${ spotOrderBookStore . spreadPercent } %)` } </ Text >
103102 </ SpreadContainer >
104103 ) ;
105104 }
106105
107106 return (
108107 < SpreadContainer >
109108 < Text type = { TEXT_TYPES . SUPPORTING } > SPREAD</ Text >
110- < Text primary > { vm . spreadPrice } </ Text >
111- < Text > { `(${ vm . spreadPercent } %) ` } </ Text >
109+ < Text primary > { spotOrderBookStore . spreadPrice } </ Text >
110+ < Text > { `(${ spotOrderBookStore . spreadPercent } %) ` } </ Text >
112111 </ SpreadContainer >
113112 ) ;
114113 } ;
115114
116- const indexOfDecimal = SPOT_DECIMAL_OPTIONS . indexOf ( vm . decimalGroup ) ;
115+ const indexOfDecimal = SPOT_DECIMAL_OPTIONS . indexOf ( spotOrderBookStore . decimalGroup ) ;
117116
118117 const handleDecimalSelect = ( index : string ) => {
119118 const value = SPOT_DECIMAL_OPTIONS [ Number ( index ) ] ;
120- vm . setDecimalGroup ( value ) ;
119+ spotOrderBookStore . setDecimalGroup ( value ) ;
121120 } ;
122121
123122 const renderOrders = ( orders : SpotMarketOrder [ ] , type : "sell" | "buy" ) => {
124123 const orderMode = type === "sell" ? ORDER_MODE . BUY : ORDER_MODE . SELL ;
125124 const volumePercent = ( ord : SpotMarketOrder ) =>
126- type === "sell" ? ord . initialAmount . div ( vm . totalSell ) : ord . initialQuoteAmount . div ( vm . totalBuy ) ;
125+ type === "sell"
126+ ? ord . initialAmount . div ( spotOrderBookStore . totalSell )
127+ : ord . initialQuoteAmount . div ( spotOrderBookStore . totalBuy ) ;
127128 const color = type === "sell" ? theme . colors . redLight : theme . colors . greenLight ;
128129
129130 return orders . map ( ( o , index ) => (
130131 < OrderRow key = { index + "order" } type = { type } onClick = { ( ) => orderSpotVm . selectOrderbookOrder ( o , orderMode ) } >
131132 < VolumeBar type = { type } volumePercent = { volumePercent ( o ) . times ( 100 ) . toNumber ( ) } />
132133 < Text primary > { o . currentAmountUnits . toFormat ( 4 ) } </ Text >
133- < TextOverflow color = { color } > { o . priceUnits . toFormat ( vm . decimalGroup ) } </ TextOverflow >
134- < Text primary > { numeral ( o . currentQuoteAmountUnits ) . format ( `0.${ "0" . repeat ( vm . decimalGroup ) } a` ) } </ Text >
134+ < TextOverflow color = { color } > { o . priceUnits . toFormat ( spotOrderBookStore . decimalGroup ) } </ TextOverflow >
135+ < Text primary >
136+ { numeral ( o . currentQuoteAmountUnits ) . format ( `0.${ "0" . repeat ( spotOrderBookStore . decimalGroup ) } a` ) }
137+ </ Text >
135138 </ OrderRow >
136139 ) ) ;
137140 } ;
@@ -156,33 +159,56 @@ export const SpotOrderBook: React.FC<IProps> = observer(() => {
156159 < Text type = { TEXT_TYPES . SUPPORTING } > { `Total ${ market ?. quoteToken . symbol } ` } </ Text >
157160 </ OrderBookHeader >
158161 < Container
159- fitContent = { vm . orderFilter === SPOT_ORDER_FILTER . SELL || vm . orderFilter === SPOT_ORDER_FILTER . BUY }
160- reverse = { vm . orderFilter === SPOT_ORDER_FILTER . SELL }
162+ fitContent = {
163+ spotOrderBookStore . orderFilter === SPOT_ORDER_FILTER . SELL ||
164+ spotOrderBookStore . orderFilter === SPOT_ORDER_FILTER . BUY
165+ }
166+ reverse = { spotOrderBookStore . orderFilter === SPOT_ORDER_FILTER . SELL }
161167 >
162- { vm . orderFilter === SPOT_ORDER_FILTER . SELL_AND_BUY && (
168+ { spotOrderBookStore . orderFilter === SPOT_ORDER_FILTER . SELL_AND_BUY && (
163169 < Plug
164- length = { vm . sellOrders . length < + vm . oneSizeOrders ? + vm . oneSizeOrders - 1 - vm . sellOrders . length : 0 }
170+ length = {
171+ spotOrderBookStore . sellOrders . length < + spotOrderBookStore . oneSizeOrders
172+ ? + spotOrderBookStore . oneSizeOrders - 1 - spotOrderBookStore . sellOrders . length
173+ : 0
174+ }
165175 />
166176 ) }
167- { vm . orderFilter === SPOT_ORDER_FILTER . SELL && (
177+ { spotOrderBookStore . orderFilter === SPOT_ORDER_FILTER . SELL && (
168178 < Plug
169- length = { vm . sellOrders . length < + vm . amountOfOrders ? + vm . amountOfOrders - 1 - vm . sellOrders . length : 0 }
179+ length = {
180+ spotOrderBookStore . sellOrders . length < + spotOrderBookStore . amountOfOrders
181+ ? + spotOrderBookStore . amountOfOrders - 1 - spotOrderBookStore . sellOrders . length
182+ : 0
183+ }
170184 />
171185 ) }
172186
173- { vm . orderFilter !== SPOT_ORDER_FILTER . BUY && renderOrders ( vm . sellOrders , "sell" ) }
187+ { spotOrderBookStore . orderFilter !== SPOT_ORDER_FILTER . BUY &&
188+ renderOrders ( spotOrderBookStore . sellOrders , "sell" ) }
174189
175- { vm . orderFilter === SPOT_ORDER_FILTER . SELL_AND_BUY && renderSpread ( ) }
190+ { spotOrderBookStore . orderFilter === SPOT_ORDER_FILTER . SELL_AND_BUY && renderSpread ( ) }
176191
177- { vm . orderFilter !== SPOT_ORDER_FILTER . SELL && renderOrders ( vm . buyOrders , "buy" ) }
192+ { spotOrderBookStore . orderFilter !== SPOT_ORDER_FILTER . SELL &&
193+ renderOrders ( spotOrderBookStore . buyOrders , "buy" ) }
178194
179- { vm . orderFilter === SPOT_ORDER_FILTER . BUY && (
195+ { spotOrderBookStore . orderFilter === SPOT_ORDER_FILTER . BUY && (
180196 < Plug
181- length = { vm . buyOrders . length < + vm . amountOfOrders ? + vm . amountOfOrders - 1 - vm . buyOrders . length : 0 }
197+ length = {
198+ spotOrderBookStore . buyOrders . length < + spotOrderBookStore . amountOfOrders
199+ ? + spotOrderBookStore . amountOfOrders - 1 - spotOrderBookStore . buyOrders . length
200+ : 0
201+ }
182202 />
183203 ) }
184- { vm . orderFilter === SPOT_ORDER_FILTER . SELL_AND_BUY && (
185- < Plug length = { vm . buyOrders . length < + vm . oneSizeOrders ? + vm . oneSizeOrders - 1 - vm . buyOrders . length : 0 } />
204+ { spotOrderBookStore . orderFilter === SPOT_ORDER_FILTER . SELL_AND_BUY && (
205+ < Plug
206+ length = {
207+ spotOrderBookStore . buyOrders . length < + spotOrderBookStore . oneSizeOrders
208+ ? + spotOrderBookStore . oneSizeOrders - 1 - spotOrderBookStore . buyOrders . length
209+ : 0
210+ }
211+ />
186212 ) }
187213 </ Container >
188214
@@ -191,10 +217,10 @@ export const SpotOrderBook: React.FC<IProps> = observer(() => {
191217 filterIcons = { Object . entries ( SPOT_SETTINGS_ICONS ) . map ( ( [ key , value ] ) => value ) }
192218 isOpen = { isSettingsOpen }
193219 selectedDecimal = { String ( indexOfDecimal ) }
194- selectedFilter = { vm . orderFilter }
220+ selectedFilter = { spotOrderBookStore . orderFilter }
195221 onClose = { closeSettings }
196222 onDecimalSelect = { handleDecimalSelect }
197- onFilterSelect = { vm . setOrderFilter }
223+ onFilterSelect = { spotOrderBookStore . setOrderFilter }
198224 />
199225 </ OrderbookContainer >
200226 </ Root >
0 commit comments