wagmi
Version:
React Hooks for Ethereum
56 lines (52 loc) • 1.86 kB
text/typescript
'use client'
import { useMutation } from '@tanstack/react-query'
import type { Connector, DisconnectErrorType } from '@wagmi/core'
import type { Compute, ConfigParameter } from '@wagmi/core/internal'
import {
type DisconnectData,
type DisconnectMutate,
type DisconnectMutateAsync,
type DisconnectOptions,
type DisconnectVariables,
disconnectMutationOptions,
} from '@wagmi/core/query'
import type { UseMutationReturnType } from '../utils/query.js'
import { useConfig } from './useConfig.js'
import { useConnections } from './useConnections.js'
export type UseDisconnectParameters<context = unknown> = Compute<
ConfigParameter & DisconnectOptions<context>
>
export type UseDisconnectReturnType<context = unknown> = Compute<
UseMutationReturnType<
DisconnectData,
DisconnectErrorType,
DisconnectVariables,
context,
DisconnectMutate<context>,
DisconnectMutateAsync<context>
> & {
/** @deprecated use `useConnections` instead */
connectors: readonly Connector[]
/** @deprecated use `mutate` instead */
disconnect: DisconnectMutate<context>
/** @deprecated use `mutateAsync` instead */
disconnectAsync: DisconnectMutateAsync<context>
}
>
/** https://wagmi.sh/react/api/hooks/useDisconnect */
export function useDisconnect<context = unknown>(
parameters: UseDisconnectParameters<context> = {},
): UseDisconnectReturnType<context> {
const config = useConfig(parameters)
const options = disconnectMutationOptions(config, parameters)
const mutation = useMutation(options)
type Return = UseDisconnectReturnType<context>
return {
...(mutation as Return),
connectors: useConnections({ config }).map(
(connection) => connection.connector,
),
disconnect: mutation.mutate as Return['mutate'],
disconnectAsync: mutation.mutateAsync as Return['mutateAsync'],
}
}