Skip to content

Commit

Permalink
Merge pull request #21 from mars-protocol/v1.4.2
Browse files Browse the repository at this point in the history
  • Loading branch information
linkielink authored Apr 12, 2023
2 parents 779b7b0 + a7a2f5e commit b3916f6
Show file tree
Hide file tree
Showing 22 changed files with 494 additions and 181 deletions.
13 changes: 7 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"name": "mars",
"homepage": "./",
"version": "1.4.1",
"version": "1.4.2",
"license": "SEE LICENSE IN LICENSE FILE",
"private": false,
"scripts": {
"dev": "next dev",
"dev": "next dev -p 3001",
"build": "yarn test && next build",
"export": "next export",
"start": "next start",
Expand All @@ -18,14 +18,15 @@
"test:coverage": "jest --coverage"
},
"dependencies": {
"@cosmjs/cosmwasm-stargate": "^0.29.5",
"@cosmjs/cosmwasm-stargate": "^0.30.1",
"@cosmjs/launchpad": "^0.27.1",
"@cosmjs/proto-signing": "^0.29.5",
"@cosmjs/stargate": "^0.29.5",
"@marsprotocol/wallet-connector": "^1.5.2",
"@cosmjs/proto-signing": "^0.30.1",
"@cosmjs/stargate": "^0.30.1",
"@marsprotocol/wallet-connector": "^1.5.3",
"@material-ui/core": "^4.12.4",
"@material-ui/icons": "^4.11.3",
"@ramonak/react-progress-bar": "^5.0.3",
"@sentry/nextjs": "^7.36.0",
"@tanstack/react-query": "^4.24.4",
"@tanstack/react-table": "^8.7.9",
"@testing-library/dom": "^8.20.0",
Expand Down
5 changes: 4 additions & 1 deletion src/components/common/Containers/CommonContainer.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { CosmWasmClient } from '@cosmjs/cosmwasm-stargate'
import {
ChainInfoID,
getChainInfo,
getClient,
useWallet,
Expand Down Expand Up @@ -38,7 +39,9 @@ export const CommonContainer = ({ children }: CommonContainerProps) => {
const { status } = useWalletManager()
const queryClient = useQueryClient()

const chainInfo = recentWallet?.network ? getChainInfo(recentWallet?.network.chainId) : undefined
const chainInfo = recentWallet?.network
? getChainInfo(recentWallet?.network.chainId as ChainInfoID)
: undefined
const address = status !== WalletConnectionStatus.Connected ? '' : recentWallet?.account.address

const [cosmWasmClient, setCosmWasmClient] = useState<CosmWasmClient | undefined>()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { WalletID, WalletManagerProvider } from '@marsprotocol/wallet-connector'
import { ChainInfoID, WalletID, WalletManagerProvider } from '@marsprotocol/wallet-connector'
import { CircularProgress, SVG } from 'components/common'
import { IS_TESTNET } from 'constants/env'
import { useEffect, useState } from 'react'
Expand All @@ -13,7 +13,7 @@ export const CosmosWalletConnectProvider = ({ children }: Props) => {
const [chainInfoOverrides, setChainInfoOverrides] = useState<{
rpc: string
rest: string
chainID: string
chainID: ChainInfoID
}>()
const [enabledWallets, setEnabledWallets] = useState<WalletID[]>([])

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,14 @@ export const ActiveVaultsTableMobile = () => {
case 'unlocking':
return (
<>
<p className='m'>{vault.name}</p>
<p className='m'>{t('fields.vaultName', vault.name)}</p>
<p className='m'>{t('fields.unlocking')}</p>
</>
)
case 'unlocked':
return (
<>
<p className='m'>{vault.name}</p>
<p className='m'>{t('fields.vaultName', vault.name)}</p>
<p className='m colorInfoVoteAgainst'>{t('common.unlocked')}</p>
</>
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { AnimatedNumber, Apy, Card, DisplayCurrency, Loading, TextTooltip } from
import { VaultLogo, VaultName } from 'components/fields'
import { getTimeAndUnit, ltvToLeverage } from 'libs/parse'
import Link from 'next/link'
import React from 'react'
import { Trans, useTranslation } from 'react-i18next'
import useStore from 'store'

Expand Down Expand Up @@ -62,7 +61,7 @@ export const AvailableVaultsTableMobile = () => {
<span>
<TextTooltip
hideStyling
text={<AnimatedNumber amount={minAPY} suffix='-' />}
text={<AnimatedNumber amount={minAPY} suffix=' - ' />}
tooltip={<Apy apyData={apyDataNoLev} leverage={1} />}
/>
<TextTooltip
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,10 +95,11 @@ export const useAvailableVaultsColumns = () => {
(asset) => asset.denom === row.original.denoms.secondary,
)

const borrowRate = Math.min(
Number(primaryBorrowAsset?.borrowRate ?? 0),
Number(secondaryBorrowAsset?.borrowRate ?? 0),
)
const borrowRates = []
if (primaryBorrowAsset?.borrowEnabled) borrowRates.push(primaryBorrowAsset.borrowRate)
if (secondaryBorrowAsset?.borrowEnabled) borrowRates.push(secondaryBorrowAsset.borrowRate)

const borrowRate = Math.min(...borrowRates)

const maxBorrowRate = borrowRate * (ltvToLeverage(row.original.ltv.contract) - 1)

Expand Down Expand Up @@ -126,7 +127,7 @@ export const useAvailableVaultsColumns = () => {
}
tooltip={<Apy apyData={apyDataNoLev} leverage={1} />}
/>
<span>-</span>
<span> - </span>
<TextTooltip
hideStyling
text={
Expand All @@ -140,10 +141,7 @@ export const useAvailableVaultsColumns = () => {
}
/>

<p className='s faded'>
{minDailyAPY}-{maxDailyAPY}%/
{t('common.day')}
</p>
<p className='s faded'>{`${minDailyAPY} - ${maxDailyAPY}%/${t('common.day')}`}</p>
</>
)
},
Expand Down Expand Up @@ -215,7 +213,17 @@ export const useAvailableVaultsColumns = () => {
cell: ({ row }) => (
<TextTooltip
hideUnderline
text={row.original.description}
text={t('fields.vaultDescription', {
lpName: row.original.description.lpName,
maxLeverage: formatValue(
ltvToLeverage(row.original.ltv.contract),
2,
2,
false,
false,
false,
),
})}
tooltip={t('fields.tooltips.name', {
asset1: row.original.symbols.primary,
asset2: row.original.symbols.secondary,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ export const BreakdownGraph = (props: Props) => {
<div className={styles.bar1} style={{ height: `${getBarHeightPercentage(0)}%` }}>
<AssetBar
type='name'
symbol={props.vault.name}
symbol={t('fields.vaultName', props.vault.name)}
height={getBarHeightPercentage(0)}
showLabel={hasSpaceForLabel('name')}
/>
Expand Down
19 changes: 13 additions & 6 deletions src/components/fields/PositionInput/BorrowInput/BorrowInput.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,21 +27,28 @@ export const BorrowInput = (props: Props) => {
const containerClasses = classNames([styles.container])
const [cachedPrimaryAmount, setCachedPrimaryAmount] = useState(props.borrowedPrimaryAmount)
const [cachedSecondaryAmount, setCachedSecondaryAmount] = useState(props.borrowedSecondaryAmount)
const borrowEnabledAssets: string[] = []

if (primaryAsset?.borrowEnabled) borrowEnabledAssets.push(primaryAsset.symbol)
if (secondaryAsset?.borrowEnabled) borrowEnabledAssets.push(secondaryAsset.symbol)

const primaryInputVisisble =
props.borrowedPrimaryAmount > 0 ||
props.prevPosition?.borrowDenom === props.vault.denoms.primary
(props.borrowedPrimaryAmount > 0 ||
props.prevPosition?.borrowDenom === props.vault.denoms.primary) &&
primaryAsset?.borrowEnabled
? true
: false

const [primaryInput, setPrimaryInput] = useState<Input>({
visible: primaryInputVisisble,
visible:
borrowEnabledAssets.length === 1 ? !!primaryAsset?.borrowEnabled : primaryInputVisisble,
denom: props.vault.denoms.primary,
symbol: props.vault.symbols.primary,
})

const [secondaryInput, setSecondaryInput] = useState<Input>({
visible: !primaryInputVisisble,
visible:
borrowEnabledAssets.length === 1 ? !!secondaryAsset?.borrowEnabled : !primaryInputVisisble,
denom: props.vault.denoms.secondary,
symbol: props.vault.symbols.secondary,
})
Expand Down Expand Up @@ -83,7 +90,7 @@ export const BorrowInput = (props: Props) => {
tokens={
props.prevPosition?.borrowDenom === props.vault.denoms.primary
? [primaryInput.symbol]
: [primaryInput.symbol, secondaryInput.symbol]
: borrowEnabledAssets
}
onSelect={selectInput}
maxAmountLabel={t('global.max')}
Expand All @@ -100,7 +107,7 @@ export const BorrowInput = (props: Props) => {
tokens={
props.prevPosition?.borrowDenom === props.vault.denoms.secondary
? [secondaryInput.symbol]
: [primaryInput.symbol, secondaryInput.symbol]
: borrowEnabledAssets
}
onSelect={selectInput}
maxAmountLabel={t('global.max')}
Expand Down
2 changes: 1 addition & 1 deletion src/components/fields/RepayInput/RepayInput.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export const RepayInput = (props: Props) => {
: props.vault.symbols.secondary

const walletBalance = Number(
(findByDenom(userBalances, props.vault.denoms.secondary) as Coin)?.amount || 0,
(findByDenom(userBalances, props.vault.denoms[supplyKey]) as Coin)?.amount || 0,
)

const maxRepayAmount = Math.min(walletBalance, debtAmount)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export const UnlockedNotification = () => {
<div className={styles.container}>
<span>
{t('fields.notifications.unlocked.single.text', {
lp: 'OSMO-ATOM LP',
lp: vaultsUnlocked[0].name.name,
})}
</span>
<Button
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export const UnlockingNotification = () => {
<div className={styles.container}>
<span>
{t('fields.notifications.unlocking.single', {
lp: vaultsUnlocking[0].name,
lp: vaultsUnlocking[0].name.name,
time: timeLeft,
})}
</span>
Expand Down
2 changes: 1 addition & 1 deletion src/components/fields/VaultName/VaultName.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export const VaultName = (props: Props) => {

return (
<>
<p className='m'>{props.vault.name}</p>
<p className='m'>{t('fields.vaultName', props.vault.name)}</p>
<p
className={`s ${
props.position?.position?.status === 'unlocked' ? 'colorInfoVoteAgainst' : 'faded'
Expand Down
26 changes: 12 additions & 14 deletions src/configs/osmo-test-4.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ export const ASSETS: { [denom: string]: Asset } = {
color: colors.juno,
logo: juno,
decimals: 6,
poolId: 497,
},
}

Expand Down Expand Up @@ -65,11 +66,11 @@ export const NETWORK_CONFIG: NetworkConfig = {
apolloAprUrl: 'https://api.apollo.farm/api/vault_infos/v2/osmo-test-4',
osmoUsdPriceUrl: 'https://api-osmosis.imperator.co/tokens/v2/OSMO',
contracts: {
redBank: 'osmo1t0dl6r27phqetfu0geaxrng0u9zn8qgrdwztapt5xr32adtwptaq6vwg36',
incentives: 'osmo1zxs8fry3m8j94pqg7h4muunyx86en27cl0xgk76fc839xg2qnn6qtpjs48',
oracle: 'osmo1dqz2u3c8rs5e7w5fnchsr2mpzzsxew69wtdy0aq4jsd76w7upmsstqe0s8',
creditManager: 'osmo1dzk4y3s9am6773sglhfc60nstz09c3gy978h2jka6wre5z4hlavq4pcwk0',
accountNft: 'osmo16wwckvccarltl4mlnjhw3lcj3v59yglhldgw36ldkknmjavqyaasgcessw',
redBank: 'osmo1e9awnhgz8v2vmyx2yrquudfsany687mtn8zdyn255fn7k982h8wqm4t3gp',
incentives: 'osmo1cmuykglf6juftw0w97xgtg7808e27w7mgg63f5pvdncwecd7zmssgtltsj',
oracle: 'osmo1szpxhxnsy0lk2qs4lh6jnz5yqzn0huw037qp0qtypkfgc9k988js6wj9ge',
creditManager: 'osmo13pyg20kk48jad38x2cl7uejryjnyk03j9npgcm0ttvl55xyuar8sr6xlst',
accountNft: 'osmo1k8wmkpveumhzj2sp7kedhn39zm9f6726laqwflxjf4wygzgvzj0qnhjaef',
},
assets: {
base: ASSETS.osmo,
Expand All @@ -85,7 +86,7 @@ export const NETWORK_CONFIG: NetworkConfig = {
export const VAULT_CONFIGS: Vault[] = [
{
address: 'osmo1tp2m6g39h8mvhnu3plqjyen5s63023gj8w873l8wvly0cd77l6hsaa73wt',
name: 'OSMO-ATOM LP (14 day)',
name: { name: 'OSMO-ATOM LP', unlockDuration: 14, unlockTimeframe: 'days' },
denoms: {
primary: 'uosmo',
secondary: 'ibc/27394FB092D2ECCD56123C74F36E4C1F926001CEADA9CA97EA622B25F41E5EB2',
Expand All @@ -98,8 +99,7 @@ export const VAULT_CONFIGS: Vault[] = [
color: '#DD5B65',
lockup: 86400 * 14,
provider: 'Apollo vault',
description:
'Up to 1.43× leveraged yield farming with auto compounding of the OSMO-ATOM LP tokens.',
description: { maxLeverage: 1.43, lpName: 'OSMO-ATOM' },
ltv: {
max: 0.295,
contract: 0.3,
Expand All @@ -109,7 +109,7 @@ export const VAULT_CONFIGS: Vault[] = [
},
{
address: 'osmo1r6h0pafu3wq0kf6yv09qhc8qvuku2d6fua0rpwwv46h7hd8u586scxspjf',
name: 'OSMO-JUNO LP (1 day)',
name: { name: 'OSMO-JUNO LP', unlockDuration: 1, unlockTimeframe: 'days' },
denoms: {
primary: 'uosmo',
secondary: 'ibc/46B44899322F3CD854D2D46DEEF881958467CDD4B3B10086DA49296BBED94BED',
Expand All @@ -122,8 +122,7 @@ export const VAULT_CONFIGS: Vault[] = [
color: '#DD5B65',
lockup: 86400 * 1,
provider: 'Apollo vault',
description:
'Up to 1.43× leveraged yield farming with auto compounding of the OSMO-JUNO LP tokens.',
description: { maxLeverage: 1.43, lpName: 'OSMO-JUNO' },
ltv: {
max: 0.295,
contract: 0.3,
Expand All @@ -133,7 +132,7 @@ export const VAULT_CONFIGS: Vault[] = [
},
{
address: 'osmo1d6knwkelyr9eklewnn9htkess4ttpxpf2cze9ec0xfw7e3fj0ggssqzfpp',
name: 'OSMO-JUNO LP (14 day)',
name: { name: 'OSMO-JUNO LP', unlockDuration: 14, unlockTimeframe: 'days' },
denoms: {
primary: 'uosmo',
secondary: 'ibc/46B44899322F3CD854D2D46DEEF881958467CDD4B3B10086DA49296BBED94BED',
Expand All @@ -146,8 +145,7 @@ export const VAULT_CONFIGS: Vault[] = [
color: '#DD5B65',
lockup: 86400 * 14,
provider: 'Apollo vault',
description:
'Up to 1.43× leveraged yield farming with auto compounding of the OSMO-JUNO LP tokens.',
description: { maxLeverage: 1.43, lpName: 'OSMO-JUNO' },
ltv: {
max: 0.295,
contract: 0.3,
Expand Down
Loading

0 comments on commit b3916f6

Please sign in to comment.