diff --git a/packages/checkout/src/hooks/useCheckoutUI/index.tsx b/packages/checkout/src/hooks/useCheckoutUI/index.tsx
index 464b4f806..1108b6b75 100644
--- a/packages/checkout/src/hooks/useCheckoutUI/index.tsx
+++ b/packages/checkout/src/hooks/useCheckoutUI/index.tsx
@@ -62,7 +62,7 @@ export const useCheckoutUI = ({
tokenIDs: [collectible.tokenId ?? '']
},
{
- disabled: !collectible.tokenId
+ enabled: !!collectible.tokenId
}
)
diff --git a/packages/checkout/src/hooks/useCheckoutUI/useCryptoPayment.tsx b/packages/checkout/src/hooks/useCheckoutUI/useCryptoPayment.tsx
index 36f222687..e67ac5160 100644
--- a/packages/checkout/src/hooks/useCheckoutUI/useCryptoPayment.tsx
+++ b/packages/checkout/src/hooks/useCheckoutUI/useCryptoPayment.tsx
@@ -152,7 +152,7 @@ export const useCryptoPayment = ({
}
},
{
- disabled: disableSwapQuote
+ enabled: !disableSwapQuote
}
)
diff --git a/packages/checkout/src/views/Checkout/PaymentMethodSelect/OrderSummary/index.tsx b/packages/checkout/src/views/Checkout/PaymentMethodSelect/OrderSummary/index.tsx
index 1b9e06850..46819dbe8 100644
--- a/packages/checkout/src/views/Checkout/PaymentMethodSelect/OrderSummary/index.tsx
+++ b/packages/checkout/src/views/Checkout/PaymentMethodSelect/OrderSummary/index.tsx
@@ -21,7 +21,7 @@ export const OrderSummary = () => {
tokenIDs: tokenIds.some(id => id === '') ? [] : tokenIds
},
{
- disabled: tokenIds.some(id => id === '')
+ enabled: tokenIds.every(id => id !== '')
}
)
const { data: dataCollectionInfo, isLoading: isLoadingCollectionInfo } = useGetContractInfo({
diff --git a/packages/checkout/src/views/Checkout/PaymentMethodSelect/PayWithCrypto/index.tsx b/packages/checkout/src/views/Checkout/PaymentMethodSelect/PayWithCrypto/index.tsx
index 30860eebb..5b4b2705c 100644
--- a/packages/checkout/src/views/Checkout/PaymentMethodSelect/PayWithCrypto/index.tsx
+++ b/packages/checkout/src/views/Checkout/PaymentMethodSelect/PayWithCrypto/index.tsx
@@ -135,7 +135,7 @@ export const PayWithCryptoTab = ({ skipOnCloseCallback, isSwitchingChainRef }: P
contractAddress: selectedCurrency.address
},
{
- disabled: !isSwapTransaction
+ enabled: isSwapTransaction
}
)
@@ -161,7 +161,7 @@ export const PayWithCryptoTab = ({ skipOnCloseCallback, isSwitchingChainRef }: P
}
},
{
- disabled: !isSwapTransaction
+ enabled: isSwapTransaction
}
)
diff --git a/packages/checkout/src/views/Checkout/PaymentMethodSelect/PayWithCrypto/useInitialBalanceCheck.tsx b/packages/checkout/src/views/Checkout/PaymentMethodSelect/PayWithCrypto/useInitialBalanceCheck.tsx
index 321635db2..0c3d67877 100644
--- a/packages/checkout/src/views/Checkout/PaymentMethodSelect/PayWithCrypto/useInitialBalanceCheck.tsx
+++ b/packages/checkout/src/views/Checkout/PaymentMethodSelect/PayWithCrypto/useInitialBalanceCheck.tsx
@@ -43,7 +43,7 @@ export const useInitialBalanceCheck = ({
chainId: chainId
},
{
- disabled: isInitialBalanceChecked || !isInsufficientBalance || isFree
+ enabled: !isInitialBalanceChecked && isInsufficientBalance && !isFree
}
)
@@ -66,7 +66,7 @@ export const useInitialBalanceCheck = ({
omitMetadata: true
},
{
- disabled: isInitialBalanceChecked || !isInsufficientBalance || swapRoutesIsLoading || isFree
+ enabled: !isInitialBalanceChecked && isInsufficientBalance && !swapRoutesIsLoading && !isFree
}
)
diff --git a/packages/checkout/src/views/Swap/index.tsx b/packages/checkout/src/views/Swap/index.tsx
index 40c0cfd07..d9b4e6ff0 100644
--- a/packages/checkout/src/views/Swap/index.tsx
+++ b/packages/checkout/src/views/Swap/index.tsx
@@ -172,7 +172,7 @@ export const Swap = () => {
}
},
{
- disabled: disableSwapQuote
+ enabled: !disableSwapQuote
}
)
diff --git a/packages/checkout/src/views/TransactionStatus/index.tsx b/packages/checkout/src/views/TransactionStatus/index.tsx
index f01f26d5a..99c44e552 100644
--- a/packages/checkout/src/views/TransactionStatus/index.tsx
+++ b/packages/checkout/src/views/TransactionStatus/index.tsx
@@ -125,7 +125,7 @@ export const TransactionStatus = () => {
tokenIDs: noItemsToDisplay ? [] : items?.map(i => i.tokenId || '')
},
{
- disabled: noItemsToDisplay
+ enabled: !noItemsToDisplay
}
)
@@ -172,7 +172,7 @@ export const TransactionStatus = () => {
contractAddress: collectionAddress || ''
},
{
- disabled: noItemsToDisplay
+ enabled: !noItemsToDisplay
}
)
const { data: dataCurrencyInfo, isLoading: isLoadingCurrencyInfo } = useGetContractInfo(
@@ -181,7 +181,7 @@ export const TransactionStatus = () => {
contractAddress: currencyAddress || ''
},
{
- disabled: noItemsToDisplay
+ enabled: !noItemsToDisplay
}
)
diff --git a/packages/hooks/CHANGELOG.md b/packages/hooks/CHANGELOG.md
index 2ddf4cba5..d45499bb1 100644
--- a/packages/hooks/CHANGELOG.md
+++ b/packages/hooks/CHANGELOG.md
@@ -1,11 +1,5 @@
# @0xsequence/hooks
-## 6.0.2
-
-### Patch Changes
-
-- Fix for chain switch
-
## 6.0.1
### Patch Changes
diff --git a/packages/hooks/package.json b/packages/hooks/package.json
index 0a63dec45..a6bd1f735 100644
--- a/packages/hooks/package.json
+++ b/packages/hooks/package.json
@@ -1,6 +1,6 @@
{
"name": "@0xsequence/hooks",
- "version": "6.0.2",
+ "version": "6.0.1",
"description": "React hooks for Sequence Web SDK",
"repository": "https://github.com/0xsequence/web-sdk/tree/master/packages/hooks",
"author": "Sequence Platforms ULC",
diff --git a/packages/hooks/src/hooks/API/useGetCoinPrices.ts b/packages/hooks/src/hooks/API/useGetCoinPrices.ts
index 4d6bd2567..60ba65d26 100644
--- a/packages/hooks/src/hooks/API/useGetCoinPrices.ts
+++ b/packages/hooks/src/hooks/API/useGetCoinPrices.ts
@@ -1,8 +1,8 @@
-import { SequenceAPIClient, type Token } from '@0xsequence/api'
+import { SequenceAPIClient, type Token, type TokenPrice } from '@0xsequence/api'
import { useQuery } from '@tanstack/react-query'
import { QUERY_KEYS, time } from '../../constants.js'
-import type { HooksOptions } from '../../types/hooks.js'
+import type { QueryHookOptions } from '../../types/hooks.js'
import { useAPIClient } from './useAPIClient.js'
@@ -36,16 +36,8 @@ const getCoinPrices = async (apiClient: SequenceAPIClient, tokens: Token[]) => {
* - chainId: The chain ID where the token exists
* - contractAddress: The token's contract address (use ZERO_ADDRESS for native tokens)
*
- * @param options - Optional configuration options:
- * - retry: Whether to retry failed requests (defaults to false)
- * - disabled: Whether to disable the query
- *
- * @returns React Query result object containing:
- * - data: Array of token prices when available
- * - isLoading: Whether the initial request is in progress
- * - error: Any error that occurred
- * - isError: Whether an error occurred
- * - isSuccess: Whether the request was successful
+ * @param options - React Query options (except queryKey and queryFn which are managed by the hook).
+ * Defaults: retry: false, staleTime: 1 minute.
*
* @example
* ```tsx
@@ -59,24 +51,17 @@ const getCoinPrices = async (apiClient: SequenceAPIClient, tokens: Token[]) => {
* contractAddress: '0x...' // USDC on Polygon
* }
* ])
- *
- * if (isLoading) {
- * return
Loading prices...
- * }
- *
- * if (prices) {
- * console.log('ETH price:', prices[0].price.value)
- * }
* ```
*/
-export const useGetCoinPrices = (tokens: Token[], options?: HooksOptions) => {
+export const useGetCoinPrices = (tokens: Token[], options?: QueryHookOptions) => {
const apiClient = useAPIClient()
return useQuery({
- queryKey: [QUERY_KEYS.useGetCoinPrices, tokens, options],
+ queryKey: [QUERY_KEYS.useGetCoinPrices, tokens],
queryFn: () => getCoinPrices(apiClient, tokens),
- retry: options?.retry ?? false,
+ retry: false,
staleTime: time.oneMinute,
- enabled: tokens.length > 0 && !options?.disabled
+ enabled: tokens.length > 0,
+ ...options
})
}
diff --git a/packages/hooks/src/hooks/API/useGetCollectiblePrices.ts b/packages/hooks/src/hooks/API/useGetCollectiblePrices.ts
index abf3f2f82..b6b2e4ce2 100644
--- a/packages/hooks/src/hooks/API/useGetCollectiblePrices.ts
+++ b/packages/hooks/src/hooks/API/useGetCollectiblePrices.ts
@@ -1,8 +1,8 @@
-import { SequenceAPIClient, type Token } from '@0xsequence/api'
+import { SequenceAPIClient, type Token, type TokenPrice } from '@0xsequence/api'
import { useQuery } from '@tanstack/react-query'
import { QUERY_KEYS, time } from '../../constants.js'
-import type { HooksOptions } from '../../types/hooks.js'
+import type { QueryHookOptions } from '../../types/hooks.js'
import { useAPIClient } from './useAPIClient.js'
@@ -29,8 +29,6 @@ const getCollectiblePrices = async (apiClient: SequenceAPIClient, tokens: Token[
*
* This hook uses React Query to fetch and cache collectible prices from the Sequence API.
* Prices are automatically refreshed every minute to ensure they stay current.
- * Used in various UI components to display NFT valuations, particularly in collection views
- * and transaction details.
*
* @see {@link https://docs.sequence.xyz/sdk/web/hooks-sdk/hooks/useGetCollectiblePrices} for more detailed documentation.
*
@@ -39,49 +37,29 @@ const getCollectiblePrices = async (apiClient: SequenceAPIClient, tokens: Token[
* - contractAddress: The NFT collection's contract address
* - tokenId: The specific token ID within the collection
*
- * @param options - Optional configuration options:
- * - retry: Whether to retry failed requests (defaults to false)
- * - disabled: Whether to disable the query
- *
- * @returns React Query result object containing:
- * - data: Array of token prices when available, each containing:
- * - price: The price for the collection
- * - price24hChange: The price change for the collection in the last 24 hours (if available)
- * - floorPrice: The floor price for the collection (if available)
- * - buyPrice: Current market buy price (if available)
- * - sellPrice: Current market sell price (if available)
- * - isLoading: Whether the initial request is in progress
- * - error: Any error that occurred
- * - isError: Whether an error occurred
- * - isSuccess: Whether the request was successful
+ * @param options - React Query options (except queryKey and queryFn which are managed by the hook).
+ * Defaults: retry: false, staleTime: 1 minute.
*
* @example
* ```tsx
* const { data: prices, isLoading } = useGetCollectiblePrices([
* {
* chainId: 1,
- * contractAddress: '0x...', // NFT collection address
- * tokenId: '123' // Specific NFT ID
+ * contractAddress: '0x...',
+ * tokenId: '123'
* }
* ])
- *
- * if (isLoading) {
- * return Loading prices...
- * }
- *
- * if (prices?.[0]) {
- * console.log('Price:', prices[0].price.value)
- * }
* ```
*/
-export const useGetCollectiblePrices = (tokens: Token[], options?: HooksOptions) => {
+export const useGetCollectiblePrices = (tokens: Token[], options?: QueryHookOptions) => {
const apiClient = useAPIClient()
return useQuery({
- queryKey: [QUERY_KEYS.useGetCollectiblePrices, tokens, options],
+ queryKey: [QUERY_KEYS.useGetCollectiblePrices, tokens],
queryFn: () => getCollectiblePrices(apiClient, tokens),
- retry: options?.retry ?? false,
+ retry: false,
staleTime: time.oneMinute,
- enabled: tokens.length > 0 && !options?.disabled
+ enabled: tokens.length > 0,
+ ...options
})
}
diff --git a/packages/hooks/src/hooks/API/useGetExchangeRate.ts b/packages/hooks/src/hooks/API/useGetExchangeRate.ts
index 0fc42ea72..9953560cc 100644
--- a/packages/hooks/src/hooks/API/useGetExchangeRate.ts
+++ b/packages/hooks/src/hooks/API/useGetExchangeRate.ts
@@ -1,7 +1,7 @@
import { useQuery } from '@tanstack/react-query'
import { QUERY_KEYS, time } from '../../constants.js'
-import type { HooksOptions } from '../../types/hooks.js'
+import type { QueryHookOptions } from '../../types/hooks.js'
import { useAPIClient } from './useAPIClient.js'
@@ -10,45 +10,25 @@ import { useAPIClient } from './useAPIClient.js'
*
* This hook uses React Query to fetch and cache exchange rates from the Sequence API.
* Rates are automatically refreshed every 10 minutes to ensure they stay current.
- * Used throughout the wallet widget and checkout components to display fiat values
- * for tokens and NFTs.
*
* @see {@link https://docs.sequence.xyz/sdk/web/hooks-sdk/hooks/useGetExchangeRate} for more detailed documentation.
*
* @param toCurrency - The target currency code (e.g., 'EUR', 'GBP', 'JPY').
* If 'USD' is provided, returns 1 as the conversion rate.
*
- * @param options - Optional configuration options:
- * - retry: Whether to retry failed requests (defaults to false)
- * - disabled: Whether to disable the query
- *
- * @returns React Query result object containing:
- * - data: The exchange rate value from USD to the target currency
- * - isLoading: Whether the initial request is in progress
- * - error: Any error that occurred
- * - isError: Whether an error occurred
- * - isSuccess: Whether the request was successful
+ * @param options - React Query options (except queryKey and queryFn which are managed by the hook).
+ * Defaults: retry: false, staleTime: 10 minutes.
*
* @example
* ```tsx
* const { data: rate = 1, isLoading } = useGetExchangeRate('EUR')
- *
- * // Convert USD amount to EUR
- * const usdAmount = 100
- * const eurAmount = usdAmount * rate
- *
- * if (isLoading) {
- * return Loading rates...
- * }
- *
- * console.log(`${usdAmount} USD = ${eurAmount} EUR`)
* ```
*/
-export const useGetExchangeRate = (toCurrency: string, options?: HooksOptions) => {
+export const useGetExchangeRate = (toCurrency: string, options?: QueryHookOptions) => {
const apiClient = useAPIClient()
return useQuery({
- queryKey: [QUERY_KEYS.useGetExchangeRate, toCurrency, options],
+ queryKey: [QUERY_KEYS.useGetExchangeRate, toCurrency],
queryFn: async () => {
if (toCurrency === 'USD') {
return 1
@@ -58,8 +38,9 @@ export const useGetExchangeRate = (toCurrency: string, options?: HooksOptions) =
return res.exchangeRate.value
},
- retry: options?.retry ?? false,
+ retry: false,
staleTime: time.oneMinute * 10,
- enabled: !!toCurrency && !options?.disabled
+ enabled: !!toCurrency,
+ ...options
})
}
diff --git a/packages/hooks/src/hooks/Builder/useDetectContractVersion.ts b/packages/hooks/src/hooks/Builder/useDetectContractVersion.ts
index 1fa4fcf9a..2ad011de0 100644
--- a/packages/hooks/src/hooks/Builder/useDetectContractVersion.ts
+++ b/packages/hooks/src/hooks/Builder/useDetectContractVersion.ts
@@ -1,7 +1,7 @@
import { useQuery } from '@tanstack/react-query'
import { QUERY_KEYS, time } from '../../constants.js'
-import type { HooksOptions } from '../../types/hooks.js'
+import type { QueryHookOptions } from '../../types/hooks.js'
import { useConfig } from '../useConfig.js'
/**
@@ -9,22 +9,12 @@ import { useConfig } from '../useConfig.js'
*
* This hook uses React Query to fetch and cache the version of a contract.
*
- *
* @param args - The arguments for the hook:
- * - address: The address of the contract
+ * - contractAddress: The address of the contract
* - chainId: The chain id of the contract
*
- * @param options - Optional configuration options:
- * - retry: Whether to retry failed requests (defaults to false)
- * - disabled: Whether to disable the query
- *
- * @returns React Query result object containing:
- * - data: The version of the contract
- * - isLoading: Whether the initial request is in progress
- * - error: Any error that occurred
- * - isError: Whether an error occurred
- * - isSuccess: Whether the request was successful
- *
+ * @param options - React Query options (except queryKey and queryFn which are managed by the hook).
+ * Defaults: retry: false, staleTime: 60 minutes.
*/
interface DetectContractVersionArgs {
@@ -32,11 +22,11 @@ interface DetectContractVersionArgs {
chainId: number
}
-export const useDetectContractVersion = (args: DetectContractVersionArgs, options?: HooksOptions) => {
+export const useDetectContractVersion = (args: DetectContractVersionArgs, options?: QueryHookOptions) => {
const { projectAccessKey, env } = useConfig()
return useQuery({
- queryKey: [QUERY_KEYS.useDetectContractVersion, args.contractAddress, args.chainId, options],
+ queryKey: [QUERY_KEYS.useDetectContractVersion, args.contractAddress, args.chainId],
queryFn: async () => {
const res = await fetch(`${env.builderUrl}/rpc/ContractLibrary/DetectContractVersion`, {
method: 'POST',
@@ -46,8 +36,9 @@ export const useDetectContractVersion = (args: DetectContractVersionArgs, option
const data = await res.json()
return data
},
- retry: options?.retry ?? false,
+ retry: false,
staleTime: time.oneMinute * 60,
- enabled: !!args.contractAddress && !!args.chainId && !options?.disabled
+ enabled: !!args.contractAddress && !!args.chainId,
+ ...options
})
}
diff --git a/packages/hooks/src/hooks/Combination/useGetSwapQuote.ts b/packages/hooks/src/hooks/Combination/useGetSwapQuote.ts
index 1e962ffc3..dcc1a88c6 100644
--- a/packages/hooks/src/hooks/Combination/useGetSwapQuote.ts
+++ b/packages/hooks/src/hooks/Combination/useGetSwapQuote.ts
@@ -1,8 +1,8 @@
-import type { GetLifiSwapQuoteRequest } from '@0xsequence/api'
+import type { GetLifiSwapQuoteRequest, LifiSwapQuote } from '@0xsequence/api'
import { useQuery } from '@tanstack/react-query'
import { QUERY_KEYS, time, ZERO_ADDRESS } from '../../constants.js'
-import type { HooksOptions } from '../../types/hooks.js'
+import type { QueryHookOptions } from '../../types/hooks.js'
import { compareAddress } from '../../utils/helpers.js'
import { useAPIClient } from '../API/useAPIClient.js'
@@ -88,11 +88,11 @@ import { useAPIClient } from '../API/useAPIClient.js'
* }
* ```
*/
-export const useGetSwapQuote = (getSwapQuoteArgs: GetLifiSwapQuoteRequest, options?: HooksOptions) => {
+export const useGetSwapQuote = (getSwapQuoteArgs: GetLifiSwapQuoteRequest, options?: QueryHookOptions) => {
const apiClient = useAPIClient()
return useQuery({
- queryKey: [QUERY_KEYS.useGetSwapQuote, getSwapQuoteArgs, options],
+ queryKey: [QUERY_KEYS.useGetSwapQuote, getSwapQuoteArgs],
queryFn: async () => {
const res = await apiClient.getLifiSwapQuote({
params: {
@@ -111,15 +111,15 @@ export const useGetSwapQuote = (getSwapQuoteArgs: GetLifiSwapQuoteRequest, optio
currencyAddress: compareAddress(res.quote.currencyAddress, ZERO_ADDRESS) ? ZERO_ADDRESS : res.quote.currencyAddress
}
},
- retry: options?.retry ?? false,
- staleTime: time.oneMinute * 1,
+ retry: false,
+ staleTime: time.oneMinute,
enabled:
- !options?.disabled &&
!!getSwapQuoteArgs.params.walletAddress &&
!!getSwapQuoteArgs.params.fromTokenAddress &&
!!getSwapQuoteArgs.params.toTokenAddress &&
getSwapQuoteArgs.params.fromTokenAmount !== '0' &&
!!getSwapQuoteArgs.params.chainId &&
- !!getSwapQuoteArgs.params.includeApprove
+ !!getSwapQuoteArgs.params.includeApprove,
+ ...options
})
}
diff --git a/packages/hooks/src/hooks/Combination/useGetSwapRoutes.ts b/packages/hooks/src/hooks/Combination/useGetSwapRoutes.ts
index b87663eac..0f07bbe6c 100644
--- a/packages/hooks/src/hooks/Combination/useGetSwapRoutes.ts
+++ b/packages/hooks/src/hooks/Combination/useGetSwapRoutes.ts
@@ -2,7 +2,7 @@ import { GetLifiSwapRouteDirection, SequenceAPIClient, type LifiSwapRoute } from
import { useQuery } from '@tanstack/react-query'
import { QUERY_KEYS, time } from '../../constants.js'
-import type { HooksOptions } from '../../types/hooks.js'
+import type { QueryHookOptions } from '../../types/hooks.js'
import { useAPIClient } from '../API/useAPIClient.js'
/**
@@ -92,18 +92,17 @@ const getSwapRoutes = async (apiClient: SequenceAPIClient, args: GetSwapRoutesAr
* }
* ```
*/
-export const useGetSwapRoutes = (args: UseGetSwapRoutesArgs, options?: HooksOptions) => {
+export const useGetSwapRoutes = (args: UseGetSwapRoutesArgs, options?: QueryHookOptions) => {
const apiClient = useAPIClient()
- const enabled = !!args.chainId && !!args.toTokenAddress && !options?.disabled
-
return useQuery({
- queryKey: [QUERY_KEYS.useGetSwapRoutes, args, options],
+ queryKey: [QUERY_KEYS.useGetSwapRoutes, args],
queryFn: () => getSwapRoutes(apiClient, args),
- retry: options?.retry ?? false,
+ retry: false,
// We must keep a long staletime to avoid the list of quotes being refreshed while the user is doing the transactions
// Instead, we will invalidate the query manually
staleTime: time.oneHour,
- enabled
+ enabled: !!args.chainId && !!args.toTokenAddress,
+ ...options
})
}
diff --git a/packages/hooks/src/hooks/Indexer/useGetTransactionHistory.ts b/packages/hooks/src/hooks/Indexer/useGetTransactionHistory.ts
index bebf9ce7e..c91184e55 100644
--- a/packages/hooks/src/hooks/Indexer/useGetTransactionHistory.ts
+++ b/packages/hooks/src/hooks/Indexer/useGetTransactionHistory.ts
@@ -3,7 +3,7 @@ import { useInfiniteQuery } from '@tanstack/react-query'
import { getAddress } from 'viem'
import { QUERY_KEYS, time } from '../../constants.js'
-import type { HooksOptions } from '../../types/hooks.js'
+import type { InfiniteQueryHookOptions } from '../../types/hooks.js'
import { useIndexerClient } from './useIndexerClient.js'
@@ -128,11 +128,14 @@ const getTransactionHistory = async (
* }
* ```
*/
-export const useGetTransactionHistory = (args: UseGetTransactionHistoryArgs, options?: HooksOptions) => {
+export const useGetTransactionHistory = (
+ args: UseGetTransactionHistoryArgs,
+ options?: InfiniteQueryHookOptions>, Error, Page>
+) => {
const indexerClient = useIndexerClient(args.chainId)
return useInfiniteQuery({
- queryKey: [QUERY_KEYS.useGetTransactionHistory, args, options],
+ queryKey: [QUERY_KEYS.useGetTransactionHistory, args],
queryFn: ({ pageParam }) => {
return getTransactionHistory(indexerClient, {
...args,
@@ -143,8 +146,9 @@ export const useGetTransactionHistory = (args: UseGetTransactionHistoryArgs, opt
return page?.more ? page : undefined
},
initialPageParam: { ...args?.page } as Page,
- retry: options?.retry ?? false,
+ retry: false,
staleTime: time.oneSecond * 30,
- enabled: !!args.chainId && args.accountAddresses.length > 0 && !options?.disabled
+ enabled: !!args.chainId && args.accountAddresses.length > 0,
+ ...options
})
}
diff --git a/packages/hooks/src/hooks/Indexer/useGetTransactionHistorySummary.ts b/packages/hooks/src/hooks/Indexer/useGetTransactionHistorySummary.ts
index 0eedf5e55..539df0001 100644
--- a/packages/hooks/src/hooks/Indexer/useGetTransactionHistorySummary.ts
+++ b/packages/hooks/src/hooks/Indexer/useGetTransactionHistorySummary.ts
@@ -3,7 +3,7 @@ import { useQuery } from '@tanstack/react-query'
import { getAddress } from 'viem'
import { QUERY_KEYS, time } from '../../constants.js'
-import type { HooksOptions } from '../../types/hooks.js'
+import type { QueryHookOptions } from '../../types/hooks.js'
import { useIndexerClients } from './useIndexerClient.js'
@@ -116,21 +116,19 @@ const getTransactionHistorySummary = async (
*/
export const useGetTransactionHistorySummary = (
getTransactionHistorySummaryArgs: GetTransactionHistorySummaryArgs,
- options?: HooksOptions
+ options?: QueryHookOptions
) => {
const indexerClients = useIndexerClients(getTransactionHistorySummaryArgs.chainIds)
return useQuery({
- queryKey: [QUERY_KEYS.useGetTransactionHistorySummary, getTransactionHistorySummaryArgs, options],
+ queryKey: [QUERY_KEYS.useGetTransactionHistorySummary, getTransactionHistorySummaryArgs],
queryFn: async () => {
return await getTransactionHistorySummary(indexerClients, getTransactionHistorySummaryArgs)
},
- retry: options?.retry ?? false,
+ retry: false,
staleTime: time.oneSecond * 30,
refetchOnMount: true,
- enabled:
- getTransactionHistorySummaryArgs.chainIds.length > 0 &&
- getTransactionHistorySummaryArgs.accountAddresses.length > 0 &&
- !options?.disabled
+ enabled: getTransactionHistorySummaryArgs.chainIds.length > 0 && getTransactionHistorySummaryArgs.accountAddresses.length > 0,
+ ...options
})
}
diff --git a/packages/hooks/src/hooks/IndexerGateway/useGetNativeTokenBalance.ts b/packages/hooks/src/hooks/IndexerGateway/useGetNativeTokenBalance.ts
index 4b77cc3bd..2586df92c 100644
--- a/packages/hooks/src/hooks/IndexerGateway/useGetNativeTokenBalance.ts
+++ b/packages/hooks/src/hooks/IndexerGateway/useGetNativeTokenBalance.ts
@@ -2,7 +2,7 @@ import { SequenceIndexerGateway, type IndexerGateway, type TokenBalance } from '
import { useQuery } from '@tanstack/react-query'
import { QUERY_KEYS, time } from '../../constants.js'
-import type { HooksOptions } from '../../types/hooks.js'
+import type { QueryHookOptions } from '../../types/hooks.js'
import { createNativeTokenBalance } from '../../utils/helpers.js'
import { useIndexerGatewayClient } from './useIndexerGatewayClient.js'
@@ -53,14 +53,15 @@ const getNativeTokenBalance = async (
* }
* ```
*/
-export const useGetNativeTokenBalance = (args: GetNativeTokenBalanceArgs, options?: HooksOptions) => {
+export const useGetNativeTokenBalance = (args: GetNativeTokenBalanceArgs, options?: QueryHookOptions) => {
const indexerGatewayClient = useIndexerGatewayClient()
return useQuery({
- queryKey: [QUERY_KEYS.useGetNativeTokenBalance, args, options],
+ queryKey: [QUERY_KEYS.useGetNativeTokenBalance, args],
queryFn: async () => await getNativeTokenBalance(indexerGatewayClient, args),
- retry: options?.retry ?? false,
+ retry: false,
staleTime: time.oneSecond * 30,
- enabled: !!args.accountAddress && !options?.disabled
+ enabled: !!args.accountAddress,
+ ...options
})
}
diff --git a/packages/hooks/src/hooks/IndexerGateway/useGetSingleTokenBalance.ts b/packages/hooks/src/hooks/IndexerGateway/useGetSingleTokenBalance.ts
index 485931374..ed695f456 100644
--- a/packages/hooks/src/hooks/IndexerGateway/useGetSingleTokenBalance.ts
+++ b/packages/hooks/src/hooks/IndexerGateway/useGetSingleTokenBalance.ts
@@ -1,8 +1,8 @@
-import { ContractVerificationStatus, type SequenceIndexerGateway } from '@0xsequence/indexer'
+import { ContractVerificationStatus, type SequenceIndexerGateway, type TokenBalance } from '@0xsequence/indexer'
import { useQuery } from '@tanstack/react-query'
import { QUERY_KEYS, time, ZERO_ADDRESS } from '../../constants.js'
-import type { HooksOptions } from '../../types/hooks.js'
+import type { QueryHookOptions } from '../../types/hooks.js'
import { compareAddress, createNativeTokenBalance } from '../../utils/helpers.js'
import { useIndexerGatewayClient } from './useIndexerGatewayClient.js'
@@ -77,11 +77,11 @@ const getSingleTokenBalance = async (args: GetSingleTokenBalanceArgs, indexerGat
* }
* ```
*/
-export const useGetSingleTokenBalance = (args: GetSingleTokenBalanceArgs, options?: HooksOptions) => {
+export const useGetSingleTokenBalance = (args: GetSingleTokenBalanceArgs, options?: QueryHookOptions) => {
const indexerGatewayClient = useIndexerGatewayClient()
return useQuery({
- queryKey: [QUERY_KEYS.useGetSingleTokenBalance, args, options],
+ queryKey: [QUERY_KEYS.useGetSingleTokenBalance, args],
queryFn: async () => {
const tokenBalance = await getSingleTokenBalance(args, indexerGatewayClient)
@@ -93,8 +93,9 @@ export const useGetSingleTokenBalance = (args: GetSingleTokenBalanceArgs, option
return tokenBalance
},
- retry: options?.retry ?? false,
+ retry: false,
staleTime: time.oneSecond * 30,
- enabled: !!args.chainId && !!args.accountAddress && !options?.disabled
+ enabled: !!args.chainId && !!args.accountAddress,
+ ...options
})
}
diff --git a/packages/hooks/src/hooks/IndexerGateway/useGetTokenBalancesByContract.ts b/packages/hooks/src/hooks/IndexerGateway/useGetTokenBalancesByContract.ts
index dc0d90b2b..0bfe44502 100644
--- a/packages/hooks/src/hooks/IndexerGateway/useGetTokenBalancesByContract.ts
+++ b/packages/hooks/src/hooks/IndexerGateway/useGetTokenBalancesByContract.ts
@@ -2,7 +2,7 @@ import { SequenceIndexerGateway, type IndexerGateway, type Page } from '@0xseque
import { useInfiniteQuery } from '@tanstack/react-query'
import { QUERY_KEYS, time } from '../../constants.js'
-import type { HooksOptions } from '../../types/hooks.js'
+import type { InfiniteQueryHookOptions } from '../../types/hooks.js'
import { useIndexerGatewayClient } from './useIndexerGatewayClient.js'
@@ -71,11 +71,14 @@ const getTokenBalancesByContract = async (indexerGatewayClient: SequenceIndexerG
* }
* ```
*/
-export const useGetTokenBalancesByContract = (args: GetTokenBalancesByContractArgs, options?: HooksOptions) => {
+export const useGetTokenBalancesByContract = (
+ args: GetTokenBalancesByContractArgs,
+ options?: InfiniteQueryHookOptions>, Error, Page>
+) => {
const indexerGatewayClient = useIndexerGatewayClient()
return useInfiniteQuery({
- queryKey: [QUERY_KEYS.useGetTokenBalancesByContract, args, options],
+ queryKey: [QUERY_KEYS.useGetTokenBalancesByContract, args],
queryFn: ({ pageParam }) => {
return getTokenBalancesByContract(indexerGatewayClient, { ...args, page: pageParam })
},
@@ -83,8 +86,9 @@ export const useGetTokenBalancesByContract = (args: GetTokenBalancesByContractAr
return page?.more ? page : undefined
},
initialPageParam: { ...args?.page } as Page,
- retry: options?.retry ?? false,
+ retry: false,
staleTime: time.oneSecond * 30,
- enabled: args.filter.contractAddresses.length > 0 && !options?.disabled
+ enabled: args.filter.contractAddresses.length > 0,
+ ...options
})
}
diff --git a/packages/hooks/src/hooks/IndexerGateway/useGetTokenBalancesDetails.ts b/packages/hooks/src/hooks/IndexerGateway/useGetTokenBalancesDetails.ts
index 1e62dd918..8234605e3 100644
--- a/packages/hooks/src/hooks/IndexerGateway/useGetTokenBalancesDetails.ts
+++ b/packages/hooks/src/hooks/IndexerGateway/useGetTokenBalancesDetails.ts
@@ -2,7 +2,7 @@ import { SequenceIndexerGateway, type IndexerGateway, type Page, type TokenBalan
import { useInfiniteQuery } from '@tanstack/react-query'
import { QUERY_KEYS, time } from '../../constants.js'
-import type { HooksOptions } from '../../types/hooks.js'
+import type { InfiniteQueryHookOptions } from '../../types/hooks.js'
import { createNativeTokenBalance, sortBalancesByType } from '../../utils/helpers.js'
import { useIndexerGatewayClient } from './useIndexerGatewayClient.js'
@@ -128,11 +128,14 @@ const getTokenBalancesDetails = async (indexerGatewayClient: SequenceIndexerGate
* }
* ```
*/
-export const useGetTokenBalancesDetails = (args: GetTokenBalancesDetailsArgs, options?: HooksOptions) => {
+export const useGetTokenBalancesDetails = (
+ args: GetTokenBalancesDetailsArgs,
+ options?: InfiniteQueryHookOptions>, Error, Page>
+) => {
const indexerGatewayClient = useIndexerGatewayClient()
return useInfiniteQuery({
- queryKey: [QUERY_KEYS.useGetTokenBalancesDetails, args, options],
+ queryKey: [QUERY_KEYS.useGetTokenBalancesDetails, args],
queryFn: ({ pageParam }) => {
return getTokenBalancesDetails(indexerGatewayClient, { ...args, page: pageParam })
},
@@ -140,8 +143,9 @@ export const useGetTokenBalancesDetails = (args: GetTokenBalancesDetailsArgs, op
return page?.more ? page : undefined
},
initialPageParam: { ...args?.page } as Page,
- retry: options?.retry ?? true,
+ retry: true,
staleTime: time.oneSecond * 30,
- enabled: args.filter.accountAddresses.length > 0 && !options?.disabled
+ enabled: args.filter.accountAddresses.length > 0,
+ ...options
})
}
diff --git a/packages/hooks/src/hooks/IndexerGateway/useGetTokenBalancesSummary.ts b/packages/hooks/src/hooks/IndexerGateway/useGetTokenBalancesSummary.ts
index b7cbd3373..5868a7e68 100644
--- a/packages/hooks/src/hooks/IndexerGateway/useGetTokenBalancesSummary.ts
+++ b/packages/hooks/src/hooks/IndexerGateway/useGetTokenBalancesSummary.ts
@@ -2,7 +2,7 @@ import { SequenceIndexerGateway, type IndexerGateway, type Page, type TokenBalan
import { useInfiniteQuery } from '@tanstack/react-query'
import { QUERY_KEYS, time } from '../../constants.js'
-import type { HooksOptions } from '../../types/hooks.js'
+import type { InfiniteQueryHookOptions } from '../../types/hooks.js'
import { createNativeTokenBalance, sortBalancesByType } from '../../utils/helpers.js'
import { useIndexerGatewayClient } from './useIndexerGatewayClient.js'
@@ -103,11 +103,14 @@ const getTokenBalancesSummary = async (indexerGatewayClient: SequenceIndexerGate
* }
* ```
*/
-export const useGetTokenBalancesSummary = (args: GetTokenBalancesSummaryArgs, options?: HooksOptions) => {
+export const useGetTokenBalancesSummary = (
+ args: GetTokenBalancesSummaryArgs,
+ options?: InfiniteQueryHookOptions>, Error, Page>
+) => {
const indexerGatewayClient = useIndexerGatewayClient()
return useInfiniteQuery({
- queryKey: [QUERY_KEYS.useGetTokenBalancesSummary, args, options],
+ queryKey: [QUERY_KEYS.useGetTokenBalancesSummary, args],
queryFn: ({ pageParam }) => {
return getTokenBalancesSummary(indexerGatewayClient, { ...args, page: pageParam })
},
@@ -115,8 +118,9 @@ export const useGetTokenBalancesSummary = (args: GetTokenBalancesSummaryArgs, op
return page?.more ? page : undefined
},
initialPageParam: { ...args?.page } as Page,
- retry: options?.retry ?? true,
+ retry: true,
staleTime: time.oneSecond * 30,
- enabled: args.filter.accountAddresses.length > 0 && !options?.disabled
+ enabled: args.filter.accountAddresses.length > 0,
+ ...options
})
}
diff --git a/packages/hooks/src/hooks/Metadata/useGetContractInfo.ts b/packages/hooks/src/hooks/Metadata/useGetContractInfo.ts
index cb9b1cad9..a0b148a96 100644
--- a/packages/hooks/src/hooks/Metadata/useGetContractInfo.ts
+++ b/packages/hooks/src/hooks/Metadata/useGetContractInfo.ts
@@ -1,8 +1,8 @@
import type { ContractInfo, GetContractInfoArgs } from '@0xsequence/metadata'
-import { useQuery, type UseQueryResult } from '@tanstack/react-query'
+import { useQuery } from '@tanstack/react-query'
import { QUERY_KEYS, time, ZERO_ADDRESS } from '../../constants.js'
-import type { HooksOptions } from '../../types/hooks.js'
+import type { QueryHookOptions } from '../../types/hooks.js'
import { compareAddress } from '../../utils/helpers.js'
import { findSupportedNetwork } from '../../utils/networks.js'
@@ -71,11 +71,11 @@ import { useMetadataClient } from './useMetadataClient.js'
* }
* ```
*/
-export const useGetContractInfo = (args: GetContractInfoArgs, options?: HooksOptions): UseQueryResult => {
+export const useGetContractInfo = (args: GetContractInfoArgs, options?: QueryHookOptions) => {
const metadataClient = useMetadataClient()
return useQuery({
- queryKey: [QUERY_KEYS.useGetContractInfo, args, options],
+ queryKey: [QUERY_KEYS.useGetContractInfo, args],
queryFn: async () => {
const isNativeToken = compareAddress(ZERO_ADDRESS, args.contractAddress)
@@ -92,8 +92,9 @@ export const useGetContractInfo = (args: GetContractInfoArgs, options?: HooksOpt
: {})
}
},
- retry: options?.retry ?? false,
+ retry: false,
staleTime: time.oneMinute * 10,
- enabled: !!args.chainID && !!args.contractAddress && !options?.disabled
+ enabled: !!args.chainID && !!args.contractAddress,
+ ...options
})
}
diff --git a/packages/hooks/src/hooks/Metadata/useGetMultipleContractsInfo.ts b/packages/hooks/src/hooks/Metadata/useGetMultipleContractsInfo.ts
index af84c7678..bc5ccd33e 100644
--- a/packages/hooks/src/hooks/Metadata/useGetMultipleContractsInfo.ts
+++ b/packages/hooks/src/hooks/Metadata/useGetMultipleContractsInfo.ts
@@ -2,7 +2,7 @@ import { SequenceMetadata, type ContractInfo, type GetContractInfoArgs } from '@
import { useQuery } from '@tanstack/react-query'
import { QUERY_KEYS, time } from '../../constants.js'
-import type { HooksOptions } from '../../types/hooks.js'
+import type { QueryHookOptions } from '../../types/hooks.js'
import { useMetadataClient } from './useMetadataClient.js'
@@ -110,14 +110,14 @@ const getMultipleContractsInfo = async (
* }
* ```
*/
-export const useGetMultipleContractsInfo = (args: GetContractInfoArgs[], options?: HooksOptions) => {
+export const useGetMultipleContractsInfo = (args: GetContractInfoArgs[], options?: QueryHookOptions) => {
const metadataClient = useMetadataClient()
return useQuery({
- queryKey: [QUERY_KEYS.useGetMultipleContractInfo, args, options],
+ queryKey: [QUERY_KEYS.useGetMultipleContractInfo, args],
queryFn: async () => await getMultipleContractsInfo(metadataClient, args),
- retry: options?.retry ?? false,
+ retry: false,
staleTime: time.oneHour,
- enabled: !options?.disabled
+ ...options
})
}
diff --git a/packages/hooks/src/hooks/Metadata/useGetTokenMetadata.ts b/packages/hooks/src/hooks/Metadata/useGetTokenMetadata.ts
index 3309d6975..30bc398d7 100644
--- a/packages/hooks/src/hooks/Metadata/useGetTokenMetadata.ts
+++ b/packages/hooks/src/hooks/Metadata/useGetTokenMetadata.ts
@@ -1,8 +1,8 @@
-import { SequenceMetadata, type GetTokenMetadataArgs } from '@0xsequence/metadata'
+import { SequenceMetadata, type GetTokenMetadataArgs, type TokenMetadata } from '@0xsequence/metadata'
import { useQuery } from '@tanstack/react-query'
import { QUERY_KEYS, time } from '../../constants.js'
-import type { HooksOptions } from '../../types/hooks.js'
+import type { QueryHookOptions } from '../../types/hooks.js'
import { splitEvery } from '../../utils/helpers.js'
import { useConfig } from '../useConfig.js'
@@ -120,15 +120,16 @@ const getTokenMetadata = async (metadataClient: SequenceMetadata, args: GetToken
* }
* ```
*/
-export const useGetTokenMetadata = (args: GetTokenMetadataArgs, options?: HooksOptions) => {
+export const useGetTokenMetadata = (args: GetTokenMetadataArgs, options?: QueryHookOptions) => {
const { env } = useConfig()
const metadataClient = useMetadataClient()
return useQuery({
- queryKey: [QUERY_KEYS.useGetTokenMetadata, args, options],
+ queryKey: [QUERY_KEYS.useGetTokenMetadata, args],
queryFn: () => getTokenMetadata(metadataClient, args, env.imageProxyUrl),
- retry: options?.retry ?? false,
+ retry: false,
staleTime: time.oneHour,
- enabled: !!args.chainID && !!args.contractAddress && !options?.disabled
+ enabled: !!args.chainID && !!args.contractAddress,
+ ...options
})
}
diff --git a/packages/hooks/src/types/hooks.ts b/packages/hooks/src/types/hooks.ts
index cdc341bcc..63de2c2b0 100644
--- a/packages/hooks/src/types/hooks.ts
+++ b/packages/hooks/src/types/hooks.ts
@@ -1,4 +1,9 @@
-export interface HooksOptions {
- disabled?: boolean
- retry?: boolean | number
-}
+import type { InfiniteData, QueryKey, UseInfiniteQueryOptions, UseQueryOptions } from '@tanstack/react-query'
+
+export type QueryHookOptions = Partial<
+ UseQueryOptions
+>
+
+export type InfiniteQueryHookOptions = Partial<
+ UseInfiniteQueryOptions, QueryKey, TPageParam>
+>