UNPKG

@renegade-fi/react

Version:
60 lines (51 loc) 2.09 kB
"use client"; import type { Evaluate, GetBackOfQueueWalletErrorType } from "@renegade-fi/core"; import { type GetBackOfQueueWalletData, type GetBackOfQueueWalletOptions, type GetBackOfQueueWalletQueryFnData, type GetBackOfQueueWalletQueryKey, getBackOfQueueWalletQueryOptions, } from "@renegade-fi/core/query"; import { useQueryClient } from "@tanstack/react-query"; import type { ConfigParameter, QueryParameter } from "../types/properties.js"; import { type UseQueryReturnType, useQuery } from "../utils/query.js"; import { useConfig } from "./useConfig.js"; import { useStatus } from "./useStatus.js"; import { useWalletWebsocket } from "./useWalletWebSocket.js"; export type UseBackOfQueueWalletParameters<selectData = GetBackOfQueueWalletData> = Evaluate< GetBackOfQueueWalletOptions & ConfigParameter & QueryParameter< GetBackOfQueueWalletQueryFnData, GetBackOfQueueWalletErrorType, selectData, GetBackOfQueueWalletQueryKey > >; export type UseBackOfQueueWalletReturnType<selectData = GetBackOfQueueWalletData> = UseQueryReturnType<selectData, GetBackOfQueueWalletErrorType>; export function useBackOfQueueWallet<selectData = GetBackOfQueueWalletData>( parameters: UseBackOfQueueWalletParameters<selectData> = {}, ): UseBackOfQueueWalletReturnType<selectData> { const { filterDefaults, query = {} } = parameters; const config = useConfig(parameters); const status = useStatus(parameters); const queryClient = useQueryClient(); const options = getBackOfQueueWalletQueryOptions(config, { ...parameters, filterDefaults, }); const enabled = Boolean( status === "in relayer" && config?.state.seed && (query.enabled ?? true), ); useWalletWebsocket({ enabled, onUpdate: (wallet) => { if (wallet && queryClient && options.queryKey) { queryClient.setQueryData(options.queryKey, wallet); } }, }); return useQuery({ ...query, ...options, enabled }); }