Skip to content

Commit

Permalink
Merge pull request #1162 from Badger-Finance/staging
Browse files Browse the repository at this point in the history
release: v2.9.6 - mStable Vaults
  • Loading branch information
mitche50 authored Oct 14, 2021
2 parents a1c432c + 4b7d54c commit 832e1cf
Show file tree
Hide file tree
Showing 13 changed files with 328 additions and 57 deletions.
15 changes: 15 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# v2 UI Changelog

### v2.9.6 - 10/14/2021

- release mstable vaults
- minor ux tweaks for mobile
- fix guarded vault max cap ux

### Hotfix - 10/11/2021

- fix missing fee look ups

### Hotfix - 10/07/2021

- add convex delegation prompt
- add swapr vaults + user links

### v2.9.5 - 10/05/2021

- Release Swapper vaults
Expand Down
Binary file added public/assets/icons/bswlp-badger-weth.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
55 changes: 35 additions & 20 deletions src/components-v2/common/dialogs/SettAvailableDeposit.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import React from 'react';
import { makeStyles, Typography } from '@material-ui/core';
import { VaultCap } from 'mobx/model/vaults/vault-cap';
import { MAX } from '../../../config/constants';
import BigNumber from 'bignumber.js';

const maxCapAmount = new BigNumber(MAX).toFixed();

