Skip to content

Commit 6e9f251

Browse files
authored
fix: wagmi write contract params (#5317)
1 parent a2abe6a commit 6e9f251

File tree

4 files changed

+34
-8
lines changed

4 files changed

+34
-8
lines changed

.changeset/orange-views-swim.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@reown/appkit-adapter-wagmi': patch
3+
---
4+
5+
Fixes `writeContract` parameters when sending tranactions

apps/laboratory/src/utils/ConstantsUtil.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import {
1717
monadTestnet,
1818
optimism,
1919
polygon,
20+
rootstock,
21+
rootstockTestnet,
2022
sepolia,
2123
solana,
2224
solanaDevnet,
@@ -86,7 +88,9 @@ const EvmNetworks = [
8688
aurora,
8789
mantle,
8890
abstract,
89-
monadTestnet
91+
monadTestnet,
92+
rootstock,
93+
rootstockTestnet
9094
] as [AppKitNetwork, ...AppKitNetwork[]]
9195

9296
export const solanaNotExist = {

packages/adapters/wagmi/src/client.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -425,10 +425,10 @@ export class WagmiAdapter extends AdapterBlueprint {
425425
): Promise<AdapterBlueprint.WriteContractResult> {
426426
const { caipNetwork, ...data } = params
427427
const chainId = Number(NetworkUtil.caipNetworkIdToNumber(caipNetwork.caipNetworkId))
428+
const wagmiChain = this.wagmiChains?.find(chain => chain.id === chainId)
428429

429430
const tx = await wagmiWriteContract(this.wagmiConfig, {
430-
chain: this.wagmiChains?.[chainId],
431-
chainId,
431+
chain: wagmiChain,
432432
address: data.tokenAddress,
433433
account: data.fromAddress,
434434
abi: data.abi,

packages/adapters/wagmi/src/tests/client.test.ts

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ import {
1616
import * as wagmiCore from '@wagmi/core'
1717
import { mainnet } from '@wagmi/core/chains'
1818
import type UniversalProvider from '@walletconnect/universal-provider'
19-
import { checksumAddress } from 'viem'
19+
import { type Address, checksumAddress } from 'viem'
2020
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'
2121

2222
import { type CaipAddress, ConstantsUtil } from '@reown/appkit-common'
2323
import {
24+
AdapterBlueprint,
2425
ChainController,
2526
type ConnectionControllerClient,
2627
ConnectorController,
@@ -474,18 +475,34 @@ describe('WagmiAdapter', () => {
474475
const mockTxHash = '0xtxhash'
475476
vi.mocked(wagmiWriteContract).mockResolvedValue(mockTxHash)
476477

477-
const result = await adapter.writeContract({
478+
const writeContractParams = {
478479
caipNetwork: mockCaipNetworks[0],
479480
caipAddress: 'eip155:1:0x123',
480-
tokenAddress: '0x123',
481-
fromAddress: '0x456',
481+
tokenAddress: '0x123' as Address,
482+
fromAddress: '0x456' as Address,
482483
args: ['0x789', BigInt(1000)],
483484
abi: [],
484485
method: 'transfer',
485486
chainNamespace: 'eip155'
486-
})
487+
}
488+
489+
const result = await adapter.writeContract(
490+
writeContractParams as AdapterBlueprint.WriteContractParams
491+
)
487492

488493
expect(result.hash).toBe(mockTxHash)
494+
expect(wagmiWriteContract).toHaveBeenCalledWith(
495+
adapter.wagmiConfig,
496+
expect.objectContaining({
497+
chain: adapter.wagmiChains?.[0],
498+
address: writeContractParams.tokenAddress,
499+
account: writeContractParams.fromAddress,
500+
abi: writeContractParams.abi,
501+
functionName: writeContractParams.method,
502+
args: writeContractParams.args,
503+
__mode: 'prepared'
504+
})
505+
)
489506
})
490507
})
491508

0 commit comments

Comments
 (0)