Skip to content

Commit 2eb8aaa

Browse files
authored
feat: enable Trade on mainnet (#5564)
* feat: enable Trade on BSC mainnet * fix: incorrectly named API params * feat: update doc URL * feat: add ad banner * fix: chart resizing
1 parent 74456d1 commit 2eb8aaa

22 files changed

Lines changed: 221 additions & 91 deletions

File tree

.changeset/happy-maps-lead.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@venusprotocol/evm": minor
3+
---
4+
5+
enable Trade on BSC mainnet

apps/evm/src/clients/api/queries/getAccountTransactionHistory/__tests__/index.spec.ts

Lines changed: 47 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,49 @@ const fakeInput = {
1616
page: 1,
1717
};
1818

19-
const fakeTradeFields = {
20-
tradePositionAccountAddress: null,
21-
tradeLongVTokenAddress: null,
22-
tradeShortVTokenAddress: null,
23-
tradeDsaVTokenAddress: null,
24-
tradeCycleId: null,
25-
tradeEffectiveLeverageRatio: null,
26-
tradeInitialPrincipalMantissa: null,
27-
tradePrincipalAmountMantissa: null,
28-
tradeNewTotalPrincipalMantissa: null,
29-
tradeRemainingPrincipalMantissa: null,
30-
tradeShortAmountMantissa: null,
31-
tradeLongAmountMantissa: null,
32-
tradeAdditionalPrincipalMantissa: null,
33-
tradeCloseFractionBps: null,
34-
tradeAmountRepaidMantissa: null,
35-
tradeAmountRedeemedMantissa: null,
36-
tradeAmountRedeemedDsaMantissa: null,
37-
tradeLongDustRedeemedMantissa: null,
38-
tradeAmountConvertedToProfitMantissa: null,
39-
tradeDsaProfitAmountMantissa: null,
19+
const fakeYieldPlusFields: Pick<
20+
ApiAccountHistoricalTransaction,
21+
| 'yieldPlusPositionAccountAddress'
22+
| 'yieldPlusLongVTokenAddress'
23+
| 'yieldPlusShortVTokenAddress'
24+
| 'yieldPlusDsaVTokenAddress'
25+
| 'yieldPlusCycleId'
26+
| 'yieldPlusEffectiveLeverageRatio'
27+
| 'yieldPlusInitialPrincipalMantissa'
28+
| 'yieldPlusPrincipalAmountMantissa'
29+
| 'yieldPlusNewTotalPrincipalMantissa'
30+
| 'yieldPlusRemainingPrincipalMantissa'
31+
| 'yieldPlusShortAmountMantissa'
32+
| 'yieldPlusLongAmountMantissa'
33+
| 'yieldPlusAdditionalPrincipalMantissa'
34+
| 'yieldPlusCloseFractionBps'
35+
| 'yieldPlusAmountRepaidMantissa'
36+
| 'yieldPlusAmountRedeemedMantissa'
37+
| 'yieldPlusAmountRedeemedDsaMantissa'
38+
| 'yieldPlusLongDustRedeemedMantissa'
39+
| 'yieldPlusAmountConvertedToProfitMantissa'
40+
| 'yieldPlusDsaProfitAmountMantissa'
41+
> = {
42+
yieldPlusPositionAccountAddress: null,
43+
yieldPlusLongVTokenAddress: null,
44+
yieldPlusShortVTokenAddress: null,
45+
yieldPlusDsaVTokenAddress: null,
46+
yieldPlusCycleId: null,
47+
yieldPlusEffectiveLeverageRatio: null,
48+
yieldPlusInitialPrincipalMantissa: null,
49+
yieldPlusPrincipalAmountMantissa: null,
50+
yieldPlusNewTotalPrincipalMantissa: null,
51+
yieldPlusRemainingPrincipalMantissa: null,
52+
yieldPlusShortAmountMantissa: null,
53+
yieldPlusLongAmountMantissa: null,
54+
yieldPlusAdditionalPrincipalMantissa: null,
55+
yieldPlusCloseFractionBps: null,
56+
yieldPlusAmountRepaidMantissa: null,
57+
yieldPlusAmountRedeemedMantissa: null,
58+
yieldPlusAmountRedeemedDsaMantissa: null,
59+
yieldPlusLongDustRedeemedMantissa: null,
60+
yieldPlusAmountConvertedToProfitMantissa: null,
61+
yieldPlusDsaProfitAmountMantissa: null,
4062
};
4163

4264
describe('getAccountTransactionHistory', () => {
@@ -57,7 +79,7 @@ describe('getAccountTransactionHistory', () => {
5779
chainId: ChainId.BSC_TESTNET,
5880
underlyingAddress: '0xa11c8d9dc9b66e209ef60f0c8d969d3Cd988782c',
5981
underlyingTokenPriceMantissa: '1000130000000000000',
60-
...fakeTradeFields,
82+
...fakeYieldPlusFields,
6183
},
6284
{
6385
id: 'b0435b135762a7ca2ad7dccb9aa6c7f50237c6139b16a76348d6c64dfece110e-119-56',
@@ -73,7 +95,7 @@ describe('getAccountTransactionHistory', () => {
7395
chainId: ChainId.BSC_TESTNET,
7496
underlyingAddress: '0xa11c8d9dc9b66e209ef60f0c8d969d3Cd988782c',
7597
underlyingTokenPriceMantissa: '1000391740000000000',
76-
...fakeTradeFields,
98+
...fakeYieldPlusFields,
7799
},
78100
];
79101

@@ -137,7 +159,7 @@ describe('getAccountTransactionHistory', () => {
137159
chainId: ChainId.BSC_TESTNET,
138160
underlyingAddress: '0xa11c8d9dc9b66e209ef60f0c8d969d3Cd988782c',
139161
underlyingTokenPriceMantissa: null,
140-
...fakeTradeFields,
162+
...fakeYieldPlusFields,
141163
},
142164
{
143165
id: 'borrow',
@@ -153,7 +175,7 @@ describe('getAccountTransactionHistory', () => {
153175
chainId: ChainId.BSC_TESTNET,
154176
underlyingAddress: '0xa11c8d9dc9b66e209ef60f0c8d969d3Cd988782c',
155177
underlyingTokenPriceMantissa: '1000130000000000000',
156-
...fakeTradeFields,
178+
...fakeYieldPlusFields,
157179
},
158180
] satisfies ApiAccountHistoricalTransaction[],
159181
},

apps/evm/src/clients/api/queries/getAccountTransactionHistory/formatApiTransaction/formatToTradeTransaction/index.ts

Lines changed: 49 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -20,102 +20,118 @@ export const formatToTradeTransaction = ({
2020
accountAddress,
2121
contractAddress,
2222
chainId,
23-
tradeLongVTokenAddress,
24-
tradeShortVTokenAddress,
25-
tradeDsaVTokenAddress,
26-
tradePrincipalAmountMantissa,
27-
tradeShortAmountMantissa,
28-
tradeLongAmountMantissa,
29-
tradeAmountRepaidMantissa,
30-
tradeAmountRedeemedMantissa,
31-
tradeAmountRedeemedDsaMantissa,
32-
tradeDsaProfitAmountMantissa,
33-
tradeCycleId,
23+
yieldPlusLongVTokenAddress,
24+
yieldPlusShortVTokenAddress,
25+
yieldPlusDsaVTokenAddress,
26+
yieldPlusPrincipalAmountMantissa,
27+
yieldPlusShortAmountMantissa,
28+
yieldPlusLongAmountMantissa,
29+
yieldPlusAmountRepaidMantissa,
30+
yieldPlusAmountRedeemedMantissa,
31+
yieldPlusAmountRedeemedDsaMantissa,
32+
yieldPlusDsaProfitAmountMantissa,
33+
yieldPlusCycleId,
3434
} = apiTransaction;
3535

3636
const amounts: TxAmount[] = [];
3737

38-
const dsaPoolAsset = tradeDsaVTokenAddress
39-
? vTokenAssetMapping[tradeDsaVTokenAddress.toLowerCase() as Address]
38+
const dsaPoolAsset = yieldPlusDsaVTokenAddress
39+
? vTokenAssetMapping[yieldPlusDsaVTokenAddress.toLowerCase() as Address]
4040
: undefined;
4141

42-
const shortPoolAsset = tradeShortVTokenAddress
43-
? vTokenAssetMapping[tradeShortVTokenAddress.toLowerCase() as Address]
42+
const shortPoolAsset = yieldPlusShortVTokenAddress
43+
? vTokenAssetMapping[yieldPlusShortVTokenAddress.toLowerCase() as Address]
4444
: undefined;
4545

46-
const longPoolAsset = tradeLongVTokenAddress
47-
? vTokenAssetMapping[tradeLongVTokenAddress.toLowerCase() as Address]
46+
const longPoolAsset = yieldPlusLongVTokenAddress
47+
? vTokenAssetMapping[yieldPlusLongVTokenAddress.toLowerCase() as Address]
4848
: undefined;
4949

50-
if (tradePrincipalAmountMantissa && Number(tradePrincipalAmountMantissa) > 0 && dsaPoolAsset) {
50+
if (
51+
yieldPlusPrincipalAmountMantissa &&
52+
Number(yieldPlusPrincipalAmountMantissa) > 0 &&
53+
dsaPoolAsset
54+
) {
5155
amounts.push(
5256
formatToAmount({
5357
asset: dsaPoolAsset,
54-
amountMantissa: tradePrincipalAmountMantissa,
58+
amountMantissa: yieldPlusPrincipalAmountMantissa,
5559
}),
5660
);
5761
}
5862

5963
if (
60-
tradeAmountRedeemedDsaMantissa &&
61-
Number(tradeAmountRedeemedDsaMantissa) > 0 &&
64+
yieldPlusAmountRedeemedDsaMantissa &&
65+
Number(yieldPlusAmountRedeemedDsaMantissa) > 0 &&
6266
dsaPoolAsset
6367
) {
6468
amounts.push(
6569
formatToAmount({
6670
asset: dsaPoolAsset,
67-
amountMantissa: BigInt(tradeAmountRedeemedDsaMantissa) * -1n,
71+
amountMantissa: BigInt(yieldPlusAmountRedeemedDsaMantissa) * -1n,
6872
}),
6973
);
7074
}
7175

72-
if (tradeDsaProfitAmountMantissa && Number(tradeDsaProfitAmountMantissa) > 0 && dsaPoolAsset) {
76+
if (
77+
yieldPlusDsaProfitAmountMantissa &&
78+
Number(yieldPlusDsaProfitAmountMantissa) > 0 &&
79+
dsaPoolAsset
80+
) {
7381
amounts.push(
7482
formatToAmount({
7583
asset: dsaPoolAsset,
76-
amountMantissa: tradeDsaProfitAmountMantissa,
84+
amountMantissa: yieldPlusDsaProfitAmountMantissa,
7785
}),
7886
);
7987
}
8088

81-
if (tradeLongAmountMantissa && Number(tradeLongAmountMantissa) > 0 && longPoolAsset) {
89+
if (yieldPlusLongAmountMantissa && Number(yieldPlusLongAmountMantissa) > 0 && longPoolAsset) {
8290
amounts.push(
8391
formatToAmount({
8492
asset: longPoolAsset,
85-
amountMantissa: tradeLongAmountMantissa,
93+
amountMantissa: yieldPlusLongAmountMantissa,
8694
}),
8795
);
8896
}
8997

90-
if (tradeAmountRedeemedMantissa && Number(tradeAmountRedeemedMantissa) > 0 && longPoolAsset) {
98+
if (
99+
yieldPlusAmountRedeemedMantissa &&
100+
Number(yieldPlusAmountRedeemedMantissa) > 0 &&
101+
longPoolAsset
102+
) {
91103
amounts.push(
92104
formatToAmount({
93105
asset: longPoolAsset,
94-
amountMantissa: BigInt(tradeAmountRedeemedMantissa) * -1n,
106+
amountMantissa: BigInt(yieldPlusAmountRedeemedMantissa) * -1n,
95107
}),
96108
);
97109
}
98110

99-
if (tradeShortAmountMantissa && Number(tradeShortAmountMantissa) > 0 && shortPoolAsset) {
111+
if (yieldPlusShortAmountMantissa && Number(yieldPlusShortAmountMantissa) > 0 && shortPoolAsset) {
100112
amounts.push(
101113
formatToAmount({
102114
asset: shortPoolAsset,
103-
amountMantissa: tradeShortAmountMantissa,
115+
amountMantissa: yieldPlusShortAmountMantissa,
104116
}),
105117
);
106118
}
107119

108-
if (tradeAmountRepaidMantissa && Number(tradeAmountRepaidMantissa) > 0 && shortPoolAsset) {
120+
if (
121+
yieldPlusAmountRepaidMantissa &&
122+
Number(yieldPlusAmountRepaidMantissa) > 0 &&
123+
shortPoolAsset
124+
) {
109125
amounts.push(
110126
formatToAmount({
111127
asset: shortPoolAsset,
112-
amountMantissa: BigInt(tradeAmountRepaidMantissa) * -1n,
128+
amountMantissa: BigInt(yieldPlusAmountRepaidMantissa) * -1n,
113129
}),
114130
);
115131
}
116132

117133
const transaction: TradeTx = {
118-
cycleId: tradeCycleId || '1',
134+
cycleId: yieldPlusCycleId || '1',
119135
txType,
120136
hash,
121137
blockTimestamp,

apps/evm/src/clients/api/queries/getAccountTransactionHistory/types.ts

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -34,26 +34,26 @@ export interface ApiAccountHistoricalTransaction {
3434
amountUnderlyingMantissa: string | null;
3535
underlyingAddress: Address;
3636
underlyingTokenPriceMantissa: string | null;
37-
tradePositionAccountAddress: Address | null;
38-
tradeLongVTokenAddress: Address | null;
39-
tradeShortVTokenAddress: Address | null;
40-
tradeDsaVTokenAddress: Address | null;
41-
tradeCycleId: string | null;
42-
tradeEffectiveLeverageRatio: string | null;
43-
tradeInitialPrincipalMantissa: string | null;
44-
tradePrincipalAmountMantissa: string | null;
45-
tradeNewTotalPrincipalMantissa: string | null;
46-
tradeRemainingPrincipalMantissa: string | null;
47-
tradeShortAmountMantissa: string | null;
48-
tradeLongAmountMantissa: string | null;
49-
tradeAdditionalPrincipalMantissa: string | null;
50-
tradeCloseFractionBps: string | null;
51-
tradeAmountRepaidMantissa: string | null;
52-
tradeAmountRedeemedMantissa: string | null;
53-
tradeAmountRedeemedDsaMantissa: string | null;
54-
tradeLongDustRedeemedMantissa: string | null;
55-
tradeAmountConvertedToProfitMantissa: string | null;
56-
tradeDsaProfitAmountMantissa: string | null;
37+
yieldPlusPositionAccountAddress: Address | null;
38+
yieldPlusLongVTokenAddress: Address | null;
39+
yieldPlusShortVTokenAddress: Address | null;
40+
yieldPlusDsaVTokenAddress: Address | null;
41+
yieldPlusCycleId: string | null;
42+
yieldPlusEffectiveLeverageRatio: string | null;
43+
yieldPlusInitialPrincipalMantissa: string | null;
44+
yieldPlusPrincipalAmountMantissa: string | null;
45+
yieldPlusNewTotalPrincipalMantissa: string | null;
46+
yieldPlusRemainingPrincipalMantissa: string | null;
47+
yieldPlusShortAmountMantissa: string | null;
48+
yieldPlusLongAmountMantissa: string | null;
49+
yieldPlusAdditionalPrincipalMantissa: string | null;
50+
yieldPlusCloseFractionBps: string | null;
51+
yieldPlusAmountRepaidMantissa: string | null;
52+
yieldPlusAmountRedeemedMantissa: string | null;
53+
yieldPlusAmountRedeemedDsaMantissa: string | null;
54+
yieldPlusLongDustRedeemedMantissa: string | null;
55+
yieldPlusAmountConvertedToProfitMantissa: string | null;
56+
yieldPlusDsaProfitAmountMantissa: string | null;
5757
}
5858

5959
export interface AccountTransactionHistoryApiResponse {

apps/evm/src/clients/api/queries/getSwapQuote/useGetSwapQuote.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ type Options = QueryObserverOptions<
3636
QueryKey
3737
>;
3838

39-
const refetchInterval = generatePseudoRandomRefetchInterval('fast');
39+
const refetchInterval = generatePseudoRandomRefetchInterval();
4040

4141
export const useGetSwapQuote = (input: TrimmedGetSwapQuoteInput, options?: Partial<Options>) => {
4242
const { chainId } = useChainId();

apps/evm/src/clients/api/queries/getTradeReduceSwapQuotes/useGetTradeReduceSwapQuotes/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ type Options = QueryObserverOptions<
3333
QueryKey
3434
>;
3535

36-
const refetchInterval = generatePseudoRandomRefetchInterval('fast');
36+
const refetchInterval = generatePseudoRandomRefetchInterval();
3737

3838
export const useGetTradeReduceSwapQuotes = (
3939
input: TrimmedGetTradeReduceSwapQuotesInput,

apps/evm/src/components/AccountHealthBar/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
HEALTH_FACTOR_MODERATE_THRESHOLD,
1515
HEALTH_FACTOR_SAFE_THRESHOLD,
1616
} from 'constants/healthFactor';
17+
import { VENUS_DOC_URL } from 'constants/production';
1718
import { LabeledProgressBar } from '../LabeledProgressBar';
1819

1920
const safeBorrowLimitPercentage = 100 / HEALTH_FACTOR_SAFE_THRESHOLD;
@@ -137,7 +138,7 @@ export const AccountHealthBar: React.FC<AccountHealthBarProps> = ({
137138
Link: (
138139
// biome-ignore lint/a11y/useAnchorContent: content is injected by Trans component
139140
<a
140-
href="https://docs-v4.venus.io/guides/liquidation"
141+
href={`${VENUS_DOC_URL}/guides/liquidation`}
141142
target="_blank"
142143
rel="noreferrer"
143144
style={{ color: theme.colors.blue, textDecoration: 'underline' }}

apps/evm/src/components/KLineChart/index.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ export const KLineChart: React.FC<KLineChartProps> = ({
4747
}),
4848
);
4949

50-
const isFullScreenAvailable = document?.fullscreenEnabled || false;
50+
const isFullScreenAvailable =
51+
typeof document !== 'undefined' ? document.fullscreenEnabled : false;
5152

5253
const toggleFullScreenMode = () => {
5354
if (document?.fullscreenElement) {
@@ -174,7 +175,10 @@ export const KLineChart: React.FC<KLineChartProps> = ({
174175

175176
return (
176177
<>
177-
<div className="bg-dark-blue w-full h-full flex flex-col" ref={fullScreenContainerRef}>
178+
<div
179+
className="bg-dark-blue w-full h-full min-h-0 flex flex-col"
180+
ref={fullScreenContainerRef}
181+
>
178182
<div className="flex items-center justify-between px-3 py-1">
179183
<div className="flex items-center gap-x-3">
180184
<Select
@@ -207,7 +211,7 @@ export const KLineChart: React.FC<KLineChartProps> = ({
207211
)}
208212
</div>
209213

210-
<div className={cn('grow', className)} ref={chartContainerRef} />
214+
<div className={cn('grow min-h-0 min-w-0', className)} ref={chartContainerRef} />
211215
</div>
212216

213217
<Modal

apps/evm/src/components/TransactionsList/TransactionRow/Events/Event/index.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ export interface EventProps {
99

1010
export const Event: React.FC<EventProps> = ({ token, title, description }) => (
1111
<div className="flex w-full items-center gap-x-2">
12-
{token && <TokenIcon token={token} />}
12+
{token && <TokenIcon className="shrink-0" token={token} />}
1313

14-
<div className="flex flex-col">
15-
<span className="text-sm">{title}</span>
14+
<div className="flex flex-col grow min-w-0">
15+
<span className="text-sm truncate">{title}</span>
1616

17-
<span className="text-light-grey text-xs">{description}</span>
17+
<span className="text-light-grey text-xs truncate">{description}</span>
1818
</div>
1919
</div>
2020
);
14.9 KB
Loading

0 commit comments

Comments
 (0)