diff --git a/.changeset/loud-avocados-play.md b/.changeset/loud-avocados-play.md new file mode 100644 index 0000000000..068c01fb9b --- /dev/null +++ b/.changeset/loud-avocados-play.md @@ -0,0 +1,6 @@ +--- +"@wagmi/core": patch +"wagmi": patch +--- + +Fixed issue where `prepareTransactionRequest` would internally call unsupported wallet RPC methods. diff --git a/packages/core/src/actions/prepareTransactionRequest.test.ts b/packages/core/src/actions/prepareTransactionRequest.test.ts index 1a40e6591c..aeb9c2ca30 100644 --- a/packages/core/src/actions/prepareTransactionRequest.test.ts +++ b/packages/core/src/actions/prepareTransactionRequest.test.ts @@ -26,6 +26,7 @@ test('default', async () => { } = request expect(rest).toMatchInlineSnapshot(` { + "account": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "chainId": 1, "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "to": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", @@ -67,35 +68,6 @@ test('parameters: account', async () => { await disconnect(config, { connector }) }) -test('parameters: connector', async () => { - await connect(config, { connector }) - - const request = await prepareTransactionRequest(config, { - connector, - to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', - value: parseEther('1'), - }) - - const { - gas: _gas, - maxFeePerGas: _mfpg, - maxPriorityFeePerGas: _mpfpg, - nonce: _nonce, - ...rest - } = request - expect(rest).toMatchInlineSnapshot(` - { - "chainId": 1, - "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "to": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8", - "type": "eip1559", - "value": 1000000000000000000n, - } - `) - - await disconnect(config, { connector }) -}) - test('behavior: local account', async () => { const account = privateKeyToAccount(privateKey) diff --git a/packages/core/src/actions/prepareTransactionRequest.ts b/packages/core/src/actions/prepareTransactionRequest.ts index 769e3d2b49..02eb114019 100644 --- a/packages/core/src/actions/prepareTransactionRequest.ts +++ b/packages/core/src/actions/prepareTransactionRequest.ts @@ -11,10 +11,7 @@ import { prepareTransactionRequest as viem_prepareTransactionRequest } from 'vie import { type Config } from '../createConfig.js' import { type SelectChains } from '../types/chain.js' -import { - type ChainIdParameter, - type ConnectorParameter, -} from '../types/properties.js' +import { type ChainIdParameter } from '../types/properties.js' import { type Evaluate, type IsNarrowable, @@ -22,7 +19,7 @@ import { type UnionOmit, } from '../types/utils.js' import { getAction } from '../utils/getAction.js' -import { getConnectorClient } from './getConnectorClient.js' +import { getAccount } from './getAccount.js' export type PrepareTransactionRequestParameters< config extends Config = Config, @@ -55,8 +52,7 @@ export type PrepareTransactionRequestParameters< >, 'chain' > & - ChainIdParameter & - ConnectorParameter & { + ChainIdParameter & { to: Address } > @@ -90,10 +86,9 @@ export type PrepareTransactionRequestReturnType< ? request : never > - > & - ConnectorParameter & { - chainId: chains[key]['id'] - } + > & { + chainId: chains[key]['id'] + } }[number] export type PrepareTransactionRequestErrorType = @@ -111,13 +106,10 @@ export async function prepareTransactionRequest< config: config, parameters: PrepareTransactionRequestParameters, ): Promise> { - const { account, chainId, connector, ...rest } = parameters + const { account: account_, chainId, ...rest } = parameters - let client - if (typeof account === 'object' && account.type === 'local') - client = config.getClient({ chainId }) - else - client = await getConnectorClient(config, { account, chainId, connector }) + const account = account_ ?? getAccount(config).address + const client = config.getClient({ chainId }) const action = getAction( client, diff --git a/packages/react/src/hooks/usePrepareTransactionRequest.test.ts b/packages/react/src/hooks/usePrepareTransactionRequest.test.ts index d80f8660c4..7b90729dbf 100644 --- a/packages/react/src/hooks/usePrepareTransactionRequest.test.ts +++ b/packages/react/src/hooks/usePrepareTransactionRequest.test.ts @@ -33,6 +33,7 @@ test('default', async () => { expect(data).toMatchInlineSnapshot(` { + "account": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "chainId": 1, "from": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "to": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8",