fixup recent trades decimals

This commit is contained in:
tjs 2022-11-20 23:52:03 -05:00
parent 69304a2457
commit ef144b672f
6 changed files with 46 additions and 49 deletions

View File

@ -21,7 +21,6 @@ import {
BookSideType,
MangoClient,
PerpMarket,
Serum3Market,
} from '@blockworks-foundation/mango-v4'
import useSelectedMarket from 'hooks/useSelectedMarket'
@ -175,7 +174,7 @@ const depth = 40
const Orderbook = () => {
const { t } = useTranslation(['common', 'trade'])
const { selectedMarket } = useSelectedMarket()
const { selectedMarket, serumOrPerpMarket: market } = useSelectedMarket()
const [isScrolled, setIsScrolled] = useState(false)
const [orderbookData, setOrderbookData] = useState<any | null>(null)
@ -196,17 +195,6 @@ const Orderbook = () => {
return Array(bookDepth).fill(0)
}, [isMobile])
const market = useMemo(() => {
const group = mangoStore.getState().group
if (!group || !selectedMarket) return
if (selectedMarket instanceof Serum3Market) {
return group?.getSerum3ExternalMarket(selectedMarket.serumMarketExternal)
} else {
return selectedMarket
}
}, [selectedMarket])
useEffect(() => {
if (!market) return
setGrouping(market.tickSize)

View File

@ -1,32 +1,19 @@
import useInterval from '@components/shared/useInterval'
import mangoStore from '@store/mangoStore'
import { useMemo } from 'react'
import { useEffect, useMemo } from 'react'
// import isEqual from 'lodash/isEqual'
import { floorToDecimal, getDecimalCount } from 'utils/numbers'
import Decimal from 'decimal.js'
import { ChartTradeType } from 'types'
import { useTranslation } from 'next-i18next'
import { Serum3Market } from '@blockworks-foundation/mango-v4'
import useSelectedMarket from 'hooks/useSelectedMarket'
const RecentTrades = () => {
const { t } = useTranslation(['common', 'trade'])
// const [trades, setTrades] = useState<any[]>([])
const { t } = useTranslation(['common', 'trade'])
const fills = mangoStore((s) => s.selectedMarket.fills)
console.log('fills', fills)
const { selectedMarket } = useSelectedMarket()
const market = useMemo(() => {
const group = mangoStore.getState().group
if (!group || !selectedMarket) return
if (selectedMarket instanceof Serum3Market) {
return group?.getSerum3ExternalMarket(selectedMarket.serumMarketExternal)
} else {
return selectedMarket
}
}, [selectedMarket])
const { selectedMarket, serumOrPerpMarket: market } = useSelectedMarket()
const baseSymbol = useMemo(() => {
return selectedMarket?.name.split('/')[0]
@ -57,11 +44,13 @@ const RecentTrades = () => {
// }
// }, [market, trades])
// useEffect(() => {
// if (CLUSTER === 'mainnet-beta') {
// fetchRecentTrades()
// }
// }, [fetchRecentTrades])
useEffect(() => {
// if (CLUSTER === 'mainnet-beta') {
// fetchRecentTrades()
// }
const actions = mangoStore.getState().actions
actions.loadMarketFills()
}, [selectedMarket])
useInterval(async () => {
// if (CLUSTER === 'mainnet-beta') {
@ -88,16 +77,31 @@ const RecentTrades = () => {
<tbody>
{!!fills.length &&
fills.map((trade: ChartTradeType, i: number) => {
console.log(
'price: ',
trade.price,
' size: ',
trade.size,
trade.quantity
)
// const price =
typeof trade.price === 'number'
? trade.price
: trade.price.toNumber()
const formattedPrice = market?.tickSize
? floorToDecimal(trade.price, getDecimalCount(market.tickSize))
: new Decimal(trade?.price || 0)
const formattedSize = market?.minOrderSize
? floorToDecimal(
trade.size,
getDecimalCount(market.minOrderSize)
)
: new Decimal(trade?.size || 0)
// const size = trade?.quantity?.toNumber() || trade?.size
const formattedSize =
market?.minOrderSize && trade.size
? floorToDecimal(
trade.size,
getDecimalCount(market.minOrderSize)
)
: new Decimal(trade.size || 0)
return (
<tr className="font-mono text-xs" key={i}>
<td

View File

@ -20,10 +20,16 @@ export default function useSelectedMarket() {
} else return 0
}, [selectedMarket, group])
const serumOrPerpMarket =
selectedMarket instanceof Serum3Market
? group?.getSerum3ExternalMarket(selectedMarket.serumMarketExternal)
: selectedMarket
const serumOrPerpMarket = useMemo(() => {
const group = mangoStore.getState().group
if (!group || !selectedMarket) return
if (selectedMarket instanceof Serum3Market) {
return group?.getSerum3ExternalMarket(selectedMarket.serumMarketExternal)
} else {
return selectedMarket
}
}, [selectedMarket])
return { selectedMarket, price, serumOrPerpMarket }
}

View File

@ -1,7 +1,8 @@
export interface ChartTradeType {
market: string
size: number
price: number
quantity: number | any
price: number | any
orderId: string
time: number
side: string

View File

@ -29,9 +29,7 @@ export const floorToDecimal = (
value: number | string | Decimal,
decimals: number
): Decimal => {
const decimal: Decimal = !(value instanceof Decimal)
? new Decimal(value)
: value
const decimal = value instanceof Decimal ? value : new Decimal(value)
return decimal.toDecimalPlaces(decimals, Decimal.ROUND_DOWN)
}

View File

@ -52,7 +52,7 @@
"@blockworks-foundation/mango-v4@https://tylersssss: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@github.com/blockworks-foundation/mango-v4.git#main":
version "0.0.1-beta.6"
resolved "https://tylersssss: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@github.com/blockworks-foundation/mango-v4.git#80809c640406ea79ebd286b284b89f63803b16bf"
resolved "https://tylersssss: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@github.com/blockworks-foundation/mango-v4.git#256b948207fe82d58cce7790190d50347f3c81df"
dependencies:
"@project-serum/anchor" "^0.25.0"
"@project-serum/serum" "^0.13.65"