-
-
Couldn't load subscription status.
- Fork 252
fix: fix addTokens call with an already added tokens to state #6829
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
base: main
Are you sure you want to change the base?
Conversation
| ); | ||
| }); | ||
|
|
||
| it('should not add duplicate tokens to state', async () => { |
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.
This test fails on main and state.allTokens ends up with duplicate entries of the same token
|
@metamaskbot publish-preview |
|
Preview builds have been published. See these instructions for more information about preview builds. Expand for full list of packages and versions. |
Explanation
When we first call the function
addTokenswith an array of tokens to import, and then call it again with the exact same token, we notice thatstate.allTokensis updated with duplicate entries of the same token.state.allTokensare stored in checksum format.When initially state already has USDC token for a user address; and a call to
addTokensis made with a lowercase USDC address. The newTokensMap in this linecore/packages/assets-controllers/src/TokensController.ts
Line 514 in 9f480c8
The fix converts the tokensToImport received in the call to the checksum format.
References
Checklist
Note
Normalize token addresses to checksum in
TokensController.addTokensto dedupe and avoid duplicate entries when the same token is added multiple times.tokensToImportaddresses to checksum and use checksummed list for deduping/updates inaddTokens, preventing duplicate entries instate.allTokens.state.allTokens.Written by Cursor Bugbot for commit 6df8521. This will update automatically on new commits. Configure here.