diff --git a/packages/coinbase/src/index.ts b/packages/coinbase/src/index.ts index 8cfaae86b..1d4517764 100644 --- a/packages/coinbase/src/index.ts +++ b/packages/coinbase/src/index.ts @@ -3,6 +3,7 @@ import type { WalletInit, WalletInterface } from '@web3-onboard/common' +import { convertChainIdToNumber } from '@web3-onboard/common' function coinbaseWallet({ supportedWalletType = 'all', @@ -50,10 +51,7 @@ function coinbaseWallet({ const base64 = window.btoa(icon || '') const appLogoUrl = `data:image/svg+xml;base64,${base64}` - const appChainIds = chains.map( - // @ts-ignore - treating hex strings as numbers as they are expected to be hex numbers - ({ id }) => id as number - ) + const appChainIds = chains.map(({ id }) => convertChainIdToNumber(id)) const instance = new CoinbaseWalletSDKConstructor({ appName: name || '', diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index 500fe4f9a..3dc24b42b 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -8,7 +8,8 @@ export { bigIntToHex, ethToWeiBigInt, createDownloadMessage, - chainIdToViemImport + chainIdToViemImport, + convertChainIdToNumber } from './utils.js' export * from './types.js' diff --git a/packages/common/src/utils.ts b/packages/common/src/utils.ts index 778f5d630..60db5a5e4 100644 --- a/packages/common/src/utils.ts +++ b/packages/common/src/utils.ts @@ -50,6 +50,14 @@ export const createDownloadMessage = ( } } +export const convertChainIdToNumber = (chainId: string | number): number => { + if (typeof chainId === 'number') { + return chainId + } + const hexRegex = /^[0-9a-fA-F]+$/ + return hexRegex.test(chainId) ? parseInt(chainId, 16) : Number(chainId) +} + export const chainIdToViemImport = async ( w3oChain: Chain ): Promise => {