Skip to content

Commit

Permalink
Merge pull request #1085 from mars-protocol/develop
Browse files Browse the repository at this point in the history
v2.6.7
  • Loading branch information
linkielink authored Aug 29, 2024
2 parents e81abf7 + 21ab9d4 commit d3ef5f9
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 49 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mars-v2-frontend",
"version": "2.6.6",
"version": "2.6.7",
"homepage": "./",
"license": "SEE LICENSE IN LICENSE FILE",
"private": false,
Expand Down
4 changes: 2 additions & 2 deletions src/components/portfolio/Account/ManageAccount.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { useCallback, useMemo } from 'react'
import AccountFundFullPage from 'components/account/AccountFund/AccountFundFullPage'
import Button from 'components/common/Button'
import { ArrowDownLine, ArrowUpLine, TrashBin } from 'components/common/Icons'
import useDepositEnabledAssets from 'hooks/assets/useDepositEnabledAssets'
import useWhitelistedAssets from 'hooks/assets/useWhitelistedAssets'
import { useLocation, useNavigate, useSearchParams } from 'react-router-dom'
import useStore from 'store'
import { calculateAccountBalanceValue } from 'utils/accounts'
Expand All @@ -19,7 +19,7 @@ export default function ManageAccount(props: Props) {
const { pathname } = useLocation()
const [searchParams] = useSearchParams()
const address = useStore((s) => s.address)
const assets = useDepositEnabledAssets()
const assets = useWhitelistedAssets()
const isHls = account.kind === 'high_levered_strategy'
const positionBalance = useMemo(
() => (!account ? null : calculateAccountBalanceValue(account, assets)),
Expand Down
2 changes: 1 addition & 1 deletion src/components/portfolio/Account/Strategies.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ interface Props {
function Content(props: Props) {
const { account } = props

if (account.vaults.length === 0) {
if (account.vaults.length === 0 && account.stakedAstroLps.length === 0) {
return null
}

Expand Down
6 changes: 3 additions & 3 deletions src/components/portfolio/Account/Summary.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ import { FormattedNumber } from 'components/common/FormattedNumber'
import useLendingMarketAssetsTableData from 'components/earn/lend/Table/useLendingMarketAssetsTableData'
import Skeleton from 'components/portfolio/SummarySkeleton'
import { MAX_AMOUNT_DECIMALS } from 'constants/math'
import useAssets from 'hooks/assets/useAssets'
import useAstroLpAprs from 'hooks/astroLp/useAstroLpAprs'
import useHealthComputer from 'hooks/health-computer/useHealthComputer'
import useHLSStakingAssets from 'hooks/hls/useHLSStakingAssets'
import useVaultAprs from 'hooks/vaults/useVaultAprs'
import { getAccountSummaryStats } from 'utils/accounts'
import { DEFAULT_PORTFOLIO_STATS } from 'utils/constants'
import useWhitelistedAssets from 'hooks/assets/useWhitelistedAssets'

interface Props {
account: Account
Expand All @@ -27,7 +27,7 @@ function Content(props: Props) {
const borrowAssets = useMemo(() => data?.allAssets || [], [data])
const { allAssets: lendingAssets } = useLendingMarketAssetsTableData()
const { data: hlsStrategies } = useHLSStakingAssets()
const { data: assets } = useAssets()
const assets = useWhitelistedAssets()
const astroLpAprs = useAstroLpAprs()

const stats = useMemo(() => {
Expand Down Expand Up @@ -75,7 +75,7 @@ function Content(props: Props) {
title: (
<FormattedNumber
className='text-xl'
amount={isNaN(leverage.toNumber()) ? 1 : leverage.toNumber()}
amount={leverage.toNumber() || 1}
options={{ suffix: 'x' }}
/>
),
Expand Down
50 changes: 14 additions & 36 deletions src/components/portfolio/Card/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,17 @@ import useLendingMarketAssetsTableData from 'components/earn/lend/Table/useLendi
import Skeleton from 'components/portfolio/Card/Skeleton'
import { getDefaultChainSettings } from 'constants/defaultSettings'
import { LocalStorageKeys } from 'constants/localStorageKeys'
import { BN_ZERO } from 'constants/math'
import useAccount from 'hooks/accounts/useAccount'
import useAccountId from 'hooks/accounts/useAccountId'
import useDepositEnabledAssets from 'hooks/assets/useDepositEnabledAssets'
import useAstroLpAprs from 'hooks/astroLp/useAstroLpAprs'
import useHealthComputer from 'hooks/health-computer/useHealthComputer'
import useHLSStakingAssets from 'hooks/hls/useHLSStakingAssets'
import useLocalStorage from 'hooks/localStorage/useLocalStorage'
import useVaultAprs from 'hooks/vaults/useVaultAprs'
import {
calculateAccountApr,
calculateAccountLeverage,
getAccountPositionValues,
} from 'utils/accounts'
import { getAccountSummaryStats } from 'utils/accounts'
import { getRoute } from 'utils/route'
import useChainConfig from 'hooks/chain/useChainConfig'
import useWhitelistedAssets from 'hooks/assets/useWhitelistedAssets'

interface Props {
accountId: string
Expand All @@ -42,46 +37,29 @@ export default function PortfolioCard(props: Props) {
const { data: hlsStrategies } = useHLSStakingAssets()
const { data: vaultAprs } = useVaultAprs()
const [searchParams] = useSearchParams()
const assets = useDepositEnabledAssets()
const assets = useWhitelistedAssets()
const borrowAssets = useMemo(() => data?.allAssets || [], [data])
const [reduceMotion] = useLocalStorage<boolean>(
LocalStorageKeys.REDUCE_MOTION,
getDefaultChainSettings(chainConfig).reduceMotion,
)

const [deposits, lends, debts, vaults, stakedAstroLps] = useMemo(() => {
if (!assets.length || !account) return Array(4).fill(BN_ZERO)
return getAccountPositionValues(account, assets)
}, [account, assets])

const leverage = useMemo(() => {
if (!assets.length || !account) return BN_ZERO
return calculateAccountLeverage(account, assets)
}, [account, assets])

const apr = useMemo(() => {
if (!lendingAssets.length || !borrowAssets.length || !assets.length || !account) return null
return calculateAccountApr(
account,
borrowAssets,
lendingAssets,
hlsStrategies,
assets,
vaultAprs,
astroLpAprs,
account.kind === 'high_levered_strategy',
)
}, [lendingAssets, borrowAssets, account, hlsStrategies, assets, vaultAprs, astroLpAprs])
const { netWorth, apr, leverage } = getAccountSummaryStats(
account as Account,
borrowAssets,
lendingAssets,
hlsStrategies,
assets,
vaultAprs,
astroLpAprs,
)

const stats: { title: ReactNode; sub: string }[] = useMemo(() => {
const isLoaded = account && assets.length && apr !== null
return [
{
title: isLoaded ? (
<FormattedNumber
amount={deposits.plus(lends).plus(vaults).plus(stakedAstroLps).minus(debts).toNumber()}
options={{ prefix: '$' }}
/>
<FormattedNumber amount={netWorth.amount.toNumber()} options={{ prefix: '$' }} />
) : (
<Loading />
),
Expand All @@ -104,7 +82,7 @@ export default function PortfolioCard(props: Props) {
sub: 'APR',
},
]
}, [account, assets, deposits, lends, vaults, stakedAstroLps, debts, leverage, apr])
}, [account, assets, apr, leverage, netWorth])

if (!account) {
return (
Expand Down
7 changes: 5 additions & 2 deletions src/components/portfolio/Overview/Summary.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import useLendingMarketAssetsTableData from 'components/earn/lend/Table/useLendi
import SummarySkeleton from 'components/portfolio/SummarySkeleton'
import { MAX_AMOUNT_DECIMALS } from 'constants/math'
import useAccounts from 'hooks/accounts/useAccounts'
import useDepositEnabledAssets from 'hooks/assets/useDepositEnabledAssets'
import useWhitelistedAssets from 'hooks/assets/useWhitelistedAssets'
import useAstroLpAprs from 'hooks/astroLp/useAstroLpAprs'
import useHLSStakingAssets from 'hooks/hls/useHLSStakingAssets'
import useVaultAprs from 'hooks/vaults/useVaultAprs'
Expand All @@ -25,7 +25,7 @@ export default function PortfolioSummary() {
const { data: accounts } = useAccounts('default', urlAddress || walletAddress)
const { data: hlsStrategies } = useHLSStakingAssets()
const { data: vaultAprs } = useVaultAprs()
const assets = useDepositEnabledAssets()
const assets = useWhitelistedAssets()
const astroLpAprs = useAstroLpAprs()

const stats = useMemo(() => {
Expand All @@ -36,6 +36,9 @@ export default function PortfolioSummary() {
combinedAccount.deposits = combinedAccount.deposits.concat(account.deposits)
combinedAccount.lends = combinedAccount.lends.concat(account.lends)
combinedAccount.vaults = combinedAccount.vaults.concat(account.vaults)
combinedAccount.stakedAstroLps = combinedAccount.stakedAstroLps.concat(
account.stakedAstroLps,
)
return combinedAccount
},
{
Expand Down
13 changes: 9 additions & 4 deletions src/utils/accounts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export const calculateAccountValue = (
account: Account | AccountChange,
assets: Asset[],
): BigNumber => {
if (!account[type] || !assets) return BN_ZERO
if (!account || !account[type] || !assets) return BN_ZERO

if (type === 'vaults') {
return (
Expand Down Expand Up @@ -409,8 +409,14 @@ export function getAccountSummaryStats(
astroLpAprs: Apr[],
isHls?: boolean,
) {
const [deposits, lends, debts, vaults, stakedAstroLps] = getAccountPositionValues(account, assets)
const positionValue = deposits.plus(lends).plus(vaults).plus(stakedAstroLps)
const [deposits, lends, debts, vaults, perps, perpsVault, stakedAstroLps] =
getAccountPositionValues(account, assets)
const positionValue = deposits
.plus(lends)
.plus(vaults)
.plus(perps)
.plus(perpsVault)
.plus(stakedAstroLps)
const apr = calculateAccountApr(
account,
borrowAssets,
Expand All @@ -422,7 +428,6 @@ export function getAccountSummaryStats(
isHls,
)
const leverage = calculateAccountLeverage(account, assets)

return {
positionValue: BNCoin.fromDenomAndBigNumber(ORACLE_DENOM, positionValue),
debts: BNCoin.fromDenomAndBigNumber(ORACLE_DENOM, debts),
Expand Down

0 comments on commit d3ef5f9

Please sign in to comment.