Merge branch 'main' into edit-orders

This commit is contained in:
Adrian Brzeziński 2022-12-14 21:41:28 +01:00
commit 5027c2f77e
8 changed files with 46 additions and 24 deletions

View File

@ -34,6 +34,7 @@ const HydrateStore = () => {
useEffect(() => { useEffect(() => {
const connection = mangoStore.getState().connection const connection = mangoStore.getState().connection
const client = mangoStore.getState().client const client = mangoStore.getState().client
const set = mangoStore.getState().set
if (!mangoAccount) return if (!mangoAccount) return
@ -68,12 +69,9 @@ const HydrateStore = () => {
// newMangoAccount.spotOpenOrdersAccounts = // newMangoAccount.spotOpenOrdersAccounts =
// mangoAccount.spotOpenOrdersAccounts // mangoAccount.spotOpenOrdersAccounts
// newMangoAccount.advancedOrders = mangoAccount.advancedOrders // newMangoAccount.advancedOrders = mangoAccount.advancedOrders
mangoStore.setState({ set((s) => {
mangoAccount: { s.mangoAccount.current = newMangoAccount
...mangoStore.getState().mangoAccount, s.mangoAccount.lastSlot = context.slot
current: newMangoAccount,
lastSlot: context.slot,
},
}) })
} }
} }

View File

@ -132,7 +132,7 @@ const TokenStats = () => {
}, },
])} ])}
daysToShow={'999'} daysToShow={'999'}
heightClass="h-72" heightClass="h-64"
prefix="$" prefix="$"
tickFormat={(x) => `$${x.toFixed(2)}`} tickFormat={(x) => `$${x.toFixed(2)}`}
title={t('total-deposit-value')} title={t('total-deposit-value')}
@ -158,7 +158,7 @@ const TokenStats = () => {
}, },
])} ])}
daysToShow={'999'} daysToShow={'999'}
heightClass="h-72" heightClass="h-64"
prefix="$" prefix="$"
tickFormat={(x) => `$${x.toFixed(2)}`} tickFormat={(x) => `$${x.toFixed(2)}`}
title={t('total-borrow-value')} title={t('total-borrow-value')}

View File

