@wagmi/core
Version:
VanillaJS library for Ethereum
51 lines (43 loc) • 1.61 kB
text/typescript
import type { QueryOptions } from '@tanstack/query-core'
import type { Config } from '../../createConfig.js'
import { ConnectorNotConnectedError } from '../../errors/config.js'
import { filterQueryOptions } from '../../query/utils.js'
import type { ScopeKeyParameter } from '../../types/properties.js'
import type { Compute } from '../../types/utils.js'
import {
type GetCallsStatusErrorType,
type GetCallsStatusParameters,
type GetCallsStatusReturnType,
getCallsStatus,
} from '../actions/getCallsStatus.js'
export type GetCallsStatusOptions = Compute<
GetCallsStatusParameters & ScopeKeyParameter
>
export function getCallsStatusQueryOptions<config extends Config>(
config: config,
options: GetCallsStatusOptions,
) {
return {
async queryFn({ queryKey }) {
const { scopeKey: _, ...parameters } = queryKey[1]
const status = await getCallsStatus(config, parameters)
return status
},
queryKey: getCallsStatusQueryKey(options),
retry(failureCount, error) {
if (error instanceof ConnectorNotConnectedError) return false
return failureCount < 3
},
} as const satisfies QueryOptions<
GetCallsStatusQueryFnData,
GetCallsStatusErrorType,
GetCallsStatusData,
GetCallsStatusQueryKey
>
}
export type GetCallsStatusQueryFnData = GetCallsStatusReturnType
export type GetCallsStatusData = GetCallsStatusQueryFnData
export function getCallsStatusQueryKey(options: GetCallsStatusOptions) {
return ['callsStatus', filterQueryOptions(options)] as const
}
export type GetCallsStatusQueryKey = ReturnType<typeof getCallsStatusQueryKey>