From 9a69a11513b951d64ed8d03df6bc14aa9e6c51bc Mon Sep 17 00:00:00 2001 From: Joaquim Verges Date: Fri, 21 Mar 2025 10:41:16 +1300 Subject: [PATCH] [SDK] fix: Pass chainId to internal 1193 provider when connecting --- .changeset/cruel-tires-cheer.md | 5 +++++ .../src/adapters/eip1193/from-eip1193.ts | 20 +++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) create mode 100644 .changeset/cruel-tires-cheer.md diff --git a/.changeset/cruel-tires-cheer.md b/.changeset/cruel-tires-cheer.md new file mode 100644 index 00000000000..66278fa7f81 --- /dev/null +++ b/.changeset/cruel-tires-cheer.md @@ -0,0 +1,5 @@ +--- +"thirdweb": patch +--- + +Pass along chainId to internal 1193 provider when connecting diff --git a/packages/thirdweb/src/adapters/eip1193/from-eip1193.ts b/packages/thirdweb/src/adapters/eip1193/from-eip1193.ts index f191a71d421..21c2c301e7d 100644 --- a/packages/thirdweb/src/adapters/eip1193/from-eip1193.ts +++ b/packages/thirdweb/src/adapters/eip1193/from-eip1193.ts @@ -15,7 +15,9 @@ import type { EIP1193Provider } from "./types.js"; * Options for creating an EIP-1193 provider adapter. */ export type FromEip1193AdapterOptions = { - provider: EIP1193Provider | (() => Promise); + provider: + | EIP1193Provider + | ((params?: { chainId?: number }) => Promise); walletId?: WalletId; }; @@ -63,13 +65,11 @@ export function fromProvider(options: FromEip1193AdapterOptions): Wallet { let account: Account | undefined = undefined; let chain: Chain | undefined = undefined; let provider: EIP1193Provider | undefined = undefined; - const getProvider = async () => { - if (!provider) { - provider = - typeof options.provider === "function" - ? await options.provider() - : options.provider; - } + const getProvider = async (params?: { chainId?: number }) => { + provider = + typeof options.provider === "function" + ? await options.provider(params) + : options.provider; return provider; }; @@ -118,7 +118,7 @@ export function fromProvider(options: FromEip1193AdapterOptions): Wallet { const [connectedAccount, connectedChain, doDisconnect, doSwitchChain] = await connectEip1193Wallet({ id, - provider: await getProvider(), + provider: await getProvider({ chainId: connectOptions.chain?.id }), client: connectOptions.client, chain: connectOptions.chain, emitter, @@ -141,7 +141,7 @@ export function fromProvider(options: FromEip1193AdapterOptions): Wallet { const [connectedAccount, connectedChain, doDisconnect, doSwitchChain] = await autoConnectEip1193Wallet({ id, - provider: await getProvider(), + provider: await getProvider({ chainId: connectOptions.chain?.id }), emitter, chain: connectOptions.chain, client: connectOptions.client,