diff --git a/internal/services/imapservice/sync_reporter.go b/internal/services/imapservice/sync_reporter.go index 00653457..21f3ac4e 100644 --- a/internal/services/imapservice/sync_reporter.go +++ b/internal/services/imapservice/sync_reporter.go @@ -58,6 +58,7 @@ func (rep *syncReporter) OnProgress(ctx context.Context, delta int64) { rep.count += delta var progress float64 + var remaining time.Duration // It's possible for count to be bigger or smaller than total depending on when the sync begins and whether new // messages are added/removed during this period. When this happens just limited the progress to 100%. @@ -65,6 +66,7 @@ func (rep *syncReporter) OnProgress(ctx context.Context, delta int64) { progress = 1 } else { progress = float64(rep.count) / float64(rep.total) + remaining = time.Since(rep.start) * time.Duration(rep.total-(rep.count+1)) / time.Duration(rep.count+1) } if time.Since(rep.last) > rep.freq { @@ -72,7 +74,7 @@ func (rep *syncReporter) OnProgress(ctx context.Context, delta int64) { UserID: rep.userID, Progress: progress, Elapsed: time.Since(rep.start), - Remaining: time.Since(rep.start) * time.Duration(rep.total-(rep.count+1)) / time.Duration(rep.count+1), + Remaining: remaining, }) rep.last = time.Now()