Skip to content

Commit

Permalink
Merge pull request #1190 from mars-protocol/develop
Browse files Browse the repository at this point in the history
v2.7.4
  • Loading branch information
linkielink authored Oct 22, 2024
2 parents f28d3bd + 762a702 commit 4e16262
Show file tree
Hide file tree
Showing 24 changed files with 1,842 additions and 1,688 deletions.
43 changes: 22 additions & 21 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mars-v2-frontend",
"version": "2.7.3",
"version": "2.7.4",
"homepage": "./",
"private": false,
"license": "SEE LICENSE IN LICENSE FILE",
Expand All @@ -22,7 +22,7 @@
"dependencies": {
"@cosmjs/cosmwasm-stargate": "^0.32.4",
"@delphi-labs/shuttle-react": "^3.29.0",
"@keplr-wallet/cosmos": "^0.12.130",
"@keplr-wallet/cosmos": "^0.12.141",
"@tailwindcss/container-queries": "^0.1.1",
"@tanstack/react-table": "^8.20.5",
"@tippyjs/react": "^4.2.6",
Expand All @@ -33,57 +33,58 @@
"ibc-domains-sdk": "^1.1.0",
"lodash.debounce": "^4.0.8",
"lodash.throttle": "^4.1.1",
"mobx": "^6.13.3",
"mobx": "^6.13.5",
"moment": "^2.30.1",
"next": "^14.2.14",
"next": "^14.2.15",
"react": "18.3.1",
"react-device-detect": "^2.2.3",
"react-dom": "^18.3.1",
"react-draggable": "^4.4.6",
"react-helmet-async": "^2.0.5",
"react-qr-code": "^2.0.15",
"react-router-dom": "^6.26.2",
"react-router-dom": "^6.27.0",
"react-spring": "^9.7.4",
"react-toastify": "^10.0.5",
"react-toastify": "^10.0.6",
"react-use-clipboard": "^1.0.9",
"recharts": "^2.12.7",
"recharts": "^2.13.0",
"sharp": "^0.33.5",
"starknet": "^6.11.0",
"swr": "^2.2.5",
"tailwind-scrollbar-hide": "^1.1.7",
"zustand": "4.5.5"
},
"devDependencies": {
"@babel/eslint-parser": "^7.25.1",
"@eslint/compat": "^1.1.1",
"@babel/eslint-parser": "^7.25.8",
"@eslint/compat": "^1.2.1",
"@svgr/webpack": "^8.1.0",
"@types/debounce-promise": "^3.1.9",
"@types/lodash.debounce": "^4.0.9",
"@types/lodash.throttle": "^4.1.9",
"@types/node": "^22.7.4",
"@types/react": "18.3.10",
"@types/react-dom": "18.3.0",
"@types/node": "^22.7.7",
"@types/react": "18.3.11",
"@types/react-dom": "18.3.1",
"@types/react-helmet": "^6.1.11",
"@typescript-eslint/eslint-plugin": "^8.8.0",
"@typescript-eslint/parser": "^8.8.0",
"@typescript-eslint/eslint-plugin": "^8.10.0",
"@typescript-eslint/parser": "^8.10.0",
"autoprefixer": "^10.4.20",
"dotenv": "^16.4.5",
"dotenv-cli": "^7.4.2",
"eslint": "^9.11.1",
"eslint": "^9.13.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-functional": "^7.0.2",
"eslint-plugin-import": "^2.30.0",
"eslint-plugin-functional": "^7.1.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-react": "^7.37.1",
"eslint-plugin-react-hooks": "^4.6.2",
"eslint-plugin-react-hooks": "^5.0.0",
"husky": "^9.1.6",
"identity-obj-proxy": "^3.0.0",
"lint-staged": "^15.2.10",
"prettier": "^3.3.3",
"prettier-plugin-tailwindcss": "^0.6.8",
"shelljs": "^0.8.5",
"tailwindcss": "^3.4.13",
"typescript": "^5.6.2",
"typescript-eslint": "^8.8.0"
"tailwindcss": "^3.4.14",
"typescript": "^5.6.3",
"typescript-eslint": "^8.10.0"
},
"engines": {
"npm": "please-use-yarn",
Expand Down
1 change: 1 addition & 0 deletions src/components/Modals/AssetsSelect/Columns/Asset.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ export default function Asset(props: Props) {
type='apy'
orientation='rtl'
suffix
hasCampaignApy={asset.campaigns.find((c) => c.type === 'apy') !== undefined}
/>
) : (
<Tooltip
Expand Down
2 changes: 1 addition & 1 deletion src/components/Modals/ModalsContainer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import {
HlsCloseModal,
HlsManageModal,
HlsModal,
LendAndReclaimModalController,
KeeperFeeModal,
LendAndReclaimModalController,
PerpsVaultModal,
SettingsModal,
UnlockModal,
Expand Down
9 changes: 5 additions & 4 deletions src/components/account/AccountBalancesTable/Columns/Apy.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,16 @@ interface Props {
markets: Market[]
denom: string
type: PositionType
hasCampaignApy?: boolean
}

export default function Apr(props: Props) {
const { markets, type, denom, apy } = props
export default function Apy(props: Props) {
const { markets, type, denom, apy, hasCampaignApy } = props

if (apy === undefined) return <Loading />
if (apy === null) return <Text size='xs'>N/A</Text>

const isEnabled =
markets.find((market) => market.asset.denom === props.denom)?.borrowEnabled ?? false
const isEnabled = markets.find((market) => market.asset.denom === denom)?.borrowEnabled ?? false

return (
<AssetRate
Expand All @@ -27,6 +27,7 @@ export default function Apr(props: Props) {
isEnabled={type !== 'lend' || isEnabled}
type='apy'
orientation='ltr'
hasCampaignApy={hasCampaignApy}
/>
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ export default function useAccountBalancesColumns(
markets={markets}
denom={row.original.denom}
type={row.original.type}
hasCampaignApy={row.original.campaigns.find((c) => c.type === 'apy') !== undefined}
/>
),
}),
Expand Down
1 change: 1 addition & 0 deletions src/components/account/AccountBalancesTable/functions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ export function getAssetAccountBalanceRow(
amount,
apy,
amountChange,
campaigns: asset.campaigns,
}
}

Expand Down
36 changes: 12 additions & 24 deletions src/components/account/AccountComposition.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import BigNumber from 'bignumber.js'
import classNames from 'classnames'
import { useMemo } from 'react'

import useAccountPerpData from 'components/account/AccountPerpPositionTable/useAccountPerpData'
import useBorrowMarketAssetsTableData from 'components/borrow/Table/useBorrowMarketAssetsTableData'
import DisplayCurrency from 'components/common/DisplayCurrency'
import { FormattedNumber } from 'components/common/FormattedNumber'
Expand All @@ -12,18 +13,16 @@ import { BN_ZERO, MAX_AMOUNT_DECIMALS } from 'constants/math'
import { ORACLE_DENOM } from 'constants/oracle'
import useWhitelistedAssets from 'hooks/assets/useWhitelistedAssets'
import useAstroLpAprs from 'hooks/astroLp/useAstroLpAprs'
import useHlsStakingAssets from 'hooks/hls/useHlsStakingAssets'
import useChainConfig from 'hooks/chain/useChainConfig'
import useVaultAprs from 'hooks/vaults/useVaultAprs'
import useStore from 'store'
import { BNCoin } from 'types/classes/BNCoin'
import {
calculateAccountApr,
calculateAccountApy,
getAccountDebtValue,
getAccountTotalValue,
getAccountUnrealizedPnlValue,
} from 'utils/accounts'
import useAccountPerpData from 'components/account/AccountPerpPositionTable/useAccountPerpData'
import useChainConfig from 'hooks/chain/useChainConfig'

interface Props {
account: Account
Expand All @@ -42,7 +41,6 @@ export default function AccountComposition(props: Props) {
const updatedAccount = useStore((s) => s.updatedAccount)
const { account } = props
const hasChanged = !!updatedAccount
const { data: hlsStrategies } = useHlsStakingAssets()
const { data: vaultAprs } = useVaultAprs()
const accountPerpData = useAccountPerpData({
account,
Expand Down Expand Up @@ -80,41 +78,31 @@ export default function AccountComposition(props: Props) {
[updatedAccount, account, assets],
)

const apr = useMemo(
const apy = useMemo(
() =>
calculateAccountApr(
calculateAccountApy(
account,
borrowAssetsData,
lendingAssetsData,
hlsStrategies,
assets,
vaultAprs,
astroLpAprs,
),
[account, assets, borrowAssetsData, hlsStrategies, lendingAssetsData, vaultAprs, astroLpAprs],
[account, assets, borrowAssetsData, lendingAssetsData, vaultAprs, astroLpAprs],
)
const updatedApr = useMemo(
const updatedApy = useMemo(
() =>
updatedAccount
? calculateAccountApr(
? calculateAccountApy(
updatedAccount,
borrowAssetsData,
lendingAssetsData,
hlsStrategies,
assets,
vaultAprs,
astroLpAprs,
)
: BN_ZERO,
[
updatedAccount,
borrowAssetsData,
lendingAssetsData,
hlsStrategies,
assets,
vaultAprs,
astroLpAprs,
],
[updatedAccount, borrowAssetsData, lendingAssetsData, assets, vaultAprs, astroLpAprs],
)

return (
Expand All @@ -141,9 +129,9 @@ export default function AccountComposition(props: Props) {
/>
)}
<Item
title='APR'
current={apr}
change={hasChanged ? updatedApr : apr}
title='APY'
current={apy}
change={hasChanged ? updatedApy : apy}
className='pb-3'
isPercentage
/>
Expand Down
2 changes: 1 addition & 1 deletion src/components/account/AccountDetails/Skeleton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export default function Skeleton(props: Props) {
</div>
<div className='flex flex-wrap justify-center w-full py-4 border-t border-white/20'>
<Text size='2xs' className='mb-0.5 w-full text-center text-white/50'>
APR
APY
</Text>
<Loading className='w-10 h-3 mt-1' />
</div>
Expand Down
14 changes: 5 additions & 9 deletions src/components/account/AccountDetails/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,12 @@ import useWhitelistedAssets from 'hooks/assets/useWhitelistedAssets'
import useAstroLpAprs from 'hooks/astroLp/useAstroLpAprs'
import useChainConfig from 'hooks/chain/useChainConfig'
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 useStore from 'store'
import { BNCoin } from 'types/classes/BNCoin'
import {
calculateAccountApr,
calculateAccountApy,
calculateAccountBalanceValue,
calculateAccountLeverage,
} from 'utils/accounts'
Expand Down Expand Up @@ -68,7 +67,6 @@ function AccountDetails(props: Props) {
const chainConfig = useChainConfig()
const { account } = props
const location = useLocation()
const { data: hlsStrategies } = useHlsStakingAssets()
const { data: vaultAprs } = useVaultAprs()
const astroLpAprs = useAstroLpAprs()
const [reduceMotion] = useLocalStorage<boolean>(
Expand Down Expand Up @@ -113,13 +111,12 @@ function AccountDetails(props: Props) {
() => [...lendingAvailableAssets, ...accountLentAssets],
[lendingAvailableAssets, accountLentAssets],
)
const apr = useMemo(
const apy = useMemo(
() =>
calculateAccountApr(
calculateAccountApy(
updatedAccount ?? account,
borrowAssetsData,
lendingAssetsData,
hlsStrategies,
whitelistedAssets,
vaultAprs,
astroLpAprs,
Expand All @@ -128,7 +125,6 @@ function AccountDetails(props: Props) {
account,
whitelistedAssets,
borrowAssetsData,
hlsStrategies,
lendingAssetsData,
updatedAccount,
vaultAprs,
Expand Down Expand Up @@ -211,11 +207,11 @@ function AccountDetails(props: Props) {
</div>
<div className='w-full py-4 border-t border-white/20'>
<Text size='2xs' className='mb-0.5 w-full text-center text-white/50'>
APR
APY
</Text>
<FormattedNumber
className={'w-full text-center text-2xs'}
amount={apr.toNumber()}
amount={apy.toNumber()}
options={{ maxDecimals: 2, minDecimals: 2, suffix: '%' }}
animate
/>
Expand Down
9 changes: 3 additions & 6 deletions src/components/account/AccountList/AccountStats.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,9 @@ import useAccount from 'hooks/accounts/useAccount'
import useWhitelistedAssets from 'hooks/assets/useWhitelistedAssets'
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 useStore from 'store'
import { calculateAccountApr, calculateAccountBalanceValue } from 'utils/accounts'
import { calculateAccountApy, calculateAccountBalanceValue } from 'utils/accounts'
import { mergeBNCoinArrays } from 'utils/helpers'

interface Props {
Expand All @@ -27,7 +26,6 @@ export default function AccountStats(props: Props) {
const { accountId, isActive, setShowMenu } = props
const assets = useWhitelistedAssets()
const { data: account } = useAccount(accountId)
const { data: hlsStrategies } = useHlsStakingAssets()
const { data: vaultAprs } = useVaultAprs()
const astroLpAprs = useAstroLpAprs()
const positionBalance = useMemo(
Expand All @@ -47,16 +45,15 @@ export default function AccountStats(props: Props) {
() =>
!account
? null
: calculateAccountApr(
: calculateAccountApy(
account,
borrowAssetsData,
lendingAssetsData,
hlsStrategies,
assets,
vaultAprs,
astroLpAprs,
),
[account, assets, borrowAssetsData, hlsStrategies, lendingAssetsData, vaultAprs, astroLpAprs],
[account, assets, borrowAssetsData, lendingAssetsData, vaultAprs, astroLpAprs],
)

const deleteAccountHandler = useCallback(() => {
Expand Down
Loading

0 comments on commit 4e16262

Please sign in to comment.