match mango-v4 dev branch
Signed-off-by: microwavedcola1 <microwavedcola@gmail.com>
This commit is contained in:
parent
84cff1613e
commit
72e4808141
|
@ -38,9 +38,7 @@ const MangoAccountsList = ({
|
||||||
s.activityFeed.loading = true
|
s.activityFeed.loading = true
|
||||||
})
|
})
|
||||||
try {
|
try {
|
||||||
const reloadedMangoAccount = await retryFn(() =>
|
const reloadedMangoAccount = await retryFn(() => acc.reload(client))
|
||||||
acc.reload(client, group)
|
|
||||||
)
|
|
||||||
set((s) => {
|
set((s) => {
|
||||||
s.mangoAccount.current = reloadedMangoAccount
|
s.mangoAccount.current = reloadedMangoAccount
|
||||||
s.mangoAccount.lastUpdatedAt = new Date().toISOString()
|
s.mangoAccount.lastUpdatedAt = new Date().toISOString()
|
||||||
|
|
|
@ -46,7 +46,7 @@ const ReadOnlyMangoAccount = () => {
|
||||||
const client = mangoStore.getState().client
|
const client = mangoStore.getState().client
|
||||||
const pk = new PublicKey(ma)
|
const pk = new PublicKey(ma)
|
||||||
const readOnlyMangoAccount = await client.getMangoAccount(pk)
|
const readOnlyMangoAccount = await client.getMangoAccount(pk)
|
||||||
await readOnlyMangoAccount.reloadAccountData(client, group)
|
await readOnlyMangoAccount.reloadAccountData(client)
|
||||||
// set((state) => {
|
// set((state) => {
|
||||||
// state.mangoAccount.current = readOnlyMangoAccount
|
// state.mangoAccount.current = readOnlyMangoAccount
|
||||||
// state.mangoAccount.initialLoad = false
|
// state.mangoAccount.initialLoad = false
|
||||||
|
|
|
@ -26,6 +26,7 @@ import HealthHeart from './account/HealthHeart'
|
||||||
const SideNav = ({ collapsed }: { collapsed: boolean }) => {
|
const SideNav = ({ collapsed }: { collapsed: boolean }) => {
|
||||||
const { t } = useTranslation('common')
|
const { t } = useTranslation('common')
|
||||||
const { connected } = useWallet()
|
const { connected } = useWallet()
|
||||||
|
const group = mangoStore.getState().group
|
||||||
const mangoAccount = mangoStore((s) => s.mangoAccount.current)
|
const mangoAccount = mangoStore((s) => s.mangoAccount.current)
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const { pathname } = router
|
const { pathname } = router
|
||||||
|
@ -143,8 +144,8 @@ const SideNav = ({ collapsed }: { collapsed: boolean }) => {
|
||||||
icon={
|
icon={
|
||||||
<HealthHeart
|
<HealthHeart
|
||||||
health={
|
health={
|
||||||
mangoAccount
|
group && mangoAccount
|
||||||
? mangoAccount.getHealthRatioUi(HealthType.maint)
|
? mangoAccount.getHealthRatioUi(group, HealthType.maint)
|
||||||
: undefined
|
: undefined
|
||||||
}
|
}
|
||||||
size={32}
|
size={32}
|
||||||
|
|
|
@ -30,6 +30,7 @@ import { IS_ONBOARDED_KEY } from 'utils/constants'
|
||||||
import { useWallet } from '@solana/wallet-adapter-react'
|
import { useWallet } from '@solana/wallet-adapter-react'
|
||||||
import useLocalStorageState from 'hooks/useLocalStorageState'
|
import useLocalStorageState from 'hooks/useLocalStorageState'
|
||||||
import AccountOnboardingTour from '@components/tours/AccountOnboardingTour'
|
import AccountOnboardingTour from '@components/tours/AccountOnboardingTour'
|
||||||
|
import { group } from 'console'
|
||||||
|
|
||||||
export async function getStaticProps({ locale }: { locale: string }) {
|
export async function getStaticProps({ locale }: { locale: string }) {
|
||||||
return {
|
return {
|
||||||
|
@ -46,6 +47,7 @@ export async function getStaticProps({ locale }: { locale: string }) {
|
||||||
const AccountPage = () => {
|
const AccountPage = () => {
|
||||||
const { t } = useTranslation('common')
|
const { t } = useTranslation('common')
|
||||||
const { connected } = useWallet()
|
const { connected } = useWallet()
|
||||||
|
const group = mangoStore.getState().group
|
||||||
const { mangoAccount } = useMangoAccount()
|
const { mangoAccount } = useMangoAccount()
|
||||||
const actions = mangoStore((s) => s.actions)
|
const actions = mangoStore((s) => s.actions)
|
||||||
const loadPerformanceData = mangoStore(
|
const loadPerformanceData = mangoStore(
|
||||||
|
@ -71,10 +73,12 @@ const AccountPage = () => {
|
||||||
const [isOnboarded] = useLocalStorageState(IS_ONBOARDED_KEY)
|
const [isOnboarded] = useLocalStorageState(IS_ONBOARDED_KEY)
|
||||||
|
|
||||||
const leverage = useMemo(() => {
|
const leverage = useMemo(() => {
|
||||||
if (!mangoAccount) return 0
|
if (!group || !mangoAccount) return 0
|
||||||
const liabsValue = mangoAccount.getLiabsValue(HealthType.init)!.toNumber()
|
const liabsValue = mangoAccount
|
||||||
|
.getLiabsValue(group, HealthType.init)!
|
||||||
|
.toNumber()
|
||||||
const totalCollateral = mangoAccount
|
const totalCollateral = mangoAccount
|
||||||
.getAssetsValue(HealthType.init)!
|
.getAssetsValue(group, HealthType.init)!
|
||||||
.toNumber()
|
.toNumber()
|
||||||
return liabsValue / totalCollateral
|
return liabsValue / totalCollateral
|
||||||
}, [mangoAccount])
|
}, [mangoAccount])
|
||||||
|
@ -117,11 +121,11 @@ const AccountPage = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const { accountPnl, accountValueChange } = useMemo(() => {
|
const { accountPnl, accountValueChange } = useMemo(() => {
|
||||||
if (performanceData.length && mangoAccount) {
|
if (group && performanceData.length && mangoAccount) {
|
||||||
return {
|
return {
|
||||||
accountPnl: performanceData[performanceData.length - 1].pnl,
|
accountPnl: performanceData[performanceData.length - 1].pnl,
|
||||||
accountValueChange:
|
accountValueChange:
|
||||||
((toUiDecimalsForQuote(mangoAccount.getEquity()!.toNumber()) -
|
((toUiDecimalsForQuote(mangoAccount.getEquity(group)!.toNumber()) -
|
||||||
performanceData[0].account_equity) /
|
performanceData[0].account_equity) /
|
||||||
performanceData[0].account_equity) *
|
performanceData[0].account_equity) *
|
||||||
100,
|
100,
|
||||||
|
@ -166,7 +170,9 @@ const AccountPage = () => {
|
||||||
}, [oneDayPerformanceData, mangoAccount])
|
}, [oneDayPerformanceData, mangoAccount])
|
||||||
|
|
||||||
const maintHealth = useMemo(() => {
|
const maintHealth = useMemo(() => {
|
||||||
return mangoAccount ? mangoAccount.getHealthRatioUi(HealthType.maint) : 0
|
return group && mangoAccount
|
||||||
|
? mangoAccount.getHealthRatioUi(group, HealthType.maint)
|
||||||
|
: 0
|
||||||
}, [mangoAccount])
|
}, [mangoAccount])
|
||||||
|
|
||||||
const handleChartToShow = (
|
const handleChartToShow = (
|
||||||
|
@ -198,7 +204,7 @@ const AccountPage = () => {
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
<div className="mb-1 flex items-center text-5xl font-bold text-th-fgd-1">
|
<div className="mb-1 flex items-center text-5xl font-bold text-th-fgd-1">
|
||||||
$
|
$
|
||||||
{mangoAccount ? (
|
{group && mangoAccount ? (
|
||||||
<FlipNumbers
|
<FlipNumbers
|
||||||
height={48}
|
height={48}
|
||||||
width={32}
|
width={32}
|
||||||
|
@ -206,7 +212,9 @@ const AccountPage = () => {
|
||||||
delay={0.05}
|
delay={0.05}
|
||||||
duration={1}
|
duration={1}
|
||||||
numbers={formatDecimal(
|
numbers={formatDecimal(
|
||||||
toUiDecimalsForQuote(mangoAccount.getEquity()!.toNumber()),
|
toUiDecimalsForQuote(
|
||||||
|
mangoAccount.getEquity(group)!.toNumber()
|
||||||
|
),
|
||||||
2
|
2
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
@ -338,10 +346,10 @@ const AccountPage = () => {
|
||||||
</p>
|
</p>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
<p className="mt-1 mb-0.5 text-2xl font-bold text-th-fgd-1 lg:text-xl xl:text-2xl">
|
<p className="mt-1 mb-0.5 text-2xl font-bold text-th-fgd-1 lg:text-xl xl:text-2xl">
|
||||||
{mangoAccount
|
{group && mangoAccount
|
||||||
? formatFixedDecimals(
|
? formatFixedDecimals(
|
||||||
toUiDecimalsForQuote(
|
toUiDecimalsForQuote(
|
||||||
mangoAccount.getCollateralValue()!.toNumber()
|
mangoAccount.getCollateralValue(group)!.toNumber()
|
||||||
),
|
),
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
@ -356,11 +364,11 @@ const AccountPage = () => {
|
||||||
>
|
>
|
||||||
<span className="tooltip-underline">Total</span>:
|
<span className="tooltip-underline">Total</span>:
|
||||||
<span className="ml-1 font-mono text-th-fgd-2">
|
<span className="ml-1 font-mono text-th-fgd-2">
|
||||||
{mangoAccount
|
{group && mangoAccount
|
||||||
? formatFixedDecimals(
|
? formatFixedDecimals(
|
||||||
toUiDecimalsForQuote(
|
toUiDecimalsForQuote(
|
||||||
mangoAccount
|
mangoAccount
|
||||||
.getAssetsValue(HealthType.init)!
|
.getAssetsValue(group, HealthType.init)!
|
||||||
.toNumber()
|
.toNumber()
|
||||||
),
|
),
|
||||||
true
|
true
|
||||||
|
|
|
@ -15,15 +15,18 @@ import { useWallet } from '@solana/wallet-adapter-react'
|
||||||
const MangoAccountSummary = () => {
|
const MangoAccountSummary = () => {
|
||||||
const { t } = useTranslation('common')
|
const { t } = useTranslation('common')
|
||||||
const { connected } = useWallet()
|
const { connected } = useWallet()
|
||||||
|
const group = mangoStore.getState().group
|
||||||
const mangoAccount = mangoStore((s) => s.mangoAccount.current)
|
const mangoAccount = mangoStore((s) => s.mangoAccount.current)
|
||||||
const [showDepositModal, setShowDepositModal] = useState(false)
|
const [showDepositModal, setShowDepositModal] = useState(false)
|
||||||
const [showWithdrawModal, setShowWithdrawModal] = useState(false)
|
const [showWithdrawModal, setShowWithdrawModal] = useState(false)
|
||||||
|
|
||||||
const leverage = useMemo(() => {
|
const leverage = useMemo(() => {
|
||||||
if (!mangoAccount) return 0
|
if (!group || !mangoAccount) return 0
|
||||||
const liabsValue = mangoAccount.getLiabsValue(HealthType.init)!.toNumber()
|
const liabsValue = mangoAccount
|
||||||
|
.getLiabsValue(group, HealthType.init)!
|
||||||
|
.toNumber()
|
||||||
const totalCollateral = mangoAccount
|
const totalCollateral = mangoAccount
|
||||||
.getAssetsValue(HealthType.init)!
|
.getAssetsValue(group, HealthType.init)!
|
||||||
.toNumber()
|
.toNumber()
|
||||||
return liabsValue / totalCollateral
|
return liabsValue / totalCollateral
|
||||||
}, [mangoAccount])
|
}, [mangoAccount])
|
||||||
|
@ -34,7 +37,9 @@ const MangoAccountSummary = () => {
|
||||||
<div>
|
<div>
|
||||||
<p className="text-sm text-th-fgd-3">{t('health')}</p>
|
<p className="text-sm text-th-fgd-3">{t('health')}</p>
|
||||||
<p className="font-mono text-sm text-th-fgd-1">
|
<p className="font-mono text-sm text-th-fgd-1">
|
||||||
{mangoAccount ? mangoAccount.getHealthRatioUi(HealthType.maint) : 0}
|
{group && mangoAccount
|
||||||
|
? mangoAccount.getHealthRatioUi(group, HealthType.maint)
|
||||||
|
: 0}
|
||||||
%
|
%
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -42,9 +47,11 @@ const MangoAccountSummary = () => {
|
||||||
<p className="text-sm text-th-fgd-3">{t('account-value')}</p>
|
<p className="text-sm text-th-fgd-3">{t('account-value')}</p>
|
||||||
<p className="font-mono text-sm text-th-fgd-1">
|
<p className="font-mono text-sm text-th-fgd-1">
|
||||||
$
|
$
|
||||||
{mangoAccount
|
{group && mangoAccount
|
||||||
? formatDecimal(
|
? formatDecimal(
|
||||||
toUiDecimalsForQuote(mangoAccount.getEquity()!.toNumber()),
|
toUiDecimalsForQuote(
|
||||||
|
mangoAccount.getEquity(group)!.toNumber()
|
||||||
|
),
|
||||||
2
|
2
|
||||||
)
|
)
|
||||||
: (0).toFixed(2)}
|
: (0).toFixed(2)}
|
||||||
|
@ -53,10 +60,10 @@ const MangoAccountSummary = () => {
|
||||||
<div>
|
<div>
|
||||||
<p className="text-sm text-th-fgd-3">{t('free-collateral')}</p>
|
<p className="text-sm text-th-fgd-3">{t('free-collateral')}</p>
|
||||||
<p className="font-mono text-sm text-th-fgd-1">
|
<p className="font-mono text-sm text-th-fgd-1">
|
||||||
{mangoAccount
|
{group && mangoAccount
|
||||||
? formatFixedDecimals(
|
? formatFixedDecimals(
|
||||||
toUiDecimalsForQuote(
|
toUiDecimalsForQuote(
|
||||||
mangoAccount.getCollateralValue()!.toNumber()
|
mangoAccount.getCollateralValue(group)!.toNumber()
|
||||||
),
|
),
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
@ -66,10 +73,12 @@ const MangoAccountSummary = () => {
|
||||||
<div>
|
<div>
|
||||||
<p className="text-sm text-th-fgd-3">{t('total-collateral')}</p>
|
<p className="text-sm text-th-fgd-3">{t('total-collateral')}</p>
|
||||||
<p className="font-mono text-sm text-th-fgd-1">
|
<p className="font-mono text-sm text-th-fgd-1">
|
||||||
{mangoAccount
|
{group && mangoAccount
|
||||||
? formatFixedDecimals(
|
? formatFixedDecimals(
|
||||||
toUiDecimalsForQuote(
|
toUiDecimalsForQuote(
|
||||||
mangoAccount.getAssetsValue(HealthType.init)!.toNumber()
|
mangoAccount
|
||||||
|
.getAssetsValue(group, HealthType.init)!
|
||||||
|
.toNumber()
|
||||||
),
|
),
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|
|
@ -141,7 +141,9 @@ function BorrowModal({ isOpen, onClose, token }: ModalCombinedProps) {
|
||||||
}, [mangoAccount, group])
|
}, [mangoAccount, group])
|
||||||
|
|
||||||
const initHealth = useMemo(() => {
|
const initHealth = useMemo(() => {
|
||||||
return mangoAccount ? mangoAccount.getHealthRatioUi(HealthType.init) : 100
|
return group && mangoAccount
|
||||||
|
? mangoAccount.getHealthRatioUi(group, HealthType.init)
|
||||||
|
: 100
|
||||||
}, [mangoAccount])
|
}, [mangoAccount])
|
||||||
|
|
||||||
const showInsufficientBalance = Number(inputAmount)
|
const showInsufficientBalance = Number(inputAmount)
|
||||||
|
|
|
@ -31,7 +31,7 @@ const CloseAccountModal = ({ isOpen, onClose }: ModalProps) => {
|
||||||
)
|
)
|
||||||
let newCurrentAccount: MangoAccount
|
let newCurrentAccount: MangoAccount
|
||||||
if (newMangoAccounts[0]) {
|
if (newMangoAccounts[0]) {
|
||||||
newCurrentAccount = await newMangoAccounts[0].reload(client, group)
|
newCurrentAccount = await newMangoAccounts[0].reload(client)
|
||||||
}
|
}
|
||||||
|
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
|
|
|
@ -188,14 +188,14 @@ function DepositModal({ isOpen, onClose, token }: ModalCombinedProps) {
|
||||||
|
|
||||||
const exceedsAlphaMax = useMemo(() => {
|
const exceedsAlphaMax = useMemo(() => {
|
||||||
const mangoAccount = mangoStore.getState().mangoAccount.current
|
const mangoAccount = mangoStore.getState().mangoAccount.current
|
||||||
if (!mangoAccount) return
|
if (!group || !mangoAccount) return
|
||||||
if (
|
if (
|
||||||
mangoAccount.owner.toString() ===
|
mangoAccount.owner.toString() ===
|
||||||
'8SSLjXBEVk9nesbhi9UMCA32uijbVBUqWoKPPQPTekzt'
|
'8SSLjXBEVk9nesbhi9UMCA32uijbVBUqWoKPPQPTekzt'
|
||||||
)
|
)
|
||||||
return false
|
return false
|
||||||
const accountValue = toUiDecimalsForQuote(
|
const accountValue = toUiDecimalsForQuote(
|
||||||
mangoAccount.getEquity()!.toNumber()
|
mangoAccount.getEquity(group)!.toNumber()
|
||||||
)
|
)
|
||||||
return (
|
return (
|
||||||
parseFloat(inputAmount) > ALPHA_DEPOSIT_LIMIT ||
|
parseFloat(inputAmount) > ALPHA_DEPOSIT_LIMIT ||
|
||||||
|
|
|
@ -146,7 +146,9 @@ function WithdrawModal({ isOpen, onClose, token }: ModalCombinedProps) {
|
||||||
}, [mangoAccount, group])
|
}, [mangoAccount, group])
|
||||||
|
|
||||||
const initHealth = useMemo(() => {
|
const initHealth = useMemo(() => {
|
||||||
return mangoAccount ? mangoAccount.getHealthRatioUi(HealthType.init) : 100
|
return group && mangoAccount
|
||||||
|
? mangoAccount.getHealthRatioUi(group, HealthType.init)
|
||||||
|
: 100
|
||||||
}, [mangoAccount])
|
}, [mangoAccount])
|
||||||
|
|
||||||
const showInsufficientBalance = Number(inputAmount)
|
const showInsufficientBalance = Number(inputAmount)
|
||||||
|
|
|
@ -4,6 +4,7 @@ import { PublicKey } from '@solana/web3.js'
|
||||||
import { useTranslation } from 'next-i18next'
|
import { useTranslation } from 'next-i18next'
|
||||||
import { useMemo } from 'react'
|
import { useMemo } from 'react'
|
||||||
import mangoStore from '@store/mangoStore'
|
import mangoStore from '@store/mangoStore'
|
||||||
|
import { group } from 'console'
|
||||||
|
|
||||||
const HealthImpact = ({
|
const HealthImpact = ({
|
||||||
uiAmount,
|
uiAmount,
|
||||||
|
@ -15,11 +16,12 @@ const HealthImpact = ({
|
||||||
mintPk: PublicKey
|
mintPk: PublicKey
|
||||||
}) => {
|
}) => {
|
||||||
const { t } = useTranslation('common')
|
const { t } = useTranslation('common')
|
||||||
|
const group = mangoStore.getState().group
|
||||||
const mangoAccount = mangoStore((s) => s.mangoAccount.current)
|
const mangoAccount = mangoStore((s) => s.mangoAccount.current)
|
||||||
|
|
||||||
const currentMaintHealth = useMemo(() => {
|
const currentMaintHealth = useMemo(() => {
|
||||||
if (!mangoAccount) return 0
|
if (!group || !mangoAccount) return 0
|
||||||
return mangoAccount.getHealthRatioUi(HealthType.maint)
|
return mangoAccount.getHealthRatioUi(group, HealthType.maint)
|
||||||
}, [mangoAccount])
|
}, [mangoAccount])
|
||||||
|
|
||||||
const maintProjectedHealth = useMemo(() => {
|
const maintProjectedHealth = useMemo(() => {
|
||||||
|
|
|
@ -37,6 +37,7 @@ import { useTokenMax } from './useTokenMax'
|
||||||
import WalletIcon from '../icons/WalletIcon'
|
import WalletIcon from '../icons/WalletIcon'
|
||||||
import Tooltip from '@components/shared/Tooltip'
|
import Tooltip from '@components/shared/Tooltip'
|
||||||
import MaxAmountButton from '@components/shared/MaxAmountButton'
|
import MaxAmountButton from '@components/shared/MaxAmountButton'
|
||||||
|
import { group } from 'console'
|
||||||
|
|
||||||
const MAX_DIGITS = 11
|
const MAX_DIGITS = 11
|
||||||
export const withValueLimit = (values: NumberFormatValues): boolean => {
|
export const withValueLimit = (values: NumberFormatValues): boolean => {
|
||||||
|
@ -54,6 +55,8 @@ const SwapForm = () => {
|
||||||
const [showSettings, setShowSettings] = useState(false)
|
const [showSettings, setShowSettings] = useState(false)
|
||||||
const [showConfirm, setShowConfirm] = useState(false)
|
const [showConfirm, setShowConfirm] = useState(false)
|
||||||
|
|
||||||
|
const group = mangoStore.getState().group
|
||||||
|
|
||||||
const set = mangoStore.getState().set
|
const set = mangoStore.getState().set
|
||||||
const useMargin = mangoStore((s) => s.swap.margin)
|
const useMargin = mangoStore((s) => s.swap.margin)
|
||||||
const slippage = mangoStore((s) => s.swap.slippage)
|
const slippage = mangoStore((s) => s.swap.slippage)
|
||||||
|
@ -143,8 +146,8 @@ const SwapForm = () => {
|
||||||
}, [inputTokenInfo, outputTokenInfo, set, amountOut, amountIn])
|
}, [inputTokenInfo, outputTokenInfo, set, amountOut, amountIn])
|
||||||
|
|
||||||
const currentMaintHealth = useMemo(() => {
|
const currentMaintHealth = useMemo(() => {
|
||||||
if (!mangoAccount) return 0
|
if (!group || !mangoAccount) return 0
|
||||||
return mangoAccount.getHealthRatioUi(HealthType.maint)
|
return mangoAccount.getHealthRatioUi(group, HealthType.maint)
|
||||||
}, [mangoAccount])
|
}, [mangoAccount])
|
||||||
|
|
||||||
const maintProjectedHealth = useMemo(() => {
|
const maintProjectedHealth = useMemo(() => {
|
||||||
|
|
|
@ -176,7 +176,7 @@ const Orderbook = () => {
|
||||||
const serum3MarketExternal = useMemo(() => {
|
const serum3MarketExternal = useMemo(() => {
|
||||||
const group = mangoStore.getState().group
|
const group = mangoStore.getState().group
|
||||||
if (!group || !selectedMarket) return
|
if (!group || !selectedMarket) return
|
||||||
return group.serum3MarketExternalsMap.get(
|
return group.serum3ExternalMarketsMap.get(
|
||||||
selectedMarket.serumMarketExternal.toBase58()
|
selectedMarket.serumMarketExternal.toBase58()
|
||||||
)
|
)
|
||||||
}, [selectedMarket])
|
}, [selectedMarket])
|
||||||
|
@ -214,7 +214,7 @@ const Orderbook = () => {
|
||||||
const orderbook = mangoStore.getState().selectedMarket.orderbook
|
const orderbook = mangoStore.getState().selectedMarket.orderbook
|
||||||
const group = mangoStore.getState().group
|
const group = mangoStore.getState().group
|
||||||
if (!selectedMarket || !group) return
|
if (!selectedMarket || !group) return
|
||||||
const serum3MarketExternal = group.serum3MarketExternalsMap.get(
|
const serum3MarketExternal = group.serum3ExternalMarketsMap.get(
|
||||||
selectedMarket.serumMarketExternal.toBase58()
|
selectedMarket.serumMarketExternal.toBase58()
|
||||||
)
|
)
|
||||||
if (
|
if (
|
||||||
|
|
|
@ -16,7 +16,7 @@ const RecentTrades = () => {
|
||||||
const serum3MarketExternal = useMemo(() => {
|
const serum3MarketExternal = useMemo(() => {
|
||||||
const group = mangoStore.getState().group
|
const group = mangoStore.getState().group
|
||||||
if (!group || !selectedMarketPk) return
|
if (!group || !selectedMarketPk) return
|
||||||
return group.serum3MarketExternalsMap.get(selectedMarketPk)
|
return group.serum3ExternalMarketsMap.get(selectedMarketPk)
|
||||||
}, [selectedMarketPk])
|
}, [selectedMarketPk])
|
||||||
|
|
||||||
const baseSymbol = useMemo(() => {
|
const baseSymbol = useMemo(() => {
|
||||||
|
|
|
@ -12,7 +12,7 @@ export function useUnsettledSpotBalances() {
|
||||||
const unsettledBalances: Record<string, { base: number; quote: number }> =
|
const unsettledBalances: Record<string, { base: number; quote: number }> =
|
||||||
{}
|
{}
|
||||||
mangoAccount.serum3Active().forEach((serumMarket) => {
|
mangoAccount.serum3Active().forEach((serumMarket) => {
|
||||||
const market = group.getSerum3MarketByIndex(serumMarket.marketIndex)!
|
const market = group.getSerum3MarketByMarketIndex(serumMarket.marketIndex)!
|
||||||
const openOrdersAccForMkt = openOrdersAccounts.find((oo) =>
|
const openOrdersAccForMkt = openOrdersAccounts.find((oo) =>
|
||||||
oo.market.equals(market.serumMarketExternal)
|
oo.market.equals(market.serumMarketExternal)
|
||||||
)
|
)
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
"postinstall": "tar -xzC public -f vendor/charting_library.tgz;tar -xzC public -f vendor/datafeeds.tgz"
|
"postinstall": "tar -xzC public -f vendor/charting_library.tgz;tar -xzC public -f vendor/datafeeds.tgz"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@blockworks-foundation/mango-v4": "git+https://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:x-oauth-basic@github.com/blockworks-foundation/mango-v4.git#main",
|
"@blockworks-foundation/mango-v4": "git+https://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:x-oauth-basic@github.com/blockworks-foundation/mango-v4.git#dev",
|
||||||
"@headlessui/react": "^1.6.6",
|
"@headlessui/react": "^1.6.6",
|
||||||
"@heroicons/react": "^2.0.10",
|
"@heroicons/react": "^2.0.10",
|
||||||
"@jup-ag/core": "^2.0.0-beta.3",
|
"@jup-ag/core": "^2.0.0-beta.3",
|
||||||
|
|
|
@ -538,10 +538,7 @@ const mangoStore = create<MangoStore>()(
|
||||||
if (!mangoAccount)
|
if (!mangoAccount)
|
||||||
throw new Error('No mango account exists for reload')
|
throw new Error('No mango account exists for reload')
|
||||||
|
|
||||||
const reloadedMangoAccount = await mangoAccount.reload(
|
const reloadedMangoAccount = await mangoAccount.reload(client)
|
||||||
client,
|
|
||||||
group
|
|
||||||
)
|
|
||||||
set((state) => {
|
set((state) => {
|
||||||
state.mangoAccount.current = reloadedMangoAccount
|
state.mangoAccount.current = reloadedMangoAccount
|
||||||
state.mangoAccount.lastUpdatedAt = new Date().toISOString()
|
state.mangoAccount.lastUpdatedAt = new Date().toISOString()
|
||||||
|
@ -586,7 +583,7 @@ const mangoStore = create<MangoStore>()(
|
||||||
|
|
||||||
if (newSelectedMangoAccount) {
|
if (newSelectedMangoAccount) {
|
||||||
await retryFn(() =>
|
await retryFn(() =>
|
||||||
newSelectedMangoAccount!.reloadAccountData(client, group)
|
newSelectedMangoAccount!.reloadAccountData(client)
|
||||||
)
|
)
|
||||||
await actions.fetchSerumOpenOrders(newSelectedMangoAccount)
|
await actions.fetchSerumOpenOrders(newSelectedMangoAccount)
|
||||||
}
|
}
|
||||||
|
@ -636,7 +633,7 @@ const mangoStore = create<MangoStore>()(
|
||||||
try {
|
try {
|
||||||
let openOrders: Record<string, Order[]> = {}
|
let openOrders: Record<string, Order[]> = {}
|
||||||
for (const serum3Orders of mangoAccount.serum3) {
|
for (const serum3Orders of mangoAccount.serum3) {
|
||||||
const market = group.getSerum3MarketByIndex(
|
const market = group.getSerum3MarketByMarketIndex(
|
||||||
serum3Orders.marketIndex
|
serum3Orders.marketIndex
|
||||||
)
|
)
|
||||||
if (market) {
|
if (market) {
|
||||||
|
|
|
@ -14,7 +14,7 @@ const spotBalancesUpdater = (_newState: any, _prevState: any) => {
|
||||||
const balances: SpotBalances = {}
|
const balances: SpotBalances = {}
|
||||||
|
|
||||||
for (const serumMarket of mangoAccount.serum3Active()) {
|
for (const serumMarket of mangoAccount.serum3Active()) {
|
||||||
const market = group.getSerum3MarketByIndex(serumMarket.marketIndex)
|
const market = group.getSerum3MarketByMarketIndex(serumMarket.marketIndex)
|
||||||
if (!market) continue
|
if (!market) continue
|
||||||
const openOrdersAccForMkt = openOrdersAccounts.find((oo) =>
|
const openOrdersAccForMkt = openOrdersAccounts.find((oo) =>
|
||||||
oo.market.equals(market.serumMarketExternal)
|
oo.market.equals(market.serumMarketExternal)
|
||||||
|
@ -52,11 +52,15 @@ const spotBalancesUpdater = (_newState: any, _prevState: any) => {
|
||||||
|
|
||||||
let quoteBalances =
|
let quoteBalances =
|
||||||
balances[
|
balances[
|
||||||
market.getSerum3ExternalMarket(group)!.quoteMintAddress.toString()
|
group
|
||||||
|
.getSerum3ExternalMarket(market.serumMarketExternal)
|
||||||
|
.quoteMintAddress.toString()
|
||||||
]
|
]
|
||||||
if (!quoteBalances) {
|
if (!quoteBalances) {
|
||||||
quoteBalances = balances[
|
quoteBalances = balances[
|
||||||
market.getSerum3ExternalMarket(group)!.quoteMintAddress.toString()
|
group
|
||||||
|
.getSerum3ExternalMarket(market.serumMarketExternal)
|
||||||
|
.quoteMintAddress.toString()
|
||||||
] = { inOrders: 0, unsettled: 0 }
|
] = { inOrders: 0, unsettled: 0 }
|
||||||
}
|
}
|
||||||
quoteBalances.inOrders += quoteTokenLockedInOrder || 0
|
quoteBalances.inOrders += quoteTokenLockedInOrder || 0
|
||||||
|
@ -64,11 +68,15 @@ const spotBalancesUpdater = (_newState: any, _prevState: any) => {
|
||||||
|
|
||||||
let baseBalances =
|
let baseBalances =
|
||||||
balances[
|
balances[
|
||||||
market.getSerum3ExternalMarket(group)!.baseMintAddress.toString()
|
group
|
||||||
|
.getSerum3ExternalMarket(market.serumMarketExternal)
|
||||||
|
.baseMintAddress.toString()
|
||||||
]
|
]
|
||||||
if (!baseBalances) {
|
if (!baseBalances) {
|
||||||
baseBalances = balances[
|
baseBalances = balances[
|
||||||
market.getSerum3ExternalMarket(group)!.baseMintAddress.toString()
|
group
|
||||||
|
.getSerum3ExternalMarket(market.serumMarketExternal)
|
||||||
|
.baseMintAddress.toString()
|
||||||
] = { inOrders: 0, unsettled: 0 }
|
] = { inOrders: 0, unsettled: 0 }
|
||||||
}
|
}
|
||||||
baseBalances.inOrders += baseTokenLockedInOrder
|
baseBalances.inOrders += baseTokenLockedInOrder
|
||||||
|
|
|
@ -43,14 +43,15 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
regenerator-runtime "^0.13.4"
|
regenerator-runtime "^0.13.4"
|
||||||
|
|
||||||
"@blockworks-foundation/mango-v4@git+https://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:x-oauth-basic@github.com/blockworks-foundation/mango-v4.git#main":
|
"@blockworks-foundation/mango-v4@git+https://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:x-oauth-basic@github.com/blockworks-foundation/mango-v4.git#dev":
|
||||||
version "0.0.1-beta.3"
|
version "0.0.1-beta.3"
|
||||||
resolved "git+https://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:x-oauth-basic@github.com/blockworks-foundation/mango-v4.git#0def20960819a96d9200d76cbbffc81977f9a0b2"
|
resolved "git+https://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:x-oauth-basic@github.com/blockworks-foundation/mango-v4.git#8f6fa5134ddfb61358a261658fbe6628eb2b5acd"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@project-serum/anchor" "^0.25.0"
|
"@project-serum/anchor" "^0.25.0"
|
||||||
"@project-serum/serum" "^0.13.65"
|
"@project-serum/serum" "^0.13.65"
|
||||||
"@pythnetwork/client" "^2.7.0"
|
"@pythnetwork/client" "^2.7.0"
|
||||||
"@solana/spl-token" "^0.1.8"
|
"@solana/spl-token" "^0.1.8"
|
||||||
|
"@solana/web3.js" "^1.63.1"
|
||||||
"@switchboard-xyz/switchboard-v2" "^0.0.129"
|
"@switchboard-xyz/switchboard-v2" "^0.0.129"
|
||||||
big.js "^6.1.1"
|
big.js "^6.1.1"
|
||||||
bs58 "^5.0.0"
|
bs58 "^5.0.0"
|
||||||
|
@ -1304,7 +1305,7 @@
|
||||||
superstruct "^0.14.2"
|
superstruct "^0.14.2"
|
||||||
tweetnacl "^1.0.0"
|
tweetnacl "^1.0.0"
|
||||||
|
|
||||||
"@solana/web3.js@^1.17.0", "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.22.0", "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.44.3":
|
"@solana/web3.js@^1.17.0", "@solana/web3.js@^1.21.0", "@solana/web3.js@^1.22.0", "@solana/web3.js@^1.32.0", "@solana/web3.js@^1.36.0", "@solana/web3.js@^1.44.3", "@solana/web3.js@^1.63.1":
|
||||||
version "1.63.1"
|
version "1.63.1"
|
||||||
resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.63.1.tgz#88a19a17f5f4aada73ad70a94044c1067cab2b4d"
|
resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.63.1.tgz#88a19a17f5f4aada73ad70a94044c1067cab2b4d"
|
||||||
integrity sha512-wgEdGVK5FTS2zENxbcGSvKpGZ0jDS6BUdGu8Gn6ns0CzgJkK83u4ip3THSnBPEQ5i/jrqukg998BwV1H67+qiQ==
|
integrity sha512-wgEdGVK5FTS2zENxbcGSvKpGZ0jDS6BUdGu8Gn6ns0CzgJkK83u4ip3THSnBPEQ5i/jrqukg998BwV1H67+qiQ==
|
||||||
|
|
Loading…
Reference in New Issue