From 487e706f0629b3704388fbb1264a592f19332b99 Mon Sep 17 00:00:00 2001 From: rbrunner7 Date: Sat, 2 May 2020 16:34:54 +0200 Subject: [PATCH] Improved daemon sync progress bar --- components/ProgressBar.qml | 2 +- main.qml | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/components/ProgressBar.qml b/components/ProgressBar.qml index c11f3b1a..57c5a14c 100644 --- a/components/ProgressBar.qml +++ b/components/ProgressBar.qml @@ -42,7 +42,7 @@ Rectangle { function updateProgress(currentBlock,targetBlock, blocksToSync, statusTxt){ if(targetBlock > 0) { var remaining = (currentBlock < targetBlock) ? targetBlock - currentBlock : 0 - var progressLevel = (blocksToSync > 0 && blocksToSync != remaining) ? (100*(blocksToSync - remaining)/blocksToSync).toFixed(0) : (100*(currentBlock / targetBlock)).toFixed(0) + var progressLevel = (blocksToSync > 0 ) ? (100*(blocksToSync - remaining)/blocksToSync).toFixed(0) : 100 fillLevel = progressLevel if(typeof statusTxt != "undefined" && statusTxt != "") { progressText.text = statusTxt; diff --git a/main.qml b/main.qml index bb68008d..9149d74e 100644 --- a/main.qml +++ b/main.qml @@ -72,6 +72,7 @@ ApplicationWindow { property bool foundNewBlock: false property bool qrScannerEnabled: (typeof builtWithScanner != "undefined") && builtWithScanner property int blocksToSync: 1 + property int firstBlockSeen property bool isMining: false property int walletMode: persistentSettings.walletMode property var cameraUi @@ -474,6 +475,9 @@ ApplicationWindow { console.log("Wallet connection status changed " + status) middlePanel.updateStatus(); leftPanel.networkStatus.connected = status + if (status == Wallet.ConnectionStatus_Disconnected) { + firstBlockSeen = 0; + } // Update fee multiplier dropdown on transfer page middlePanel.transferView.updatePriorityDropdown(); @@ -613,18 +617,22 @@ ApplicationWindow { currentDaemonAddress = localDaemonAddress currentWallet.initAsync(currentDaemonAddress, isTrustedDaemon()); walletManager.setDaemonAddressAsync(currentDaemonAddress); + firstBlockSeen = 0; } function onHeightRefreshed(bcHeight, dCurrentBlock, dTargetBlock) { // Daemon fully synced // TODO: implement onDaemonSynced or similar in wallet API and don't start refresh thread before daemon is synced // targetBlock = currentBlock = 1 before network connection is established. + if (firstBlockSeen == 0 && dTargetBlock != 1) { + firstBlockSeen = dCurrentBlock; + } daemonSynced = dCurrentBlock >= dTargetBlock && dTargetBlock != 1 walletSynced = bcHeight >= dTargetBlock // Update progress bars if(!daemonSynced) { - leftPanel.daemonProgressBar.updateProgress(dCurrentBlock,dTargetBlock, dTargetBlock-dCurrentBlock); + leftPanel.daemonProgressBar.updateProgress(dCurrentBlock,dTargetBlock, dTargetBlock-firstBlockSeen); leftPanel.progressBar.updateProgress(0,dTargetBlock, dTargetBlock, qsTr("Waiting for daemon to sync")); } else { leftPanel.daemonProgressBar.updateProgress(dCurrentBlock,dTargetBlock, 0, qsTr("Daemon is synchronized (%1)").arg(dCurrentBlock.toFixed(0)));