@renegade-fi/core
Version:
VanillaJS library for Renegade
49 lines (42 loc) • 1.46 kB
text/typescript
import type { QueryOptions } from '@tanstack/query-core'
import {
type GetOrderMetadataErrorType,
type GetOrderMetadataParameters,
type GetOrderMetadataReturnType,
getOrderMetadata,
} from '../actions/getOrderMetadata.js'
import type { Config } from '../createConfig.js'
import type { Evaluate } from '../types/utils.js'
import { type ScopeKeyParameter, filterQueryOptions } from './utils.js'
export type GetOrderMetadataOptions = Evaluate<
GetOrderMetadataParameters & ScopeKeyParameter
>
export function getOrderMetadataQueryOptions(
config: Config,
options: GetOrderMetadataOptions,
) {
return {
async queryFn({ queryKey }) {
const { scopeKey: _, ...parameters } = queryKey[1]
const orderMetadata = await getOrderMetadata(config, parameters)
return orderMetadata ?? null
},
queryKey: getOrderMetadataQueryKey({
scopeKey: config.state.id,
...options,
}),
} as const satisfies QueryOptions<
GetOrderMetadataQueryFnData,
GetOrderMetadataErrorType,
GetOrderMetadataData,
GetOrderMetadataQueryKey
>
}
export type GetOrderMetadataQueryFnData = Evaluate<GetOrderMetadataReturnType>
export type GetOrderMetadataData = GetOrderMetadataQueryFnData
export function getOrderMetadataQueryKey(options: GetOrderMetadataOptions) {
return ['order-metadata', filterQueryOptions(options)] as const
}
export type GetOrderMetadataQueryKey = ReturnType<
typeof getOrderMetadataQueryKey
>