const useStyles = makeStyles((theme) => ({
limitsContainer: {
Expand Down Expand Up @@ -38,28 +42,39 @@ export const SettAvailableDeposit = (props: DepositLimitProps): JSX.Element | nu
}
const { vaultCap, totalVaultCap, userCap, totalUserCap, asset } = vaultCapInfo;
const displayUserCap = vaultCap.tokenBalance.lte(userCap.tokenBalance) ? vaultCap : userCap;
const isMaxUserCap = totalUserCap.tokenBalance.toFixed() === maxCapAmount;
const isMaxTotalCap = vaultCap.tokenBalance.toFixed() === maxCapAmount;

if (isMaxTotalCap && isMaxUserCap) {
return null;
}

return (
<div className={classes.limitsContainer}>
<div className={classes.depositContainer}>
<Typography align="center" variant="body2" color="textSecondary">
User Deposit Limit Remaining:{' '}
</Typography>
<Typography align="center" variant="body2" color="textSecondary" component="div">
{`${displayUserCap.balanceDisplay(displayDecimals)} / ${totalUserCap.balanceDisplay(
displayDecimals,
)} ${asset}`}
</Typography>
</div>
<div className={classes.depositContainer}>
<Typography align="center" variant="body2" color="textSecondary">
Total Deposit Limit Remaining:{' '}
</Typography>
<Typography align="center" variant="body2" color="textSecondary" component="div">
{`${vaultCap.balanceDisplay(displayDecimals)} / ${totalVaultCap.balanceDisplay(
displayDecimals,
)} ${asset}`}
</Typography>
</div>
{!isMaxUserCap && (
<div className={classes.depositContainer}>
<Typography align="center" variant="body2" color="textSecondary">
User Deposit Limit Remaining:{' '}
</Typography>
<Typography align="center" variant="body2" color="textSecondary" component="div">
{`${displayUserCap.balanceDisplay(displayDecimals)} / ${totalUserCap.balanceDisplay(
displayDecimals,
)} ${asset}`}
</Typography>
</div>
)}
{!isMaxTotalCap && (
<div className={classes.depositContainer}>
<Typography align="center" variant="body2" color="textSecondary">
Total Deposit Limit Remaining:{' '}
</Typography>
<Typography align="center" variant="body2" color="textSecondary" component="div">
{`${vaultCap.balanceDisplay(displayDecimals)} / ${totalVaultCap.balanceDisplay(
displayDecimals,
)} ${asset}`}
</Typography>
</div>
)}
</div>
);
};
2 changes: 2 additions & 0 deletions src/components-v2/sett-detail/charts/BaseAreaChart.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,12 @@ const BaseAreaChart = ({
};

const theme = useTheme();

return (
<ResponsiveContainer
width={width ?? defaultWidth}
height={height ?? defaultHeight}
aspect={1}
className={classes.chartContainer}
>
<AreaChart data={data}>
Expand Down
20 changes: 13 additions & 7 deletions src/components-v2/sett-detail/description/Description.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -105,15 +105,21 @@ export const Description = ({ sett }: Props): JSX.Element => {
/>
</Grid>
<Grid item container direction="column" justify="center" className={classes.namesContainer}>
<Grid item>
<Box display="flex" alignItems="center">
<Grid item container alignItems="center">
<Grid item>
<Typography className={classes.settName}>{displayName}</Typography>
<ApyDisplayBadge
apyComparison={`${formatWithoutExtraZeros(Math.abs(performance), 2)}%`}
mode={performanceResultMode}
/>
</Grid>
<Grid item>
<Box display="flex" alignItems="center">
<ApyDisplayBadge
apyComparison={`${formatWithoutExtraZeros(Math.abs(performance), 2)}%`}
mode={performanceResultMode}
/>
</Box>
</Grid>
<Grid item>
<ApyComparisonModeSelector value={timeframe} onChange={setTimeframe} />
</Box>
</Grid>
</Grid>
<Grid item>
<Typography className={classes.vaultName} color="textSecondary">
Expand Down
2 changes: 1 addition & 1 deletion src/config/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ export const APP_NAME = 'badgerDAO';
export const PORTIS_APP_ID = 'cbf7534d-170d-4903-943f-e607dc588b7f';
export const EMPTY_DATA = '0x';
export const ZERO_CURRENCY = '0.00000';
export const SITE_VERSION = 'v2.9.5';
export const SITE_VERSION = 'v2.9.6';
export const WC_BRIDGE = 'https://wc-bridge.badger.finance/';
export const REN_FEES_ENDPOINT = 'https://lightnode-mainnet.herokuapp.com/ren_queryBlockState';
export const BLOCKNATIVE_API_KEY = 'af74a87b-cd08-4f45-83ff-ade6b3859a07';
Expand Down
9 changes: 6 additions & 3 deletions src/config/deployments/arbitrum.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
"crv": "0x11cDb42B0EB46D95f990BeDD4695A6e3fA034978",
"swapr": "0xdE903E2712288A1dA82942DDdF2c20529565aC30",
"swapr.WETH-SWAPR": "0xA66b20912cBEa522278f3056B4aE60D0d3EE271b",
"swapr.WETH-WBTC": "0x9a17d97fb5f76f44604270448ac77d55ac40c15c"
"swapr.WETH-WBTC": "0x9a17d97fb5f76f44604270448ac77d55ac40c15c",
"swapr.WETH-BADGER": "0x3C6bd88cdD2AECf466E22d4ED86dB6B8953FDb72"
},
"geysers": {},
"sett_system": {
Expand All @@ -21,7 +22,8 @@
"native.tricrypto": "0x4591890225394BF66044347653e112621AF7DDeb",
"native.swaprWethSwapr": "0x0c2153e8aE4DB8233c61717cDC4c75630E952561",
"native.tricryptoLight": "0xfdb9e5a186FB7655aC9cD7CAFF3d6D4c6064cc50",
"native.swaprWethWbtc": "0xaf9aB64F568149361ab670372b16661f4380e80B"
"native.swaprWethWbtc": "0xaf9aB64F568149361ab670372b16661f4380e80B",
"native.swaprWethBadger": "0xE9C12F06F8AFFD8719263FE4a81671453220389c"
},
"strategies": {
"native.sushiWethSushi": "0x86f772C82914f5bFD168f99e208d0FC2C371e9C2",
Expand All @@ -30,7 +32,8 @@
"native.tricrypto": "0xE83A790fC3B7132fb8d7f8d438Bc5139995BF5f4",
"native.swaprWethSwapr": "0x85386C3cE0679b035a9F8F17f531C076d0b35954",
"native.tricryptoLight": "0x9a28eeFB2c5F8311f37c39314D78Be85C54B5da6",
"native.swaprWethWbtc": "0x0c2153e8aE4DB8233c61717cDC4c75630E952561"
"native.swaprWethWbtc": "0x0c2153e8aE4DB8233c61717cDC4c75630E952561",
"native.swaprWethBadger": "0x1DF4272628bFFB7dC82b5974878E4e058b477179"
}
},
"badgerTree": "0x635EB2C39C75954bb53Ebc011BDC6AfAAcE115A6"
Expand Down
21 changes: 17 additions & 4 deletions src/config/system/strategies.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,17 @@ export const getStrategies = (network: ChainNetwork): StrategyNetworkConfig => {
depositLink:
'https://swapr.eth.link/#/pools/0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f/0x82aF49447D8a07e3bd95BD0d56f35241523fBab1/0x418A639F01FAee054D3A823c227c7dC179C209Fa?chainId=42161',
},
[arbitrumDeploy.sett_system.vaults['native.swaprWethBadger']]: {
address: arbitrumDeploy.sett_system.strategies['native.swaprWethBadger'],
fees: {
[StrategyFee.performance]: new BigNumber(1000),
[StrategyFee.strategistPerformance]: new BigNumber(1000),
[StrategyFee.withdraw]: new BigNumber(50),
},
userGuide: 'https://docs.badger.com/badger-finance/sett-user-guides/arbitrum-badger-weth',
depositLink:
'https://swapr.eth.link/#/pools/0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f/0x82aF49447D8a07e3bd95BD0d56f35241523fBab1/0x418A639F01FAee054D3A823c227c7dC179C209Fa?chainId=42161',
},
};
case ChainNetwork.Matic:
return {
Expand Down Expand Up @@ -440,19 +451,21 @@ export const getStrategies = (network: ChainNetwork): StrategyNetworkConfig => {
address: ethDeploy.sett_system.strategies['native.imBtc'],
fees: {
[StrategyFee.performance]: new BigNumber(1000),
[StrategyFee.withdraw]: new BigNumber(75),
[StrategyFee.withdraw]: new BigNumber(50),
},
strategyLink: 'https://badgerwiki.notion.site/placeholder',
strategyLink: 'https://badger.wiki/strategies#2234cf88bca941ce9450548c9eb96cec',
depositLink: 'https://mstable.app/#/mbtc/save',
userGuide: 'https://docs.badger.com/badger-finance/sett-user-guides/mstable-imbtc',
},
[ethDeploy.sett_system.vaults['native.fPmBtcHBtc']]: {
address: ethDeploy.sett_system.strategies['native.fPmBtcHBtc'],
fees: {
[StrategyFee.performance]: new BigNumber(1000),
[StrategyFee.withdraw]: new BigNumber(75),
[StrategyFee.withdraw]: new BigNumber(50),
},
strategyLink: 'https://badgerwiki.notion.site/placeholder',
strategyLink: 'https://badger.wiki/strategies#9a88b07c857e42beab929d3f0e26ca1b',
depositLink: 'https://mstable.app/#/mbtc/pools/0x48c59199da51b7e30ea200a74ea07974e62c4ba7',
userGuide: 'https://docs.badger.com/badger-finance/sett-user-guides/mstable-mbtc-hbtc',
},
};
}
Expand Down
10 changes: 10 additions & 0 deletions src/mobx/model/network/arbitrum.network.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,16 @@ export const arbitrumSetts: BadgerSett[] = [
decimals: 18,
},
},
{
depositToken: {
address: ARBITRUM_DEPLOY.tokens['swapr.WETH-BADGER'],
decimals: 18,
},
vaultToken: {
address: ARBITRUM_DEPLOY.sett_system.vaults['native.swaprWethBadger'],
decimals: 18,
},
},
];

