Skip to content

Commit

Permalink
refactor: hook rules
Browse files Browse the repository at this point in the history
  • Loading branch information
tmm committed Aug 29, 2023
1 parent 4238bfc commit 49aa435
Show file tree
Hide file tree
Showing 28 changed files with 73 additions and 69 deletions.
23 changes: 13 additions & 10 deletions packages/core/src/actions/getConnectorClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,9 @@ export async function getConnectorClient<
config: config,
parameters: GetConnectorClientParameters<config, chainId> = {},
): Promise<GetConnectorClientReturnType<config, chainId>> {
const { chainId } = parameters
const { chainId: chainId_ } = parameters

// Get connection
let connection: Connection | undefined
if (parameters.connector) {
const { connector } = parameters
Expand All @@ -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<config, chainId>

// If connector has custom `getClient` implementation
const connector = connection.connector
if (connector.getClient)
return connector.getClient({
chainId: resolvedChainId,
}) as unknown as GetConnectorClientReturnType<config, chainId>
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<any> }
const chain = config.chains.find((chain) => chain.id === chainId)
const provider = (await connection.connector.getProvider({ chainId })) as {
request(...args: any): Promise<any>
}

return createClient({
account,
chain,
name: 'Connector Client',
transport: (opts) => custom(provider)({ ...opts, retryCount: 0 }),
}) as unknown as GetConnectorClientReturnType<config, chainId>
}) as unknown as Return
}
2 changes: 1 addition & 1 deletion packages/react/src/hooks/useAccount.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/hooks/useAccountEffect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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, {
Expand Down
6 changes: 3 additions & 3 deletions packages/react/src/hooks/useBalance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,12 @@ export function useBalance<
parameters: UseBalanceParameters<config, selectData> = {},
): UseBalanceReturnType<selectData> {
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))

