import ExplorerLink from '@components/shared/ExplorerLink' import useMangoGroup from 'hooks/useMangoGroup' import type { NextPage } from 'next' import { ReactNode, useCallback, useEffect, useState } from 'react' import { serverSideTranslations } from 'next-i18next/serverSideTranslations' import useMangoAccount from 'hooks/useMangoAccount' import { toUiDecimalsForQuote, HealthType, PerpOrder, } from '@blockworks-foundation/mango-v4' import mangoStore from '@store/mangoStore' export async function getStaticProps({ locale }: { locale: string }) { return { props: { ...(await serverSideTranslations(locale, ['common'])), }, } } const Dashboard: NextPage = () => { const { group } = useMangoGroup() // const { mangoTokens } = useJupiterMints() // const client = mangoStore(s => s.client) const { mangoAccount } = useMangoAccount() const client = mangoStore((s) => s.client) const [openOrders, setOpenOrders] = useState>() useEffect(() => { if (mangoAccount) { loadOpenOrders() } }, [mangoAccount]) const loadOpenOrders = useCallback(async () => { if (!mangoAccount || !group) return const openOrders: Record = {} for (const perpOrder of mangoAccount.perpOrdersActive()) { const market = group.getPerpMarketByMarketIndex(perpOrder.orderMarket) const orders = await mangoAccount.loadPerpOpenOrdersForMarket( client, group, perpOrder.orderMarket ) openOrders[market.publicKey.toString()] = orders } setOpenOrders(openOrders) }, [mangoAccount, client, group]) return (

Dashboard

{group && mangoAccount ? (

Mango Account

} /> } /> } />

Token Active Positions

{mangoAccount.tokensActive().map((token) => { const bank = group.getFirstBankByTokenIndex(token.tokenIndex) return (
) })}

Serum3 Active Positions

{mangoAccount.serum3Active().map((serum) => { const market = group.getSerum3MarketByMarketIndex( serum.marketIndex ) const extMarket = group.getSerum3ExternalMarket( market.serumMarketExternal ) return (
} /> } />
) })}

Perp Active Positions

{mangoAccount.perpActive().map((perp) => { const market = group.getPerpMarketByMarketIndex( perp.marketIndex ) return (
} />
) })}

Perp Open Orders

{openOrders ? Object.entries(openOrders).map( ([marketAddress, openOrders]) => { return (
} /> {openOrders.map((openOrder) => { return (
) })}
) } ) : null}
) : ( 'Loading' )}
) } const KeyValuePair = ({ label, value, }: { label: string value: number | ReactNode | string }) => { return (
{label} {value}
) } export default Dashboard