feat: refresh frequency changes if the bee is in error state (#409)
This commit is contained in:
+30
-16
@@ -19,6 +19,9 @@ import { WalletAddress } from '../utils/wallet'
|
|||||||
import { Context as SettingsContext } from './Settings'
|
import { Context as SettingsContext } from './Settings'
|
||||||
import { Context as TopUpContext } from './TopUp'
|
import { Context as TopUpContext } from './TopUp'
|
||||||
|
|
||||||
|
const REFRESH_WHEN_OK = 30_000
|
||||||
|
const REFRESH_WHEN_ERROR = 5_000
|
||||||
|
|
||||||
export enum CheckState {
|
export enum CheckState {
|
||||||
OK = 'OK',
|
OK = 'OK',
|
||||||
WARNING = 'Warning',
|
WARNING = 'Warning',
|
||||||
@@ -217,7 +220,7 @@ export function Provider({ children }: Props): ReactElement {
|
|||||||
|
|
||||||
setApiHealth(false)
|
setApiHealth(false)
|
||||||
|
|
||||||
refresh()
|
if (beeApi !== null) refresh()
|
||||||
}, [beeApi]) // eslint-disable-line react-hooks/exhaustive-deps
|
}, [beeApi]) // eslint-disable-line react-hooks/exhaustive-deps
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -235,7 +238,7 @@ export function Provider({ children }: Props): ReactElement {
|
|||||||
setSettlements(null)
|
setSettlements(null)
|
||||||
setChainState(null)
|
setChainState(null)
|
||||||
|
|
||||||
refresh()
|
if (beeDebugApi !== null) refresh()
|
||||||
}, [beeDebugApi]) // eslint-disable-line react-hooks/exhaustive-deps
|
}, [beeDebugApi]) // eslint-disable-line react-hooks/exhaustive-deps
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -245,7 +248,7 @@ export function Provider({ children }: Props): ReactElement {
|
|||||||
}, [nodeAddresses, provider])
|
}, [nodeAddresses, provider])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const interval = setInterval(() => walletAddress?.refresh().then(setWalletAddress), 30_000)
|
const interval = setInterval(() => walletAddress?.refresh().then(setWalletAddress), REFRESH_WHEN_OK)
|
||||||
|
|
||||||
return () => clearInterval(interval)
|
return () => clearInterval(interval)
|
||||||
}, [walletAddress])
|
}, [walletAddress])
|
||||||
@@ -378,13 +381,33 @@ export function Provider({ children }: Props): ReactElement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const start = (freq = 30000) => setFrequency(freq)
|
const start = (freq = REFRESH_WHEN_OK) => {
|
||||||
|
refresh()
|
||||||
|
setFrequency(freq)
|
||||||
|
}
|
||||||
const stop = () => setFrequency(null)
|
const stop = () => setFrequency(null)
|
||||||
|
|
||||||
|
const status = getStatus(
|
||||||
|
debugApiHealth,
|
||||||
|
nodeAddresses,
|
||||||
|
nodeInfo,
|
||||||
|
apiHealth,
|
||||||
|
topology,
|
||||||
|
chequebookAddress,
|
||||||
|
chequebookBalance,
|
||||||
|
error,
|
||||||
|
)
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
let newFrequency = REFRESH_WHEN_OK
|
||||||
|
|
||||||
|
if (status.all !== 'OK') newFrequency = REFRESH_WHEN_ERROR
|
||||||
|
|
||||||
|
if (newFrequency !== frequency) setFrequency(newFrequency)
|
||||||
|
}, [status.all, frequency])
|
||||||
|
|
||||||
// Start the update loop
|
// Start the update loop
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
refresh()
|
|
||||||
|
|
||||||
// Start autorefresh only if the frequency is set
|
// Start autorefresh only if the frequency is set
|
||||||
if (frequency) {
|
if (frequency) {
|
||||||
const interval = setInterval(refresh, frequency)
|
const interval = setInterval(refresh, frequency)
|
||||||
@@ -396,16 +419,7 @@ export function Provider({ children }: Props): ReactElement {
|
|||||||
return (
|
return (
|
||||||
<Context.Provider
|
<Context.Provider
|
||||||
value={{
|
value={{
|
||||||
status: getStatus(
|
status,
|
||||||
debugApiHealth,
|
|
||||||
nodeAddresses,
|
|
||||||
nodeInfo,
|
|
||||||
apiHealth,
|
|
||||||
topology,
|
|
||||||
chequebookAddress,
|
|
||||||
chequebookBalance,
|
|
||||||
error,
|
|
||||||
),
|
|
||||||
balance: walletAddress,
|
balance: walletAddress,
|
||||||
latestUserVersion,
|
latestUserVersion,
|
||||||
latestUserVersionExact,
|
latestUserVersionExact,
|
||||||
|
|||||||
Reference in New Issue
Block a user