diff --git a/main.qml b/main.qml index 78479d74..700bad24 100644 --- a/main.qml +++ b/main.qml @@ -496,8 +496,12 @@ ApplicationWindow { middlePanel.transferView.updatePriorityDropdown(); // If wallet isnt connected, advanced wallet mode and no daemon is running - Ask - if(!isMobile && appWindow.walletMode >= 2 && walletManager.isDaemonLocal(currentDaemonAddress) && !walletInitialized && status === Wallet.ConnectionStatus_Disconnected && !daemonManager.running(persistentSettings.nettype)){ - daemonManagerDialog.open(); + if (!isMobile && appWindow.walletMode >= 2 && walletManager.isDaemonLocal(currentDaemonAddress) && !walletInitialized && status === Wallet.ConnectionStatus_Disconnected) { + daemonManager.runningAsync(persistentSettings.nettype, function(running) { + if (!running) { + daemonManagerDialog.open(); + } + }); } // initialize transaction history once wallet is initialized first time; if (!walletInitialized) { diff --git a/src/daemon/DaemonManager.cpp b/src/daemon/DaemonManager.cpp index ecbe1784..4277e0bb 100644 --- a/src/daemon/DaemonManager.cpp +++ b/src/daemon/DaemonManager.cpp @@ -243,6 +243,14 @@ bool DaemonManager::running(NetworkType::Type nettype) const } return false; } + +void DaemonManager::runningAsync(NetworkType::Type nettype, const QJSValue& callback) const +{ + m_scheduler.run([this, nettype] { + return QJSValueList({running(nettype)}); + }, callback); +} + bool DaemonManager::sendCommand(const QString &cmd, NetworkType::Type nettype) const { QString message; diff --git a/src/daemon/DaemonManager.h b/src/daemon/DaemonManager.h index 6063c8cb..5a29ea64 100644 --- a/src/daemon/DaemonManager.h +++ b/src/daemon/DaemonManager.h @@ -48,7 +48,7 @@ public: Q_INVOKABLE bool stop(NetworkType::Type nettype); // return true if daemon process is started - Q_INVOKABLE bool running(NetworkType::Type nettype) const; + Q_INVOKABLE void runningAsync(NetworkType::Type nettype, const QJSValue& callback) const; // Send daemon command from qml and prints output in console window. Q_INVOKABLE bool sendCommand(const QString &cmd, NetworkType::Type nettype) const; Q_INVOKABLE void exit(); @@ -56,6 +56,7 @@ public: private: + bool running(NetworkType::Type nettype) const; bool sendCommand(const QString &cmd, NetworkType::Type nettype, QString &message) const; bool startWatcher(NetworkType::Type nettype) const; bool stopWatcher(NetworkType::Type nettype) const; @@ -82,7 +83,7 @@ private: bool m_has_daemon = true; bool m_app_exit = false; - FutureScheduler m_scheduler; + mutable FutureScheduler m_scheduler; }; #endif // DAEMONMANAGER_H