@@ -96,15 +96,15 @@ let useShouldDisplayEta = (~chains: array<TuiData.chain>) => {
9696
9797let 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