export const arbitrumRewards = [
Expand Down
7 changes: 6 additions & 1 deletion src/mobx/stores/lockedCvxDelegationStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { sendContractMethod } from '../utils/web3';
import { DelegationState } from '../model/setts/locked-cvx-delegation';
import { extendObservable, observe } from 'mobx';
import BigNumber from 'bignumber.js';
import { ZERO_ADDR } from 'config/constants';
import { NETWORK_IDS, ZERO_ADDR } from 'config/constants';

const ID_TO_DELEGATE = '0x6376782e657468'; // cvx.eth in hex
const BADGER_DELEGATE_ADDRESS = '0x14F83fF95D4Ec5E8812DDf42DA1232b0ba1015e6';
Expand All @@ -35,9 +35,14 @@ class LockedCvxDelegationStore {

async getUserDelegationState(): Promise<void> {
const {
network: { network },
wallet: { provider, connectedAddress },
} = this.store;

if (network.id !== NETWORK_IDS.ETH) {
return;
}

const web3 = new Web3(provider);
const cvxLocker = new web3.eth.Contract(CvxLockerAbi as AbiItem[], mainnet.cvxLocker);
const lockedCVXBalance = new BigNumber(await cvxLocker.methods.balanceOf(connectedAddress).call());
Expand Down
100 changes: 100 additions & 0 deletions src/tests/SettAvailableDeposit.test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
import React from 'react';
import { checkSnapshot } from './utils/snapshots';
import { SettAvailableDeposit } from '../components-v2/common/dialogs/SettAvailableDeposit';
import { TokenBalance } from '../mobx/model/tokens/token-balance';
import BigNumber from 'bignumber.js';
import { MAX } from '../config/constants';

describe('SettAvailableDeposit', () => {
it('displays deposit limits', () => {
const mockCap = new TokenBalance(
{ address: '0x798D1bE841a82a273720CE31c822C61a67a601C3', decimals: 9, symbol: 'DIGG' },
new BigNumber('512014272658'),
new BigNumber('15.720585159535592'),
);

checkSnapshot(
<SettAvailableDeposit
vaultCapInfo={{
vaultCap: mockCap,
totalVaultCap: mockCap,
userCap: mockCap,
totalUserCap: mockCap,
asset: 'DIGG',
}}
/>,
);
});

it('does not show user limits if limit is max cap', () => {
const normalCap = new TokenBalance(
{ address: '0x17d8CBB6Bce8cEE970a4027d1198F6700A7a6c24', decimals: 18 },
new BigNumber('341319340751832806348'),
new BigNumber('1.52499515342814'),
);

const maxCap = new TokenBalance(
{ address: '0x17d8CBB6Bce8cEE970a4027d1198F6700A7a6c24', decimals: 18 },
new BigNumber(MAX),
new BigNumber('1.52499515342814'),
);

checkSnapshot(
<SettAvailableDeposit
vaultCapInfo={{
vaultCap: normalCap,
totalVaultCap: normalCap,
userCap: maxCap,
totalUserCap: maxCap,
asset: 'imBTC',
}}
/>,
);
});

it('does not show vault limits if limit is max cap', () => {
const normalCap = new TokenBalance(
{ address: '0x17d8CBB6Bce8cEE970a4027d1198F6700A7a6c24', decimals: 18 },
new BigNumber('341319340751832806348'),
new BigNumber('1.52499515342814'),
);

const maxCap = new TokenBalance(
{ address: '0x17d8CBB6Bce8cEE970a4027d1198F6700A7a6c24', decimals: 18 },
new BigNumber(MAX),
new BigNumber('1.52499515342814'),
);

checkSnapshot(
<SettAvailableDeposit
vaultCapInfo={{
vaultCap: maxCap,
totalVaultCap: maxCap,
userCap: normalCap,
totalUserCap: normalCap,
asset: 'imBTC',
}}
/>,
);
});

it('does not show any limits if both user and vault limits are max cap', () => {
const maxCap = new TokenBalance(
{ address: '0x17d8CBB6Bce8cEE970a4027d1198F6700A7a6c24', decimals: 18 },
new BigNumber(MAX),
new BigNumber('1.52499515342814'),
);

checkSnapshot(
<SettAvailableDeposit
vaultCapInfo={{
vaultCap: maxCap,
totalVaultCap: maxCap,
userCap: maxCap,
totalUserCap: maxCap,
asset: 'imBTC',
}}
/>,
);
});
});
Loading

0 comments on commit 832e1cf

Please sign in to comment.