Skip to content

Commit

Permalink
Correct use of useTokenTracker in viewQuote to ensure token data is n…
Browse files Browse the repository at this point in the history
…ot disrupted by faulty token in user account (#10456)

* Use the includeFailedTokens option with useTokenTracker in viewQuote

* Show appropriate error message if we do not have data on the balance of token on the view-quote screen

* Update app/_locales/en/messages.json

Co-authored-by: Mark Stacey <[email protected]>

Co-authored-by: Mark Stacey <[email protected]>
  • Loading branch information
danjm and Gudahtt authored Feb 17, 2021
1 parent 1a91d98 commit b056867
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 11 deletions.
4 changes: 4 additions & 0 deletions app/_locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -1841,6 +1841,10 @@
"message": "Your $1 has been added to your account.",
"description": "This message is shown after a swap is successful and communicates the exact amount of tokens the user has received for a swap. The $1 is a decimal number of tokens followed by the token symbol."
},
"swapTokenBalanceUnavailable": {
"message": "We were unable to retrieve your $1 balance",
"description": "This message communicates to the user that their balance of a given token is currently unavailable. $1 will be replaced by a token symbol"
},
"swapTokenToToken": {
"message": "Swap $1 to $2",
"description": "Used in the transaction display list to describe a swap. $1 and $2 are the symbols of tokens in involved in a swap."
Expand Down
28 changes: 17 additions & 11 deletions ui/app/pages/swaps/view-quote/view-quote.js
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ export default function ViewQuote() {

const gasTotalInWeiHex = calcGasTotal(maxGasLimit, gasPrice);

const { tokensWithBalances } = useTokenTracker(swapsTokens);
const { tokensWithBalances } = useTokenTracker(swapsTokens, true);
const swapsEthToken = useSwapsEthToken();
const balanceToken =
fetchParamsSourceToken === swapsEthToken.address
Expand All @@ -164,6 +164,8 @@ export default function ViewQuote() {
selectedFromToken.balance || '0x0',
selectedFromToken.decimals,
).toFixed(9);
const tokenBalanceUnavailable =
tokensWithBalances && balanceToken === undefined;

const approveData = getTokenData(approveTxParams?.data);
const approveValue = approveData && getTokenValueParam(approveData);
Expand Down Expand Up @@ -473,14 +475,16 @@ export default function ViewQuote() {
</span>
);

const actionableInsufficientMessage = t('swapApproveNeedMoreTokens', [
<span key="swapApproveNeedMoreTokens-1" className="view-quote__bold">
{tokenBalanceNeeded || ethBalanceNeeded}
</span>,
tokenBalanceNeeded && !(sourceTokenSymbol === 'ETH')
? sourceTokenSymbol
: 'ETH',
]);
const actionableBalanceErrorMessage = tokenBalanceUnavailable
? t('swapTokenBalanceUnavailable', [sourceTokenSymbol])
: t('swapApproveNeedMoreTokens', [
<span key="swapApproveNeedMoreTokens-1" className="view-quote__bold">
{tokenBalanceNeeded || ethBalanceNeeded}
</span>,
tokenBalanceNeeded && !(sourceTokenSymbol === 'ETH')
? sourceTokenSymbol
: 'ETH',
]);

// Price difference warning
const priceSlippageBucket = usedQuote?.priceSlippage?.bucket;
Expand Down Expand Up @@ -528,6 +532,7 @@ export default function ViewQuote() {
}

const shouldShowPriceDifferenceWarning =
!tokenBalanceUnavailable &&
!showInsufficientWarning &&
usedQuote &&
(priceDifferenceRiskyBuckets.includes(priceSlippageBucket) ||
Expand Down Expand Up @@ -580,9 +585,9 @@ export default function ViewQuote() {
})}
>
{viewQuotePriceDifferenceComponent}
{showInsufficientWarning && (
{(showInsufficientWarning || tokenBalanceUnavailable) && (
<ActionableMessage
message={actionableInsufficientMessage}
message={actionableBalanceErrorMessage}
onClose={() => setWarningHidden(true)}
/>
)}
Expand Down Expand Up @@ -661,6 +666,7 @@ export default function ViewQuote() {
disabled={
submitClicked ||
balanceError ||
tokenBalanceUnavailable ||
disableSubmissionDueToPriceWarning ||
gasPrice === null ||
gasPrice === undefined
Expand Down

0 comments on commit b056867

Please sign in to comment.