UNPKG

@starknet-react/core

Version:

Starknet React is a collection of React hooks for Starknet.

35 lines (28 loc) 878 B
import { type QueryKey, useQueryClient } from "@tanstack/react-query"; import { useEffect, useState } from "react"; import { useBlockNumber } from "./use-block-number"; /** * Invalidate the given query on every new block. */ export function useInvalidateOnBlock({ enabled = true, queryKey, }: { enabled?: boolean; queryKey: QueryKey; }) { const queryClient = useQueryClient(); const [prevBlockNumber, setPrevBlockNumber] = useState<number | undefined>(); const { data: blockNumber } = useBlockNumber({ enabled, }); useEffect(() => { if (!prevBlockNumber) { return setPrevBlockNumber(blockNumber); } if (blockNumber !== prevBlockNumber) { queryClient.invalidateQueries({ queryKey }, { cancelRefetch: false }); return setPrevBlockNumber(blockNumber); } }, [blockNumber, prevBlockNumber, queryKey, queryClient]); }