perf(ui): calm large-queue live updates

Throttle visible download snapshots at 500 ms from 250 queue items, align speed visualizations to the same cadence, preserve small-queue responsiveness, and retain the stronger protection for very large queues.
This commit is contained in:
Sucukdeluxe
2026-08-17 13:39:53 +02:00
parent a8a5ca4b40
commit fe3cb36731
7 changed files with 32 additions and 24 deletions
+13 -17
View File
@@ -6547,15 +6547,13 @@ export class DownloadManager extends EventEmitter {
if (this.stateEmitTimer) {
return;
}
const itemCount = this.itemCount;
const emitDelay = this.session.running
? itemCount >= 1500
? 700
: itemCount >= 700
? 500
: itemCount >= 250
? 300
: 150
const itemCount = this.itemCount;
const emitDelay = this.session.running
? itemCount >= 1500
? 700
: itemCount >= 250
? 500
: 150
: 200;
this.stateEmitTimer = setTimeout(() => {
this.stateEmitTimer = null;
@@ -10566,14 +10564,12 @@ export class DownloadManager extends EventEmitter {
let windowStarted = nowMs();
let lastPackageLogAt = 0;
let lastLoggedPercent = -1;
const itemCount = this.itemCount;
const uiUpdateIntervalMs = itemCount >= 1500
? 500
: itemCount >= 700
? 350
: itemCount >= 250
? 220
: 120;
const itemCount = this.itemCount;
const uiUpdateIntervalMs = itemCount >= 1500
? 700
: itemCount >= 250
? 500
: 120;
let lastUiEmitAt = 0;
const stallTimeoutMs = getDownloadStallTimeoutMs();
const drainTimeoutMs = Math.max(30000, Math.min(300000, stallTimeoutMs > 0 ? stallTimeoutMs * 12 : 120000));