diff --git a/src/stores.js b/src/stores.js index fd7318e..74bcf13 100644 --- a/src/stores.js +++ b/src/stores.js @@ -39,6 +39,9 @@ const getWindowEthereum = () => { } } +// always get chainId as number +const alwaysNumber = n => Web3.utils.isHex(n) ? Web3.utils.hexToNumber(n) : n + export const createStore = () => { const { emit, get, subscribe, assign, deleteAll } = proxied() @@ -49,7 +52,7 @@ export const createStore = () => { }) => { // console.log('switch1193Provider', { accounts, chainId }, get('web3'), get('eipProvider')) if (!chainId) { - chainId = await get('web3').eth.getChainId() + chainId = alwaysNumber(await get('web3').eth.getChainId()) } if (!accounts) { accounts = await get('web3').eth.getAccounts() @@ -71,7 +74,7 @@ export const createStore = () => { } const accountsChangedHandler = accounts => switch1193Provider({ accounts }) - const chainChangedHandler = chainId => switch1193Provider({ chainId }) + const chainChangedHandler = chainId => switch1193Provider({ chainId: alwaysNumber(chainId) }) // TODO better error support ? const disconnectHandler = error => switch1193Provider({ error }) @@ -133,7 +136,7 @@ export const createStore = () => { return set1193Provider(provider, addressOrIndex) init() const web3 = new Web3(provider) - const chainId = await web3.eth.getChainId() + const chainId = alwaysNumber(await get('web3').eth.getChainId()) let accounts = [] try { // not all provider support accounts