Skip to content

Commit

Permalink
wip: more config
Browse files Browse the repository at this point in the history
  • Loading branch information
tmm committed Aug 21, 2023
1 parent 33b5b4c commit b615acf
Show file tree
Hide file tree
Showing 10 changed files with 109 additions and 73 deletions.
4 changes: 3 additions & 1 deletion packages/core/src/actions/switchChain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ export type SwitchChainParameters<
export type SwitchChainReturnType<
config extends Config = Config,
chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
> = Extract<config['chains'][number], { id: chainId }>
> = chainId extends config['chains'][number]['id']
? Extract<config['chains'][number], { id: chainId }>
: config['chains'][number]

export type SwitchChainError =
| ProviderNotFoundError
Expand Down
16 changes: 7 additions & 9 deletions packages/core/src/query/switchChain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,21 +26,19 @@ export function switchChainMutationOptions<config extends Config>(

export type SwitchChainData<
config extends Config,
chainId extends config['chains'][number]['id'] | undefined,
chainId extends config['chains'][number]['id'],
> = Evaluate<
SwitchChainReturnType<
config,
chainId extends config['chains'][number]['id']
? number extends config['chains'][number]['id']
? config['chains'][number]['id']
: chainId
: config['chains'][number]['id']
number extends config['chains'][number]['id']
? config['chains'][number]['id']
: chainId
>
>

export type SwitchChainVariables<
config extends Config,
chainId extends config['chains'][number]['id'] | undefined,
chainId extends config['chains'][number]['id'],
> = Evaluate<
SwitchChainParameters<
config,
Expand All @@ -51,7 +49,7 @@ export type SwitchChainVariables<
>

export type SwitchChainMutate<config extends Config, context = unknown> = <
chainId extends config['chains'][number]['id'] | undefined,
chainId extends config['chains'][number]['id'],
>(
variables: SwitchChainVariables<config, chainId>,
options?:
Expand All @@ -67,7 +65,7 @@ export type SwitchChainMutate<config extends Config, context = unknown> = <
) => void

export type SwitchChainMutateAsync<config extends Config, context = unknown> = <
chainId extends config['chains'][number]['id'] | undefined,
chainId extends config['chains'][number]['id'],
>(
variables: SwitchChainVariables<config, chainId>,
options?:
Expand Down
2 changes: 1 addition & 1 deletion packages/react/src/hooks/useAccountEffect.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ test('parameters: config', () => {
const { result } = renderHook(() => useAccountEffect({ config }), {
wrapper: ({ children }) => children,
})
expect(result.current).toBeDefined()
expect(result.current).toBeUndefined()
})

test('behavior: connect and disconnect called once', async () => {
Expand Down
42 changes: 27 additions & 15 deletions packages/react/src/hooks/useConnect.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import { useMutation } from '@tanstack/react-query'
import { type ConnectError, type ResolvedRegister } from '@wagmi/core'
import {
type Config,
type ConnectError,
type ResolvedRegister,
} from '@wagmi/core'
import type { Evaluate } from '@wagmi/core/internal'
import {
type ConnectData,
Expand All @@ -9,36 +13,44 @@ import {
connectMutationOptions,
} from '@wagmi/core/query'

import type { ConfigParameter } from '../types/properties.js'
import type { UseMutationOptions, UseMutationResult } from '../utils/query.js'
import { useConfig } from './useConfig.js'

export type UseConnectParameters<context = unknown> = Evaluate<
export type UseConnectParameters<
config extends Config = ResolvedRegister['config'],
context = unknown,
> = Evaluate<
UseMutationOptions<
ConnectData<ResolvedRegister['config']>,
ConnectData<config>,
ConnectError,
ConnectVariables<ResolvedRegister['config']>,
ConnectVariables<config>,
context
>
> &
ConfigParameter<config>
>

export type UseConnectReturnType<context = unknown> = Evaluate<
export type UseConnectReturnType<
config extends Config = ResolvedRegister['config'],
context = unknown,
> = Evaluate<
UseMutationResult<
ConnectData<ResolvedRegister['config']>,
ConnectData<config>,
ConnectError,
ConnectVariables<ResolvedRegister['config']>,
ConnectVariables<config>,
context
> & {
connect: ConnectMutate<ResolvedRegister['config'], context>
connectAsync: ConnectMutateAsync<ResolvedRegister['config'], context>
connectors: ResolvedRegister['config']['connectors']
connect: ConnectMutate<config, context>
connectAsync: ConnectMutateAsync<config, context>
connectors: config['connectors']
}
>

/** https://wagmi.sh/react/hooks/useConnect */
export function useConnect<context = unknown>(
parameters: UseConnectParameters<context> = {},
): UseConnectReturnType<context> {
const config = useConfig()
export function useConnect<config extends Config, context = unknown>(
parameters: UseConnectParameters<config, context> = {},
): UseConnectReturnType<config, context> {
const config = useConfig(parameters)
const mutationOptions = connectMutationOptions(config)
const { mutate, mutateAsync, ...result } = useMutation({
...parameters,
Expand Down
6 changes: 4 additions & 2 deletions packages/react/src/hooks/useDisconnect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
disconnectMutationOptions,
} from '@wagmi/core/query'

import type { ConfigParameter } from '../types/properties.js'
import type { UseMutationOptions, UseMutationResult } from '../utils/query.js'
import { useConfig } from './useConfig.js'
import { useConnections } from './useConnections.js'
Expand All @@ -19,7 +20,8 @@ export type UseDisconnectParameters<context = unknown> = Evaluate<
DisconnectError,
DisconnectVariables,
context
>
> &
ConfigParameter
>

export type UseDisconnectReturnType<context = unknown> = Evaluate<
Expand All @@ -39,7 +41,7 @@ export type UseDisconnectReturnType<context = unknown> = Evaluate<
export function useDisconnect<context = unknown>(
parameters: UseDisconnectParameters<context> = {},
): UseDisconnectReturnType<context> {
const config = useConfig()
const config = useConfig(parameters)
const mutationOptions = disconnectMutationOptions(config)
const { mutate, mutateAsync, ...result } = useMutation({
...parameters,
Expand Down
11 changes: 9 additions & 2 deletions packages/react/src/hooks/useReconnect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,18 @@ import {
reconnectMutationOptions,
} from '@wagmi/core/query'

import type { ConfigParameter } from '../types/properties.js'
import type { UseMutationOptions, UseMutationResult } from '../utils/query.js'
import { useConfig } from './useConfig.js'

export type UseReconnectParameters<context = unknown> = Evaluate<
UseMutationOptions<ReconnectData, ReconnectError, ReconnectVariables, context>
UseMutationOptions<
ReconnectData,
ReconnectError,
ReconnectVariables,
context
> &
ConfigParameter
>

export type UseReconnectReturnType<context = unknown> = Evaluate<
Expand All @@ -33,7 +40,7 @@ export type UseReconnectReturnType<context = unknown> = Evaluate<
export function useReconnect<context = unknown>(
parameters: UseReconnectParameters<context> = {},
): UseReconnectReturnType<context> {
const config = useConfig()
const config = useConfig(parameters)
const mutationOptions = reconnectMutationOptions(config)
const { mutate, mutateAsync, ...result } = useMutation({
...parameters,
Expand Down
6 changes: 4 additions & 2 deletions packages/react/src/hooks/useSignMessage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
signMessageMutationOptions,
} from '@wagmi/core/query'

import type { ConfigParameter } from '../types/properties.js'
import type { UseMutationOptions, UseMutationResult } from '../utils/query.js'
import { useConfig } from './useConfig.js'

Expand All @@ -18,7 +19,8 @@ export type UseSignMessageParameters<context = unknown> = Evaluate<
SignMessageError,
SignMessageVariables,
context
>
> &
ConfigParameter
>

export type UseSignMessageReturnType<context = unknown> = Evaluate<
Expand All @@ -37,7 +39,7 @@ export type UseSignMessageReturnType<context = unknown> = Evaluate<
export function useSignMessage<context = unknown>(
parameters: UseSignMessageParameters<context> = {},
): UseSignMessageReturnType<context> {
const config = useConfig()
const config = useConfig(parameters)
const mutationOptions = signMessageMutationOptions(config)
const { mutate, mutateAsync, ...result } = useMutation({
...parameters,
Expand Down
16 changes: 10 additions & 6 deletions packages/react/src/hooks/useSignTypedData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,18 @@ import {
signTypedDataMutationOptions,
} from '@wagmi/core/query'

import type { ConfigParameter } from '../types/properties.js'
import type { UseMutationOptions, UseMutationResult } from '../utils/query.js'
import { useConfig } from './useConfig.js'

export type UseSignTypedDataParameters<context = unknown> = UseMutationOptions<
SignTypedDataData,
SignTypedDataError,
SignTypedDataVariables,
context
export type UseSignTypedDataParameters<context = unknown> = Evaluate<
UseMutationOptions<
SignTypedDataData,
SignTypedDataError,
SignTypedDataVariables,
context
> &
ConfigParameter
>

export type UseSignTypedDataReturnType<context = unknown> = Evaluate<
Expand All @@ -35,7 +39,7 @@ export type UseSignTypedDataReturnType<context = unknown> = Evaluate<
export function useSignTypedData<context = unknown>(
parameters: UseSignTypedDataParameters<context> = {},
): UseSignTypedDataReturnType<context> {
const config = useConfig()
const config = useConfig(parameters)
const mutationOptions = signTypedDataMutationOptions(config)
const { mutate, mutateAsync, ...result } = useMutation({
...parameters,
Expand Down
34 changes: 20 additions & 14 deletions packages/react/src/hooks/useSwitchAccount.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { useMutation } from '@tanstack/react-query'
import type {
Config,
Connector,
ResolvedRegister,
SwitchAccountError,
Expand All @@ -13,40 +14,45 @@ import {
switchAccountMutationOptions,
} from '@wagmi/core/query'

import type { ConfigParameter } from '../types/properties.js'
import type { UseMutationOptions, UseMutationResult } from '../utils/query.js'
import { useConfig } from './useConfig.js'
import { useConnections } from './useConnections.js'

export type UseSwitchAccountParameters<context = unknown> = Evaluate<
export type UseSwitchAccountParameters<
config extends Config = ResolvedRegister['config'],
context = unknown,
> = Evaluate<
UseMutationOptions<
SwitchAccountData<ResolvedRegister['config']>,
SwitchAccountData<config>,
SwitchAccountError,
SwitchAccountVariables,
context
>
> &
ConfigParameter<config>
>

export type UseSwitchAccountReturnType<context = unknown> = Evaluate<
export type UseSwitchAccountReturnType<
config extends Config = ResolvedRegister['config'],
context = unknown,
> = Evaluate<
UseMutationResult<
SwitchAccountData<ResolvedRegister['config']>,
SwitchAccountData<config>,
SwitchAccountError,
SwitchAccountVariables,
context
> & {
connectors: readonly Connector[]
switchAccount: SwitchAccountMutate<ResolvedRegister['config'], context>
switchAccountAsync: SwitchAccountMutateAsync<
ResolvedRegister['config'],
context
>
switchAccount: SwitchAccountMutate<config, context>
switchAccountAsync: SwitchAccountMutateAsync<config, context>
}
>

/** https://wagmi.sh/react/hooks/useSwitchAccount */
export function useSwitchAccount<context = unknown>(
parameters: UseSwitchAccountParameters<context> = {},
): UseSwitchAccountReturnType<context> {
const config = useConfig()
export function useSwitchAccount<config extends Config, context = unknown>(
parameters: UseSwitchAccountParameters<config, context> = {},
): UseSwitchAccountReturnType<config, context> {
const config = useConfig(parameters)
const mutationOptions = switchAccountMutationOptions(config)
const { mutate, mutateAsync, ...result } = useMutation({
...parameters,
Expand Down
45 changes: 24 additions & 21 deletions packages/react/src/hooks/useSwitchChain.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { useMutation } from '@tanstack/react-query'
import type { ResolvedRegister, SwitchChainError } from '@wagmi/core'
import type { Config, ResolvedRegister, SwitchChainError } from '@wagmi/core'
import type { Evaluate } from '@wagmi/core/internal'
import {
type SwitchChainData,
Expand All @@ -9,47 +9,50 @@ import {
switchChainMutationOptions,
} from '@wagmi/core/query'

import type { ConfigParameter } from '../types/properties.js'
import type { UseMutationOptions, UseMutationResult } from '../utils/query.js'
import { useConfig } from './useConfig.js'

type ChainId = ResolvedRegister['config']['chains'][number]['id']

export type UseSwitchChainParameters<context = unknown> = Evaluate<
export type UseSwitchChainParameters<
config extends Config = ResolvedRegister['config'],
context = unknown,
> = Evaluate<
UseMutationOptions<
SwitchChainData<ResolvedRegister['config'], ChainId>,
SwitchChainData<config, config['chains'][number]['id']>,
SwitchChainError,
SwitchChainVariables<ResolvedRegister['config'], ChainId>,
SwitchChainVariables<config, config['chains'][number]['id']>,
context
>
> &
ConfigParameter<config>
>

export type UseSwitchChainReturnType<context = unknown> = Evaluate<
export type UseSwitchChainReturnType<
config extends Config = ResolvedRegister['config'],
context = unknown,
> = Evaluate<
UseMutationResult<
SwitchChainData<ResolvedRegister['config'], ChainId>,
SwitchChainData<config, config['chains'][number]['id']>,
SwitchChainError,
SwitchChainVariables<ResolvedRegister['config'], ChainId>,
SwitchChainVariables<config, config['chains'][number]['id']>,
context
> & {
chains: ResolvedRegister['config']['chains']
switchChain: SwitchChainMutate<ResolvedRegister['config'], context>
switchChainAsync: SwitchChainMutateAsync<
ResolvedRegister['config'],
context
>
chains: config['chains']
switchChain: SwitchChainMutate<config, context>
switchChainAsync: SwitchChainMutateAsync<config, context>
}
>

/** https://wagmi.sh/react/hooks/useSwitchChain */
export function useSwitchChain<context = unknown>(
parameters: UseSwitchChainParameters<context> = {},
): UseSwitchChainReturnType<context> {
const config = useConfig()
export function useSwitchChain<config extends Config, context = unknown>(
parameters: UseSwitchChainParameters<config, context> = {},
): UseSwitchChainReturnType<config, context> {
const config = useConfig(parameters)
const mutationOptions = switchChainMutationOptions(config)
const { mutate, mutateAsync, ...result } = useMutation({
...parameters,
...mutationOptions,
})
type Return = UseSwitchChainReturnType<context>
type Return = UseSwitchChainReturnType<config, context>
return {
...result,
chains: config.chains,
Expand Down

1 comment on commit b615acf

@vercel
Copy link

@vercel vercel bot commented on b615acf Aug 21, 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-wagmi-dev.vercel.app
alpha.wagmi.sh
wagmi-v2.vercel.app

Please sign in to comment.