-
Notifications
You must be signed in to change notification settings - Fork 5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use network provider state, instead of CurrencyRateController state, to select 'nativeCurrency' #17450
Merged
+34
−13
Merged
Use network provider state, instead of CurrencyRateController state, to select 'nativeCurrency' #17450
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
ed09bcb
Use network provider state, instead of CurrencyRateController state, …
danjm cddca59
Fix unit tests
danjm 8d80a46
Lint fix
danjm 49b65ad
Only use the network provider ticket for the native currency when use…
danjm f8c4120
Fix unit test
danjm c07ef73
Fix tests for real
danjm File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -60,9 +60,8 @@ export default function GasDisplay({ gasError }) { | |
const useCurrencyRateCheck = useSelector(getUseCurrencyRateCheck); | ||
const { showFiatInTestnets, useNativeCurrencyAsPrimaryCurrency } = | ||
useSelector(getPreferences); | ||
const { nativeCurrency, provider, unapprovedTxs } = useSelector( | ||
(state) => state.metamask, | ||
); | ||
const { provider, unapprovedTxs } = useSelector((state) => state.metamask); | ||
const nativeCurrency = provider.ticker; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. These selectors can be used here: getUnapprovedTransactions, getProvider. |
||
const { chainId } = provider; | ||
const networkName = NETWORK_TO_NAME_MAP[chainId]; | ||
const isInsufficientTokenError = | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jpuri @NiranjanaBinoy I updated this since your last review. The problem was pointed out to me by Mark.
state.metamask.nativeCurrency
is always set after the conversionRate updates. So if we stopped using it, thenativeCurrency
andconversionRate
could get out of sync, showing the user incorrect data.I have changed the code so that we still use the
nativeCurrency
, but only when the useCurrencyRateCheck setting is on. When it is off, which is required for the bug we are trying to fix, we don't show converted values, so the concern aboutnativeCurrency
andconversionRate
being out of sync does not matterThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just wondering if it is ok to use
state.metamask.provider.ticker
alwaysThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To add more detail:
currentlylast I checked, we were showing the old network currency and currency rate after switching, until the new rate has been loaded. This is pretty confusing, but we're using the CurrencyRateControllernativeCurrency
state in this situation so we can at least be confident the symbol we're showing next to the rate matches the rate.Ideally we would show no fiat value while currency rates are loading. That would be less confusing. Once we do that, I think it would be safe to always use
state.metamask.provider.ticker
for the current currency.But until we make that improvement, there is this tradeoff to consider.