Skip to content

Commit cf971be

Browse files
committed
better eta
1 parent 699e30b commit cf971be

1 file changed

Lines changed: 9 additions & 10 deletions

File tree

  • codegenerator/cli/npm/envio/src/tui/components

codegenerator/cli/npm/envio/src/tui/components/SyncETA.res

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,15 +96,15 @@ let useShouldDisplayEta = (~chains: array<TuiData.chain>) => {
9696

9797
let useEta = (~chains, ~indexerStartTime) => {
9898
let shouldDisplayEta = useShouldDisplayEta(~chains)
99-
let (secondsToSub, setSecondsToSub) = React.useState(_ => 0.)
100-
let (timeSinceStart, setTimeSinceStart) = React.useState(_ => 0.)
99+
let (initialBlocks, setInitialBlocks) = React.useState(_ => 0.)
100+
let (timeSinceRestart, setTimeSinceRestart) = React.useState(_ => 0.)
101101

102102
React.useEffect2(() => {
103-
setTimeSinceStart(_ => Js.Date.now() -. indexerStartTime->Js.Date.valueOf)
104-
setSecondsToSub(_ => 0.)
103+
setInitialBlocks(_ => getTotalBlocksProcessed(chains)->Int.toFloat)
104+
setTimeSinceRestart(_ => 0.)
105105

106106
let intervalId = Js.Global.setInterval(() => {
107-
setSecondsToSub(prev => prev +. 1.)
107+
setTimeSinceRestart(_ => Js.Date.now() -. indexerStartTime->Js.Date.valueOf)
108108
}, 1000)
109109

110110
Some(() => Js.Global.clearInterval(intervalId))
@@ -113,13 +113,12 @@ let useEta = (~chains, ~indexerStartTime) => {
113113
//blocksProcessed/remainingBlocks = timeSoFar/eta
114114
//eta = (timeSoFar/blocksProcessed) * remainingBlocks
115115

116-
let blocksProcessed = getTotalBlocksProcessed(chains)->Int.toFloat
117-
if shouldDisplayEta && blocksProcessed > 0. {
116+
let blocksSinceRestart = getTotalBlocksProcessed(chains)->Int.toFloat -. initialBlocks
117+
if shouldDisplayEta && blocksSinceRestart > 0. && timeSinceRestart > 1000. {
118118
let nowDate = Js.Date.now()
119119
let remainingBlocks = getTotalRemainingBlocks(chains)->Int.toFloat
120-
let etaFloat = timeSinceStart /. blocksProcessed *. remainingBlocks
121-
let millisToSub = secondsToSub *. 1000.
122-
let etaFloat = Pervasives.max(etaFloat -. millisToSub, 0.0) //template this
120+
let etaFloat = timeSinceRestart /. blocksSinceRestart *. remainingBlocks
121+
let etaFloat = Pervasives.max(etaFloat, 0.0)
123122
let eta = (etaFloat +. nowDate)->Js.Date.fromFloat
124123
let interval: DateFns.interval = {start: nowDate->Js.Date.fromFloat, end: eta}
125124
let duration = DateFns.intervalToDuration(interval)

0 commit comments

Comments
 (0)