diff --git a/packages/core/src/actions/getConnectorClient.ts b/packages/core/src/actions/getConnectorClient.ts index 981df0f6cf..6b980e7caa 100644 --- a/packages/core/src/actions/getConnectorClient.ts +++ b/packages/core/src/actions/getConnectorClient.ts @@ -42,8 +42,9 @@ export async function getConnectorClient< config: config, parameters: GetConnectorClientParameters = {}, ): Promise> { - const { chainId } = parameters + const { chainId: chainId_ } = parameters + // Get connection let connection: Connection | undefined if (parameters.connector) { const { connector } = parameters @@ -59,23 +60,25 @@ export async function getConnectorClient< } else connection = config.state.connections.get(config.state.current!) if (!connection) throw new ConnectorNotFoundError() - const resolvedChainId = chainId ?? connection.chainId + const chainId = chainId_ ?? connection.chainId + type Return = GetConnectorClientReturnType + + // If connector has custom `getClient` implementation const connector = connection.connector if (connector.getClient) - return connector.getClient({ - chainId: resolvedChainId, - }) as unknown as GetConnectorClientReturnType + return connector.getClient({ chainId: chainId }) as unknown as Return + // Default using `custom` transport const account = connection.accounts[0]! - const chain = config.chains.find((chain) => chain.id === resolvedChainId) - const provider = (await connection.connector.getProvider({ - chainId: resolvedChainId, - })) as { request(...args: any): Promise } + const chain = config.chains.find((chain) => chain.id === chainId) + const provider = (await connection.connector.getProvider({ chainId })) as { + request(...args: any): Promise + } return createClient({ account, chain, name: 'Connector Client', transport: (opts) => custom(provider)({ ...opts, retryCount: 0 }), - }) as unknown as GetConnectorClientReturnType + }) as unknown as Return } diff --git a/packages/react/src/hooks/useAccount.ts b/packages/react/src/hooks/useAccount.ts index 76ac14cd23..086765b6ff 100644 --- a/packages/react/src/hooks/useAccount.ts +++ b/packages/react/src/hooks/useAccount.ts @@ -16,7 +16,7 @@ export type UseAccountReturnType = GetAccountReturnType export function useAccount( parameters: UseAccountParameters = {}, ): UseAccountReturnType { - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) return useSyncExternalStoreWithTracked( (onChange) => watchAccount(config, { onChange }), () => getAccount(config), diff --git a/packages/react/src/hooks/useAccountEffect.ts b/packages/react/src/hooks/useAccountEffect.ts index a03b41100f..2a8e216d9f 100644 --- a/packages/react/src/hooks/useAccountEffect.ts +++ b/packages/react/src/hooks/useAccountEffect.ts @@ -24,7 +24,7 @@ export type UseAccountEffectParameters = Evaluate< /** https://wagmi.sh/react/hooks/useAccountEffect */ export function useAccountEffect(parameters: UseAccountEffectParameters = {}) { const { onConnect, onDisconnect } = parameters - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) useEffect(() => { return watchAccount(config, { diff --git a/packages/react/src/hooks/useBalance.ts b/packages/react/src/hooks/useBalance.ts index 216a7b9271..31d32e2294 100644 --- a/packages/react/src/hooks/useBalance.ts +++ b/packages/react/src/hooks/useBalance.ts @@ -48,12 +48,12 @@ export function useBalance< parameters: UseBalanceParameters = {}, ): UseBalanceReturnType { const { address, ...query } = parameters - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) - const chainId = parameters.chainId ?? useChainId() + const chainId = useChainId() const queryOptions = getBalanceQueryOptions(config, { ...parameters, - chainId, + chainId: parameters.chainId ?? chainId, }) const enabled = Boolean(address && (parameters.enabled ?? true)) diff --git a/packages/react/src/hooks/useBlockNumber.ts b/packages/react/src/hooks/useBlockNumber.ts index 10052008dd..ec920116d9 100644 --- a/packages/react/src/hooks/useBlockNumber.ts +++ b/packages/react/src/hooks/useBlockNumber.ts @@ -49,10 +49,11 @@ export function useBlockNumber< parameters: UseBlockNumberParameters = {}, ): UseBlockNumberReturnType { const { enabled = true, watch, ...query } = parameters - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) const queryClient = useQueryClient() - const chainId = parameters.chainId ?? useChainId() + const configChainId = useChainId() + const chainId = parameters.chainId ?? configChainId const queryOptions = getBlockNumberQueryOptions(config, { chainId }) useEffect(() => { diff --git a/packages/react/src/hooks/useChainId.ts b/packages/react/src/hooks/useChainId.ts index 98abb75edc..0c3d17166b 100644 --- a/packages/react/src/hooks/useChainId.ts +++ b/packages/react/src/hooks/useChainId.ts @@ -20,7 +20,7 @@ export type UseChainIdReturnType = export function useChainId( parameters: UseChainIdParameters = {}, ): UseChainIdReturnType { - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) return useSyncExternalStore( (onChange) => watchChainId(config, { onChange }), () => getChainId(config), diff --git a/packages/react/src/hooks/useConnect.ts b/packages/react/src/hooks/useConnect.ts index 6c8285e0b4..892c91cb0a 100644 --- a/packages/react/src/hooks/useConnect.ts +++ b/packages/react/src/hooks/useConnect.ts @@ -53,7 +53,7 @@ export function useConnect< >( parameters: UseConnectParameters = {}, ): UseConnectReturnType { - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) const mutationOptions = connectMutationOptions(config) const { mutate, mutateAsync, ...result } = useMutation({ ...parameters, diff --git a/packages/react/src/hooks/useConnections.ts b/packages/react/src/hooks/useConnections.ts index 26db890222..740061dde7 100644 --- a/packages/react/src/hooks/useConnections.ts +++ b/packages/react/src/hooks/useConnections.ts @@ -16,7 +16,7 @@ export type UseConnectionsReturnType = GetConnectionsReturnType export function useConnections( parameters: UseConnectionsParameters = {}, ): UseConnectionsReturnType { - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) return useSyncExternalStore( (onChange) => watchConnections(config, { onChange }), () => getConnections(config), diff --git a/packages/react/src/hooks/useConnectorClient.ts b/packages/react/src/hooks/useConnectorClient.ts index 8da67f4257..625af83583 100644 --- a/packages/react/src/hooks/useConnectorClient.ts +++ b/packages/react/src/hooks/useConnectorClient.ts @@ -54,14 +54,14 @@ export function useConnectorClient< parameters: UseConnectorClientParameters = {}, ): UseConnectorClientReturnType { const { gcTime = 0, staleTime = Infinity, ...query } = parameters - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) const queryClient = useQueryClient() const { address, connector, status } = useAccount() - const chainId = parameters.chainId ?? useChainId() + const chainId = useChainId() const { queryKey, ...options } = getConnectorClientQueryOptions(config, { ...parameters, - chainId, + chainId: parameters.chainId ?? chainId, connector: parameters.connector ?? connector, }) const enabled = Boolean( diff --git a/packages/react/src/hooks/useContractRead.ts b/packages/react/src/hooks/useContractRead.ts index 641024291f..bd4650e79a 100644 --- a/packages/react/src/hooks/useContractRead.ts +++ b/packages/react/src/hooks/useContractRead.ts @@ -88,12 +88,12 @@ export function useContractRead< >, ): UseContractReadReturnType { const { address, abi, functionName, ...query } = parameters - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) - const chainId = parameters.chainId ?? useChainId() + const chainId = useChainId() const queryOptions = readContractQueryOptions(config, { ...parameters, - chainId, + chainId: parameters.chainId ?? chainId, } as ReadContractOptions) const enabled = Boolean( address && abi && functionName && (parameters.enabled ?? true), diff --git a/packages/react/src/hooks/useContractReads.ts b/packages/react/src/hooks/useContractReads.ts index 4472f1caec..8aba4b82af 100644 --- a/packages/react/src/hooks/useContractReads.ts +++ b/packages/react/src/hooks/useContractReads.ts @@ -61,7 +61,7 @@ export function useContractReads< > = {}, ): UseContractReadsReturnType { const { contracts = [], ...query } = parameters - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) const chainId = useChainId() const queryOptions = readContractsQueryOptions(config, { diff --git a/packages/react/src/hooks/useContractSimulate.ts b/packages/react/src/hooks/useContractSimulate.ts index 91d33c4dc1..36f4db0418 100644 --- a/packages/react/src/hooks/useContractSimulate.ts +++ b/packages/react/src/hooks/useContractSimulate.ts @@ -98,18 +98,18 @@ export function useContractSimulate< selectData > { const { abi, address, connector, functionName, ...query } = parameters - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) const { data: connectorClient } = useConnectorClient({ connector, enabled: parameters.account === undefined, }) const account = parameters.account ?? connectorClient?.account - const chainId = parameters.chainId ?? useChainId() + const chainId = useChainId() const queryOptions = simulateContractQueryOptions(config, { ...(parameters as any), account, - chainId, + chainId: parameters.chainId ?? chainId, }) const enabled = Boolean( abi && address && functionName && (parameters.enabled ?? true), diff --git a/packages/react/src/hooks/useDisconnect.ts b/packages/react/src/hooks/useDisconnect.ts index 7980667671..76343dffab 100644 --- a/packages/react/src/hooks/useDisconnect.ts +++ b/packages/react/src/hooks/useDisconnect.ts @@ -41,7 +41,7 @@ export type UseDisconnectReturnType = Evaluate< export function useDisconnect( parameters: UseDisconnectParameters = {}, ): UseDisconnectReturnType { - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) const mutationOptions = disconnectMutationOptions(config) const { mutate, mutateAsync, ...result } = useMutation({ ...parameters, diff --git a/packages/react/src/hooks/useEnsAddress.ts b/packages/react/src/hooks/useEnsAddress.ts index bcf3cae099..cb46ae347c 100644 --- a/packages/react/src/hooks/useEnsAddress.ts +++ b/packages/react/src/hooks/useEnsAddress.ts @@ -42,12 +42,12 @@ export function useEnsAddress< parameters: UseEnsAddressParameters = {}, ): UseEnsAddressReturnType { const { name, ...query } = parameters - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) - const chainId = parameters.chainId ?? useChainId() + const chainId = useChainId() const queryOptions = getEnsAddressQueryOptions(config, { ...parameters, - chainId, + chainId: parameters.chainId ?? chainId, }) const enabled = Boolean(name && (parameters.enabled ?? true)) diff --git a/packages/react/src/hooks/useEnsAvatar.ts b/packages/react/src/hooks/useEnsAvatar.ts index 9bf4509466..fd5f58e769 100644 --- a/packages/react/src/hooks/useEnsAvatar.ts +++ b/packages/react/src/hooks/useEnsAvatar.ts @@ -42,12 +42,12 @@ export function useEnsAvatar< parameters: UseEnsAvatarParameters = {}, ): UseEnsAvatarReturnType { const { name, ...query } = parameters - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) - const chainId = parameters.chainId ?? useChainId() + const chainId = useChainId() const queryOptions = getEnsAvatarQueryOptions(config, { ...parameters, - chainId, + chainId: parameters.chainId ?? chainId, }) const enabled = Boolean(name && (parameters.enabled ?? true)) diff --git a/packages/react/src/hooks/useEnsName.ts b/packages/react/src/hooks/useEnsName.ts index 573b8f4ff8..bec324c39e 100644 --- a/packages/react/src/hooks/useEnsName.ts +++ b/packages/react/src/hooks/useEnsName.ts @@ -44,12 +44,12 @@ export function useEnsName< parameters: UseEnsNameParameters = {}, ): UseEnsNameReturnType { const { address, ...query } = parameters - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) - const chainId = parameters.chainId ?? useChainId() + const chainId = useChainId() const queryOptions = getEnsNameQueryOptions(config, { ...parameters, - chainId, + chainId: parameters.chainId ?? chainId, }) const enabled = Boolean(address && (parameters.enabled ?? true)) diff --git a/packages/react/src/hooks/useEnsResolver.ts b/packages/react/src/hooks/useEnsResolver.ts index 1a0f19c22b..9d203f5655 100644 --- a/packages/react/src/hooks/useEnsResolver.ts +++ b/packages/react/src/hooks/useEnsResolver.ts @@ -42,12 +42,12 @@ export function useEnsResolver< parameters: UseEnsResolverParameters = {}, ): UseEnsResolverReturnType { const { name, ...query } = parameters - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) - const chainId = parameters.chainId ?? useChainId() + const chainId = useChainId() const queryOptions = getEnsResolverQueryOptions(config, { ...parameters, - chainId, + chainId: parameters.chainId ?? chainId, }) const enabled = Boolean(name && (parameters.enabled ?? true)) diff --git a/packages/react/src/hooks/useFeeData.ts b/packages/react/src/hooks/useFeeData.ts index f08e8293bc..1dc6a6c0d5 100644 --- a/packages/react/src/hooks/useFeeData.ts +++ b/packages/react/src/hooks/useFeeData.ts @@ -47,12 +47,12 @@ export function useFeeData< >( parameters: UseFeeDataParameters = {}, ): UseFeeDataReturnType { - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) - const chainId = parameters.chainId ?? useChainId() + const chainId = useChainId() const queryOptions = getFeeDataQueryOptions(config, { ...parameters, - chainId, + chainId: parameters.chainId ?? chainId, }) return useQuery({ diff --git a/packages/react/src/hooks/usePrepareSendTransaction.ts b/packages/react/src/hooks/usePrepareSendTransaction.ts index f38eee922d..0805036dcc 100644 --- a/packages/react/src/hooks/usePrepareSendTransaction.ts +++ b/packages/react/src/hooks/usePrepareSendTransaction.ts @@ -60,11 +60,11 @@ export function usePrepareSendTransaction< }) const account = parameters.account ?? connectorClient?.account - const chainId = parameters.chainId ?? useChainId() + const chainId = useChainId() const queryOptions = prepareSendTransactionQueryOptions(config, { ...parameters, account, - chainId, + chainId: parameters.chainId ?? chainId, }) const enabled = Boolean(parameters.enabled ?? true) diff --git a/packages/react/src/hooks/useReconnect.ts b/packages/react/src/hooks/useReconnect.ts index da3687bf8d..d0bb2026bd 100644 --- a/packages/react/src/hooks/useReconnect.ts +++ b/packages/react/src/hooks/useReconnect.ts @@ -40,7 +40,7 @@ export type UseReconnectReturnType = Evaluate< export function useReconnect( parameters: UseReconnectParameters = {}, ): UseReconnectReturnType { - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) const mutationOptions = reconnectMutationOptions(config) const { mutate, mutateAsync, ...result } = useMutation({ ...parameters, diff --git a/packages/react/src/hooks/useSignMessage.ts b/packages/react/src/hooks/useSignMessage.ts index 2f83a3f1ff..ad6e038fcb 100644 --- a/packages/react/src/hooks/useSignMessage.ts +++ b/packages/react/src/hooks/useSignMessage.ts @@ -39,7 +39,7 @@ export type UseSignMessageReturnType = Evaluate< export function useSignMessage( parameters: UseSignMessageParameters = {}, ): UseSignMessageReturnType { - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) const mutationOptions = signMessageMutationOptions(config) const { mutate, mutateAsync, ...result } = useMutation({ ...parameters, diff --git a/packages/react/src/hooks/useSignTypedData.ts b/packages/react/src/hooks/useSignTypedData.ts index 1df589708b..7443ba34e5 100644 --- a/packages/react/src/hooks/useSignTypedData.ts +++ b/packages/react/src/hooks/useSignTypedData.ts @@ -39,7 +39,7 @@ export type UseSignTypedDataReturnType = Evaluate< export function useSignTypedData( parameters: UseSignTypedDataParameters = {}, ): UseSignTypedDataReturnType { - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) const mutationOptions = signTypedDataMutationOptions(config) const { mutate, mutateAsync, ...result } = useMutation({ ...parameters, diff --git a/packages/react/src/hooks/useSwitchAccount.ts b/packages/react/src/hooks/useSwitchAccount.ts index a4becf19f5..56d5167d2e 100644 --- a/packages/react/src/hooks/useSwitchAccount.ts +++ b/packages/react/src/hooks/useSwitchAccount.ts @@ -55,7 +55,7 @@ export function useSwitchAccount< >( parameters: UseSwitchAccountParameters = {}, ): UseSwitchAccountReturnType { - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) const mutationOptions = switchAccountMutationOptions(config) const { mutate, mutateAsync, ...result } = useMutation({ ...parameters, diff --git a/packages/react/src/hooks/useToken.ts b/packages/react/src/hooks/useToken.ts index ed30be2516..8a71821569 100644 --- a/packages/react/src/hooks/useToken.ts +++ b/packages/react/src/hooks/useToken.ts @@ -44,12 +44,12 @@ export function useToken< parameters: UseTokenParameters = {}, ): UseTokenReturnType { const { address, ...query } = parameters - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) - const chainId = parameters.chainId ?? useChainId() + const chainId = useChainId() const queryOptions = getTokenQueryOptions(config, { ...parameters, - chainId, + chainId: parameters.chainId ?? chainId, }) const enabled = Boolean(address && (parameters.enabled ?? true)) diff --git a/packages/react/src/hooks/useTransaction.ts b/packages/react/src/hooks/useTransaction.ts index 67d04b1b6a..2549955274 100644 --- a/packages/react/src/hooks/useTransaction.ts +++ b/packages/react/src/hooks/useTransaction.ts @@ -47,12 +47,12 @@ export function useTransaction< parameters: UseTransactionParameters = {}, ): UseTransactionReturnType { const { blockHash, blockNumber, blockTag, hash, ...query } = parameters - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) - const chainId = parameters.chainId ?? useChainId() + const chainId = useChainId() const queryOptions = getTransactionQueryOptions(config, { ...parameters, - chainId, + chainId: parameters.chainId ?? chainId, }) const enabled = Boolean( !(blockHash && blockNumber && blockTag && hash) && diff --git a/packages/react/src/hooks/useWaitForTransactionReceipt.ts b/packages/react/src/hooks/useWaitForTransactionReceipt.ts index d5c25f8736..a0944fde55 100644 --- a/packages/react/src/hooks/useWaitForTransactionReceipt.ts +++ b/packages/react/src/hooks/useWaitForTransactionReceipt.ts @@ -55,12 +55,12 @@ export function useWaitForTransactionReceipt< > = {}, ): UseWaitForTransactionReceiptReturnType { const { hash, ...query } = parameters - const config = parameters.config ?? useConfig() + const config = useConfig(parameters) - const chainId = parameters.chainId ?? useChainId() + const chainId = useChainId() const queryOptions = waitForTransactionReceiptQueryOptions(config, { ...parameters, - chainId, + chainId: parameters.chainId ?? chainId, }) const enabled = Boolean(!hash && (parameters.enabled ?? true)) diff --git a/packages/react/src/types/properties.ts b/packages/react/src/types/properties.ts index bec8d47440..62f2722631 100644 --- a/packages/react/src/types/properties.ts +++ b/packages/react/src/types/properties.ts @@ -1,5 +1,5 @@ import type { Config } from '@wagmi/core' export type ConfigParameter = { - config?: config | undefined + config?: Config | config | undefined } diff --git a/playgrounds/vite-react/src/App.tsx b/playgrounds/vite-react/src/App.tsx index 59aa29939d..fd8d831465 100644 --- a/playgrounds/vite-react/src/App.tsx +++ b/playgrounds/vite-react/src/App.tsx @@ -33,8 +33,8 @@ function App() { - + ) @@ -60,7 +60,7 @@ function Account() { {account.status === 'connected' && ( - )} @@ -80,7 +80,7 @@ function Connect() { id={connector.uid} key={connector.uid} onClick={() => connect({ connector, chainId })} - type='button' + type="button" > {connector.name} @@ -104,7 +104,7 @@ function SwitchAccount() { disabled={account.connector?.uid === connector.uid} key={connector.uid} onClick={() => switchAccount({ connector })} - type='button' + type="button" > {connector.name} @@ -126,7 +126,7 @@ function SwitchChain() { disabled={chainId === chain.id} key={chain.id} onClick={() => switchChain({ chainId: chain.id })} - type='button' + type="button" > {chain.name} @@ -149,8 +149,8 @@ function SignMessage() { signMessage({ message: formData.get('message') as string }) }} > - - + + {data}