From 01acb8d2506e95c31eab21c76244a465d9b1aa07 Mon Sep 17 00:00:00 2001 From: niansa/tuxifan Date: Wed, 14 Jun 2023 16:13:59 +0200 Subject: [PATCH] Update download speed less often To not show every little tiny network spike to the user Signed-off-by: niansa/tuxifan --- gpt4all-chat/qml/ModelDownloaderDialog.qml | 34 ++++++++++++++-------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/gpt4all-chat/qml/ModelDownloaderDialog.qml b/gpt4all-chat/qml/ModelDownloaderDialog.qml index d2721159..b7e7b6df 100644 --- a/gpt4all-chat/qml/ModelDownloaderDialog.qml +++ b/gpt4all-chat/qml/ModelDownloaderDialog.qml @@ -337,26 +337,36 @@ Dialog { let progressBar = delegateItem.children.find(child => child.objectName === "itemProgressBar"); progressBar.value = bytesReceived / bytesTotal; + let updated = false; + // Calculate the download speed if (lastUpdate[modelName] && lastUpdate[modelName].timestamp) { let timeDifference = currentTime - lastUpdate[modelName].timestamp; - let bytesDifference = bytesReceived - lastUpdate[modelName].bytesReceived; - let speed = (bytesDifference / timeDifference) * 1000; // bytes per second - delegateItem.downloading = true + if (timeDifference >= 1500) { + let bytesDifference = bytesReceived - lastUpdate[modelName].bytesReceived; + let speed = (bytesDifference / timeDifference) * 1000; // bytes per second + delegateItem.downloading = true - // Update the speed label - let speedLabel = delegateItem.children.find(child => child.objectName === "speedLabel"); - if (speed < 1024) { - speedLabel.text = speed.toFixed(2) + " B/s"; - } else if (speed < 1024 * 1024) { - speedLabel.text = (speed / 1024).toFixed(2) + " KB/s"; - } else { - speedLabel.text = (speed / (1024 * 1024)).toFixed(2) + " MB/s"; + // Update the speed label + let speedLabel = delegateItem.children.find(child => child.objectName === "speedLabel"); + if (speed < 1024) { + speedLabel.text = speed.toFixed(2) + " B/s"; + } else if (speed < 1024 * 1024) { + speedLabel.text = (speed / 1024).toFixed(2) + " KB/s"; + } else { + 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 - lastUpdate[modelName] = {"timestamp": currentTime, "bytesReceived": bytesReceived}; + if (updated) { + lastUpdate[modelName] = {"timestamp": currentTime, "bytesReceived": bytesReceived}; + } break; } }