519c411db0
* feat: sync and update with all changes from fork * refactor: extract clipboard copy logic into custom hook * fix: correct spelling of DEFAULT_REFRESH_FREQUENCY_MS in Stamps and WalletBalance providers * refactor(ui-tests): replace fixed sleeps with condition-based waits * fix: handle null values for size and granteeCount in infoGroups * fix(lint): add newline at end of file in useClipboardCopy hook * fix(ui-tests): page.goto URL * refactor: update import paths for useClipboardCopy --------- Co-authored-by: Ferenc Sárai <sarai.ferenc@gmail.com>
31 lines
832 B
TypeScript
31 lines
832 B
TypeScript
import { ChainState } from '@ethersphere/bee-js'
|
|
import { useContext, useEffect, useState } from 'react'
|
|
|
|
import { Context } from '../providers/Settings'
|
|
|
|
import ExpandableListItem from './ExpandableListItem'
|
|
|
|
const CHAIN_STATE_INTERVAL_MS = 3_000
|
|
|
|
export function ChainSync() {
|
|
const { beeApi } = useContext(Context)
|
|
const [chainState, setChainState] = useState<ChainState | null>(null)
|
|
|
|
useEffect(() => {
|
|
const interval = setInterval(() => {
|
|
if (!beeApi) {
|
|
return
|
|
}
|
|
|
|
// eslint-disable-next-line no-console
|
|
beeApi.getChainState().then(setChainState).catch(console.error)
|
|
}, CHAIN_STATE_INTERVAL_MS)
|
|
|
|
return () => clearInterval(interval)
|
|
})
|
|
|
|
return (
|
|
<ExpandableListItem label="Chain state" value={chainState ? `${chainState.block} / ${chainState.chainTip}` : '-'} />
|
|
)
|
|
}
|