feat: allow partial revokes via wallet_revokeSession
#75
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.
Explanation
Uniswap reported a bug in slack here where MetaMask was unpermitting any EVM connections for a dapp if that dapp used the solana wallet standard provider to make a connect request and then cancelled it.
This call to
disconnect()is happening outside of our packages and is not related to a previous but similar bug where our own wallet-standard provider was callingwallet_revokeSessionwhen receiving an empty solanaaccountsChangedevent.To fix this, this PR proposes an implementation for partial permission revoking in the
wallet_revokeSessionhandler so that we can then update our solanawallet-standardprovider to only revoke the solana scopes when it is asked to disconnect.References