Expand Down
5 changes: 3 additions & 2 deletions packages/react/src/hooks/useBlockNumber.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,11 @@ export function useBlockNumber<
parameters: UseBlockNumberParameters<config, selectData> = {},
): UseBlockNumberReturnType<selectData> {
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(() => {
Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/hooks/useChainId.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export type UseChainIdReturnType<config extends Config = Config,> =
export function useChainId<config extends Config = ResolvedRegister['config']>(
parameters: UseChainIdParameters<config> = {},
): UseChainIdReturnType<config> {
const config = parameters.config ?? useConfig()
const config = useConfig(parameters)
return useSyncExternalStore(
(onChange) => watchChainId(config, { onChange }),
() => getChainId(config),
Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/hooks/useConnect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ export function useConnect<
>(
parameters: UseConnectParameters<config, context> = {},
): UseConnectReturnType<config, context> {
const config = parameters.config ?? useConfig()
const config = useConfig(parameters)
const mutationOptions = connectMutationOptions(config)
const { mutate, mutateAsync, ...result } = useMutation({
...parameters,
Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/hooks/useConnections.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down
6 changes: 3 additions & 3 deletions packages/react/src/hooks/useConnectorClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,14 @@ export function useConnectorClient<
parameters: UseConnectorClientParameters<config, chainId, selectData> = {},
): UseConnectorClientReturnType<config, chainId, selectData> {
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(
Expand Down
6 changes: 3 additions & 3 deletions packages/react/src/hooks/useContractRead.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,12 @@ export function useContractRead<
>,
): UseContractReadReturnType<abi, functionName, args, selectData> {
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<ResolvedRegister['config'], abi, functionName, args>)
const enabled = Boolean(
address && abi && functionName && (parameters.enabled ?? true),
Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/hooks/useContractReads.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ export function useContractReads<
> = {},
): UseContractReadsReturnType<contracts, allowFailure, selectData> {
const { contracts = [], ...query } = parameters
const config = parameters.config ?? useConfig()
const config = useConfig(parameters)

const chainId = useChainId()
const queryOptions = readContractsQueryOptions(config, {
Expand Down
6 changes: 3 additions & 3 deletions packages/react/src/hooks/useContractSimulate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/hooks/useDisconnect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ export type UseDisconnectReturnType<context = unknown> = Evaluate<
export function useDisconnect<context = unknown>(
parameters: UseDisconnectParameters<context> = {},
): UseDisconnectReturnType<context> {
const config = parameters.config ?? useConfig()
const config = useConfig(parameters)
const mutationOptions = disconnectMutationOptions(config)
const { mutate, mutateAsync, ...result } = useMutation({
...parameters,
Expand Down
6 changes: 3 additions & 3 deletions packages/react/src/hooks/useEnsAddress.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,12 @@ export function useEnsAddress<
parameters: UseEnsAddressParameters<config, selectData> = {},
): UseEnsAddressReturnType<selectData> {
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))

Expand Down
6 changes: 3 additions & 3 deletions packages/react/src/hooks/useEnsAvatar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,12 @@ export function useEnsAvatar<
parameters: UseEnsAvatarParameters<config, selectData> = {},
): UseEnsAvatarReturnType<selectData> {
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))

Expand Down
6 changes: 3 additions & 3 deletions packages/react/src/hooks/useEnsName.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,12 @@ export function useEnsName<
parameters: UseEnsNameParameters<config, selectData> = {},
): UseEnsNameReturnType<selectData> {
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))

Expand Down
6 changes: 3 additions & 3 deletions packages/react/src/hooks/useEnsResolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,12 @@ export function useEnsResolver<
parameters: UseEnsResolverParameters<config, selectData> = {},
): UseEnsResolverReturnType<selectData> {
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))

Expand Down
6 changes: 3 additions & 3 deletions packages/react/src/hooks/useFeeData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,12 @@ export function useFeeData<
>(
parameters: UseFeeDataParameters<config, selectData> = {},
): UseFeeDataReturnType<selectData> {
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({
Expand Down
4 changes: 2 additions & 2 deletions packages/react/src/hooks/usePrepareSendTransaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/hooks/useReconnect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export type UseReconnectReturnType<context = unknown> = Evaluate<
export function useReconnect<context = unknown>(
parameters: UseReconnectParameters<context> = {},
): UseReconnectReturnType<context> {
const config = parameters.config ?? useConfig()
const config = useConfig(parameters)
const mutationOptions = reconnectMutationOptions(config)
const { mutate, mutateAsync, ...result } = useMutation({
...parameters,
Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/hooks/useSignMessage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ export type UseSignMessageReturnType<context = unknown> = Evaluate<
export function useSignMessage<context = unknown>(
parameters: UseSignMessageParameters<context> = {},
): UseSignMessageReturnType<context> {
const config = parameters.config ?? useConfig()
const config = useConfig(parameters)
const mutationOptions = signMessageMutationOptions(config)
const { mutate, mutateAsync, ...result } = useMutation({
...parameters,
Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/hooks/useSignTypedData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ export type UseSignTypedDataReturnType<context = unknown> = Evaluate<
export function useSignTypedData<context = unknown>(
parameters: UseSignTypedDataParameters<context> = {},
): UseSignTypedDataReturnType<context> {
const config = parameters.config ?? useConfig()
const config = useConfig(parameters)
const mutationOptions = signTypedDataMutationOptions(config)
const { mutate, mutateAsync, ...result } = useMutation({
...parameters,
Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/hooks/useSwitchAccount.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ export function useSwitchAccount<
>(
parameters: UseSwitchAccountParameters<config, context> = {},
): UseSwitchAccountReturnType<config, context> {
const config = parameters.config ?? useConfig()
const config = useConfig(parameters)
const mutationOptions = switchAccountMutationOptions(config)
const { mutate, mutateAsync, ...result } = useMutation({
...parameters,
Expand Down
6 changes: 3 additions & 3 deletions packages/react/src/hooks/useToken.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,12 @@ export function useToken<
parameters: UseTokenParameters<config, selectData> = {},
): UseTokenReturnType<selectData> {
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))

Expand Down
6 changes: 3 additions & 3 deletions packages/react/src/hooks/useTransaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,12 @@ export function useTransaction<
parameters: UseTransactionParameters<config, chainId, selectData> = {},
): UseTransactionReturnType<config, chainId, selectData> {
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) &&
Expand Down
6 changes: 3 additions & 3 deletions packages/react/src/hooks/useWaitForTransactionReceipt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@ export function useWaitForTransactionReceipt<
> = {},
): UseWaitForTransactionReceiptReturnType<config, chainId, selectData> {
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))

Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/types/properties.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { Config } from '@wagmi/core'

export type ConfigParameter<config extends Config = Config> = {
config?: config | undefined
config?: Config | config | undefined
}
Loading

1 comment on commit 49aa435

@vercel
Copy link

@vercel vercel bot commented on 49aa435 Aug 29, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

wagmi-v2 – ./docs

wagmi-v2-git-alpha-wagmi-dev.vercel.app
wagmi-v2.vercel.app
alpha.wagmi.sh
wagmi-v2-wagmi-dev.vercel.app

Please sign in to comment.