diff --git a/packages/connect/src/config/createConfig.ts b/packages/connect/src/config/createConfig.ts index 980c83fd4..c947754fe 100644 --- a/packages/connect/src/config/createConfig.ts +++ b/packages/connect/src/config/createConfig.ts @@ -21,7 +21,7 @@ export const createConfig = (walletType: T, options: Creat const { projectAccessKey, chainIds, wagmiConfig, ...rest } = options const chains = wagmiConfig?.chains || getDefaultChains(chainIds) - const transports = wagmiConfig?.transports || getDefaultTransports(chains) + const transports = wagmiConfig?.transports || getDefaultTransports(chains, projectAccessKey) const connectors = wagmiConfig?.connectors || getDefaultConnectors(walletType, options) return { diff --git a/packages/connect/src/config/defaultTransports.ts b/packages/connect/src/config/defaultTransports.ts index efd407a50..e046b5128 100644 --- a/packages/connect/src/config/defaultTransports.ts +++ b/packages/connect/src/config/defaultTransports.ts @@ -1,5 +1,29 @@ import { http, type Chain } from 'viem' -export const getDefaultTransports = (chains: readonly [Chain, ...Chain[]]) => { - return Object.fromEntries(chains.map(chain => [chain.id, http()])) +const isSequenceNodeUrl = (url: string): boolean => { + return url.includes('sequence.app') +} + +const appendAccessKey = (url: string, accessKey: string): string => { + const cleanUrl = url.endsWith('/') ? url.slice(0, -1) : url + if (url.endsWith(accessKey)) { + return url + } + + return `${cleanUrl}/${accessKey}` +} + +export const getDefaultTransports = (chains: readonly [Chain, ...Chain[]], projectAccessKey?: string) => { + return Object.fromEntries( + chains.map(chain => { + const rpcUrl = chain.rpcUrls.default.http[0] + + if (projectAccessKey && rpcUrl && isSequenceNodeUrl(rpcUrl)) { + const urlWithAccessKey = appendAccessKey(rpcUrl, projectAccessKey) + return [chain.id, http(urlWithAccessKey)] + } + + return [chain.id, http()] + }) + ) }