Update download speed less often

To not show every little tiny network spike to the user

Signed-off-by: niansa/tuxifan <tuxifan@posteo.de>
This commit is contained in:
niansa/tuxifan 2023-06-14 16:13:59 +02:00
parent 5eee16c97c
commit 01acb8d250

View File

@ -337,26 +337,36 @@ Dialog {
let progressBar = delegateItem.children.find(child => child.objectName === "itemProgressBar"); let progressBar = delegateItem.children.find(child => child.objectName === "itemProgressBar");
progressBar.value = bytesReceived / bytesTotal; progressBar.value = bytesReceived / bytesTotal;
let updated = false;
// Calculate the download speed // Calculate the download speed
if (lastUpdate[modelName] && lastUpdate[modelName].timestamp) { if (lastUpdate[modelName] && lastUpdate[modelName].timestamp) {
let timeDifference = currentTime - lastUpdate[modelName].timestamp; let timeDifference = currentTime - lastUpdate[modelName].timestamp;
let bytesDifference = bytesReceived - lastUpdate[modelName].bytesReceived; if (timeDifference >= 1500) {
let speed = (bytesDifference / timeDifference) * 1000; // bytes per second let bytesDifference = bytesReceived - lastUpdate[modelName].bytesReceived;
delegateItem.downloading = true let speed = (bytesDifference / timeDifference) * 1000; // bytes per second
delegateItem.downloading = true
// Update the speed label // Update the speed label
let speedLabel = delegateItem.children.find(child => child.objectName === "speedLabel"); let speedLabel = delegateItem.children.find(child => child.objectName === "speedLabel");
if (speed < 1024) { if (speed < 1024) {
speedLabel.text = speed.toFixed(2) + " B/s"; speedLabel.text = speed.toFixed(2) + " B/s";
} else if (speed < 1024 * 1024) { } else if (speed < 1024 * 1024) {
speedLabel.text = (speed / 1024).toFixed(2) + " KB/s"; speedLabel.text = (speed / 1024).toFixed(2) + " KB/s";
} else { } else {
speedLabel.text = (speed / (1024 * 1024)).toFixed(2) + " MB/s"; speedLabel.text = (speed / (1024 * 1024)).toFixed(2) + " MB/s";
}
updated = true;
} }
} else {
updated = true; // To get an initial entry in lastUpdate
} }
// Update the lastUpdate object for the current model // Update the lastUpdate object for the current model
lastUpdate[modelName] = {"timestamp": currentTime, "bytesReceived": bytesReceived}; if (updated) {
lastUpdate[modelName] = {"timestamp": currentTime, "bytesReceived": bytesReceived};
}
break; break;
} }
} }