@ -59,6 +59,7 @@ const ChartTabs = ({ token }: { token: string }) => {
<DetailedAreaChart <DetailedAreaChart
data={statsHistory} data={statsHistory}
daysToShow={'999'} daysToShow={'999'}
heightClass="h-64"
// domain={[0, 'dataMax']} // domain={[0, 'dataMax']}
loading={loadingTokenStats} loading={loadingTokenStats}
small small
@ -71,6 +72,7 @@ const ChartTabs = ({ token }: { token: string }) => {
<DetailedAreaChart <DetailedAreaChart
data={statsHistory} data={statsHistory}
daysToShow={'999'} daysToShow={'999'}
heightClass="h-64"
// domain={[0, 'dataMax']} // domain={[0, 'dataMax']}
loading={loadingTokenStats} loading={loadingTokenStats}
hideChange hideChange
@ -101,6 +103,7 @@ const ChartTabs = ({ token }: { token: string }) => {
<DetailedAreaChart <DetailedAreaChart
data={statsHistory} data={statsHistory}
daysToShow={'999'} daysToShow={'999'}
heightClass="h-64"
// domain={[0, 'dataMax']} // domain={[0, 'dataMax']}
loading={loadingTokenStats} loading={loadingTokenStats}
small small
@ -113,6 +116,7 @@ const ChartTabs = ({ token }: { token: string }) => {
<DetailedAreaChart <DetailedAreaChart
data={statsHistory} data={statsHistory}
daysToShow={'999'} daysToShow={'999'}
heightClass="h-64"
// domain={[0, 'dataMax']} // domain={[0, 'dataMax']}
loading={loadingTokenStats} loading={loadingTokenStats}
small small

View File

@ -207,8 +207,8 @@ const AdvancedTradeForm = () => {
} else { } else {
tickSize = selectedMarket.tickSize tickSize = selectedMarket.tickSize
} }
if (tradeForm.baseSize) { if (!isNaN(parseFloat(tradeForm.baseSize))) {
const baseSize = new Decimal(tradeForm.baseSize).toNumber() const baseSize = new Decimal(tradeForm.baseSize)?.toNumber()
const orderbook = mangoStore.getState().selectedMarket.orderbook const orderbook = mangoStore.getState().selectedMarket.orderbook
const price = calculateMarketPrice(orderbook, baseSize, tradeForm.side) const price = calculateMarketPrice(orderbook, baseSize, tradeForm.side)
const quoteSize = baseSize * price const quoteSize = baseSize * price

View File

@ -162,14 +162,14 @@ const UnsettledTrades = ({
<TableMarketName market={market} /> <TableMarketName market={market} />
</Td> </Td>
<Td className="text-right font-mono"> <Td className="text-right font-mono">
<div className="flex"> <div className="flex justify-end">
<div> <div>
{unsettledSpotBalances[mktAddress].base || 0.0}{' '} {unsettledSpotBalances[mktAddress].base || 0.0}{' '}
<span className="font-body tracking-wide text-th-fgd-4"> <span className="font-body tracking-wide text-th-fgd-4">
{base} {base}
</span> </span>
</div> </div>
<div> <div className="ml-4">
{unsettledSpotBalances[mktAddress].quote || 0.0}{' '} {unsettledSpotBalances[mktAddress].quote || 0.0}{' '}
<span className="font-body tracking-wide text-th-fgd-4"> <span className="font-body tracking-wide text-th-fgd-4">
{quote} {quote}

View File

@ -4,6 +4,7 @@ import type { NextPage } from 'next'
import { ReactNode } from 'react' import { ReactNode } from 'react'
import { serverSideTranslations } from 'next-i18next/serverSideTranslations' import { serverSideTranslations } from 'next-i18next/serverSideTranslations'
import useMangoAccount from 'hooks/useMangoAccount' import useMangoAccount from 'hooks/useMangoAccount'
import { toUiDecimalsForQuote, HealthType } from '@blockworks-foundation/mango-v4';
export async function getStaticProps({ locale }: { locale: string }) { export async function getStaticProps({ locale }: { locale: string }) {
return { return {
@ -53,9 +54,21 @@ const Dashboard: NextPage = () => {
label="Being Liquidated" label="Being Liquidated"
value={mangoAccount.beingLiquidated.toString()} value={mangoAccount.beingLiquidated.toString()}
/> />
<KeyValuePair
label="Init Health"
value={`$${toUiDecimalsForQuote(mangoAccount.getHealth(group, HealthType.init)).toFixed(4)}`}
/>
<KeyValuePair
label="Maint Health"
value={`$${toUiDecimalsForQuote(mangoAccount.getHealth(group, HealthType.maint)).toFixed(4)}`}
/>
<KeyValuePair
label="Perp Settle Health"
value={`$${toUiDecimalsForQuote(mangoAccount.getPerpSettleHealth(group)).toFixed(4)}`}
/>
<KeyValuePair <KeyValuePair
label="Net Deposits" label="Net Deposits"
value={mangoAccount.netDeposits.toNumber()} value={`$${toUiDecimalsForQuote(mangoAccount.netDeposits).toFixed(4)}`}
/> />
<KeyValuePair <KeyValuePair
label="Perp Spot Transfers" label="Perp Spot Transfers"
@ -73,12 +86,12 @@ const Dashboard: NextPage = () => {
<div key={token.tokenIndex} className="mt-6"> <div key={token.tokenIndex} className="mt-6">
<KeyValuePair label="Token's Bank Name" value={bank.name} /> <KeyValuePair label="Token's Bank Name" value={bank.name} />
<KeyValuePair <KeyValuePair
label="Deposits UI" label="Balance UI"
value={token.depositsUi(bank)} value={token.balanceUi(bank)}
/> />
<KeyValuePair <KeyValuePair
label="Borrows UI" label="Value at oracle price"
value={token.borrowsUi(bank)} value={`$${token.balanceUi(bank) * bank.uiPrice}`}
/> />
</div> </div>
) )
@ -140,8 +153,8 @@ const Dashboard: NextPage = () => {
value={perp.getBasePositionUi(market)} value={perp.getBasePositionUi(market)}
/> />
<KeyValuePair <KeyValuePair
label="Quote Position Native" label="Quote Position UI"
value={perp.quotePositionNative.toNumber()} value={`$${toUiDecimalsForQuote(perp.quotePositionNative).toFixed(4)}`}
/> />
<KeyValuePair <KeyValuePair
label="Quote Running Native" label="Quote Running Native"

View File

@ -939,6 +939,10 @@ const mangoStore = create<MangoStore>()(
) )
mangoStore.subscribe((state) => state.mangoAccount.current, spotBalancesUpdater) mangoStore.subscribe((state) => state.mangoAccount.current, spotBalancesUpdater)
mangoStore.subscribe(
(state) => state.mangoAccount.openOrderAccounts,
spotBalancesUpdater
)
mangoStore.subscribe( mangoStore.subscribe(
(state) => state.mangoAccount.current, (state) => state.mangoAccount.current,
perpPositionsUpdater perpPositionsUpdater

View File

@ -38,10 +38,13 @@ export const calculateSlippage = (
const ba = orderBook?.asks?.length > 0 && Number(orderBook.asks[0][0]) const ba = orderBook?.asks?.length > 0 && Number(orderBook.asks[0][0])
const referencePrice = bb && ba ? (bb + ba) / 2 : markPrice const referencePrice = bb && ba ? (bb + ba) / 2 : markPrice
const estimatedPrice = calculateMarketPrice(orderBook, Number(size), side) if (Number(size)) {
const estimatedPrice = calculateMarketPrice(orderBook, Number(size), side)
const slippageAbs = const slippageAbs =
Number(size) > 0 ? Math.abs(estimatedPrice - referencePrice) : 0 Number(size) > 0 ? Math.abs(estimatedPrice - referencePrice) : 0
const slippageRel = (slippageAbs / referencePrice) * 100 const slippageRel = (slippageAbs / referencePrice) * 100
return slippageRel return slippageRel
}
return 0
} }