ghost-lite/src/hooks/useBlocks.tsx
Uncle Fatso a7833d9a5b
initial version
Signed-off-by: Uncle Fatso <uncle.fatso@ghostchain.io>
2025-07-22 12:55:56 +03:00

24 lines
906 B
TypeScript

import useSWRSubscription from "swr/subscription"
import { filter } from "rxjs"
import type { BlockInfo } from "@polkadot-api/observable-client"
import { useUnstableProvider } from "./useUnstableProvider"
export const useBlocks = () => {
const { chainHead$, chainId } = useUnstableProvider()
const { data: blocks } = useSWRSubscription(
chainHead$ && chainId && chainId ? ["blocks", chainHead$, chainId] : null,
([_, chainHead$, chainId], { next }) => {
const subscription = chainHead$?.bestBlocks$
.pipe(filter(Boolean))
.subscribe({
next(blocks: BlockInfo[]) {
next(null, blocks)
},
error: next,
})
return () => subscription?.unsubscribe()
},
)
return { latest: blocks?.at(0), finalized: blocks?.at(-1) }
}