v1.9.2 (#734)
* Bug: Invalid V in signature with eth_sign (#728) * Fix invalid V with metamask/ledger * DONT FORGET TO REVERT BEFORE MERGING: test deployment * DONT FORGET TO REVERT BEFORE MERGING 2: test deployment * Revert "DONT FORGET TO REVERT BEFORE MERGING 2: test deployment" This reverts commit 8331f2a78f7fc8f53eb893899f16edd8238c68ff. * Revert "DONT FORGET TO REVERT BEFORE MERGING: test deployment" This reverts commit 03b81e31820ce4fe078a7131c2f0caa2af4870ac. * BUG: Only injected providers are cached as last used provider (#733) * cache every used provider, not only injected one * package json update
This commit is contained in:
parent
40375585eb
commit
3942347b5a
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "safe-react",
|
||||
"version": "1.9.1",
|
||||
"version": "1.9.2",
|
||||
"description": "Allowing crypto users manage funds in a safer way",
|
||||
"homepage": "https://github.com/gnosis/safe-react#readme",
|
||||
"bugs": {
|
||||
|
|
|
@ -13,7 +13,6 @@ import selector, { type SelectorProps } from './selector'
|
|||
|
||||
import { onboard } from '~/components/ConnectButton'
|
||||
import { NOTIFICATIONS, showSnackbar } from '~/logic/notifications'
|
||||
import { INJECTED_PROVIDERS } from '~/logic/wallets/getWeb3'
|
||||
import { loadLastUsedProvider } from '~/logic/wallets/store/middlewares/providerWatcher'
|
||||
import { type Info, logComponentStack } from '~/utils/logBoundaries'
|
||||
|
||||
|
@ -38,7 +37,7 @@ class HeaderComponent extends React.PureComponent<Props, State> {
|
|||
|
||||
async componentDidMount() {
|
||||
const lastUsedProvider = await loadLastUsedProvider()
|
||||
if (INJECTED_PROVIDERS.includes(lastUsedProvider.toUpperCase()) || process.env.NODE_ENV === 'test') {
|
||||
if (lastUsedProvider) {
|
||||
const hasSelectedWallet = await onboard.walletSelect(lastUsedProvider)
|
||||
if (hasSelectedWallet) {
|
||||
await onboard.walletCheck()
|
||||
|
|
|
@ -53,7 +53,28 @@ export const getEthSigner = async ({
|
|||
return
|
||||
}
|
||||
|
||||
resolve(signature.result.replace(EMPTY_DATA, ''))
|
||||
const sig = signature.result.replace(EMPTY_DATA, '')
|
||||
let sigV = parseInt(sig.slice(-2), 16)
|
||||
|
||||
// Metamask with ledger returns v = 01, this is not valid for ethereum
|
||||
// For ethereum valid V is 27 or 28
|
||||
// In case V = 0 or 01 we add it to 27 and then add 4
|
||||
// Adding 4 is required to make signature valid for safe contracts:
|
||||
// https://gnosis-safe.readthedocs.io/en/latest/contracts/signatures.html#eth-sign-signature
|
||||
switch (sigV) {
|
||||
case 0:
|
||||
case 1:
|
||||
sigV += 31
|
||||
break
|
||||
case 27:
|
||||
case 28:
|
||||
sigV += 4
|
||||
break
|
||||
default:
|
||||
throw new Error('Invalid signature')
|
||||
}
|
||||
|
||||
resolve(sig.slice(0, -2) + sigV.toString(16))
|
||||
},
|
||||
)
|
||||
})
|
||||
|
|
|
@ -34,13 +34,6 @@ export const WALLET_PROVIDER = {
|
|||
TREZOR: 'TREZOR',
|
||||
}
|
||||
|
||||
export const INJECTED_PROVIDERS = [
|
||||
WALLET_PROVIDER.SAFE,
|
||||
WALLET_PROVIDER.METAMASK,
|
||||
WALLET_PROVIDER.OPERA,
|
||||
WALLET_PROVIDER.DAPPER,
|
||||
]
|
||||
|
||||
export const ETHEREUM_NETWORK_IDS = {
|
||||
// $FlowFixMe
|
||||
1: ETHEREUM_NETWORK.MAINNET,
|
||||
|
|
Loading…
Reference in New Issue