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",
|
"name": "safe-react",
|
||||||
"version": "1.9.1",
|
"version": "1.9.2",
|
||||||
"description": "Allowing crypto users manage funds in a safer way",
|
"description": "Allowing crypto users manage funds in a safer way",
|
||||||
"homepage": "https://github.com/gnosis/safe-react#readme",
|
"homepage": "https://github.com/gnosis/safe-react#readme",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
|
|
|
@ -13,7 +13,6 @@ import selector, { type SelectorProps } from './selector'
|
||||||
|
|
||||||
import { onboard } from '~/components/ConnectButton'
|
import { onboard } from '~/components/ConnectButton'
|
||||||
import { NOTIFICATIONS, showSnackbar } from '~/logic/notifications'
|
import { NOTIFICATIONS, showSnackbar } from '~/logic/notifications'
|
||||||
import { INJECTED_PROVIDERS } from '~/logic/wallets/getWeb3'
|
|
||||||
import { loadLastUsedProvider } from '~/logic/wallets/store/middlewares/providerWatcher'
|
import { loadLastUsedProvider } from '~/logic/wallets/store/middlewares/providerWatcher'
|
||||||
import { type Info, logComponentStack } from '~/utils/logBoundaries'
|
import { type Info, logComponentStack } from '~/utils/logBoundaries'
|
||||||
|
|
||||||
|
@ -38,7 +37,7 @@ class HeaderComponent extends React.PureComponent<Props, State> {
|
||||||
|
|
||||||
async componentDidMount() {
|
async componentDidMount() {
|
||||||
const lastUsedProvider = await loadLastUsedProvider()
|
const lastUsedProvider = await loadLastUsedProvider()
|
||||||
if (INJECTED_PROVIDERS.includes(lastUsedProvider.toUpperCase()) || process.env.NODE_ENV === 'test') {
|
if (lastUsedProvider) {
|
||||||
const hasSelectedWallet = await onboard.walletSelect(lastUsedProvider)
|
const hasSelectedWallet = await onboard.walletSelect(lastUsedProvider)
|
||||||
if (hasSelectedWallet) {
|
if (hasSelectedWallet) {
|
||||||
await onboard.walletCheck()
|
await onboard.walletCheck()
|
||||||
|
|
|
@ -53,7 +53,28 @@ export const getEthSigner = async ({
|
||||||
return
|
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',
|
TREZOR: 'TREZOR',
|
||||||
}
|
}
|
||||||
|
|
||||||
export const INJECTED_PROVIDERS = [
|
|
||||||
WALLET_PROVIDER.SAFE,
|
|
||||||
WALLET_PROVIDER.METAMASK,
|
|
||||||
WALLET_PROVIDER.OPERA,
|
|
||||||
WALLET_PROVIDER.DAPPER,
|
|
||||||
]
|
|
||||||
|
|
||||||
export const ETHEREUM_NETWORK_IDS = {
|
export const ETHEREUM_NETWORK_IDS = {
|
||||||
// $FlowFixMe
|
// $FlowFixMe
|
||||||
1: ETHEREUM_NETWORK.MAINNET,
|
1: ETHEREUM_NETWORK.MAINNET,
|
||||||
|
|
Loading…
Reference in New Issue