From 5ea99a73e77dd03777a866ddda8ad370c8d2c48b Mon Sep 17 00:00:00 2001 From: xiphon Date: Thu, 30 Jul 2020 16:55:06 +0000 Subject: Wallet: WalletManager: implement proxy support --- src/libwalletqt/Wallet.cpp | 53 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 48 insertions(+), 5 deletions(-) (limited to 'src/libwalletqt/Wallet.cpp') diff --git a/src/libwalletqt/Wallet.cpp b/src/libwalletqt/Wallet.cpp index dc4481ba..508f105e 100644 --- a/src/libwalletqt/Wallet.cpp +++ b/src/libwalletqt/Wallet.cpp @@ -144,6 +144,29 @@ void Wallet::setConnectionStatus(ConnectionStatus value) } } +QString Wallet::getProxyAddress() const +{ + QMutexLocker locker(&m_proxyMutex); + return m_proxyAddress; +} + +void Wallet::setProxyAddress(QString address) +{ + m_scheduler.run([this, address] { + { + QMutexLocker locker(&m_proxyMutex); + + if (!m_walletImpl->setProxy(address.toStdString())) + { + qCritical() << "failed to set proxy" << address; + } + + m_proxyAddress = address; + } + emit proxyAddressChanged(); + }); +} + bool Wallet::synchronized() const { return m_walletImpl->synchronized(); @@ -184,7 +207,7 @@ void Wallet::storeAsync(const QJSValue &callback, const QString &path /* = "" */ } } -bool Wallet::init(const QString &daemonAddress, bool trustedDaemon, quint64 upperTransactionLimit, bool isRecovering, bool isRecoveringFromDevice, quint64 restoreHeight) +bool Wallet::init(const QString &daemonAddress, bool trustedDaemon, quint64 upperTransactionLimit, bool isRecovering, bool isRecoveringFromDevice, quint64 restoreHeight, const QString& proxyAddress) { qDebug() << "init non async"; if (isRecovering){ @@ -198,7 +221,20 @@ bool Wallet::init(const QString &daemonAddress, bool trustedDaemon, quint64 uppe if (isRecovering || isRecoveringFromDevice) { m_walletImpl->setRefreshFromBlockHeight(restoreHeight); } - m_walletImpl->init(daemonAddress.toStdString(), upperTransactionLimit, m_daemonUsername.toStdString(), m_daemonPassword.toStdString()); + + { + QMutexLocker locker(&m_proxyMutex); + + if (!m_walletImpl->init(daemonAddress.toStdString(), upperTransactionLimit, m_daemonUsername.toStdString(), m_daemonPassword.toStdString(), false, false, proxyAddress.toStdString())) + { + return false; + } + + + m_proxyAddress = proxyAddress; + } + emit proxyAddressChanged(); + setTrustedDaemon(trustedDaemon); return true; } @@ -210,11 +246,18 @@ void Wallet::setDaemonLogin(const QString &daemonUsername, const QString &daemon m_daemonPassword = daemonPassword; } -void Wallet::initAsync(const QString &daemonAddress, bool trustedDaemon, quint64 upperTransactionLimit, bool isRecovering, bool isRecoveringFromDevice, quint64 restoreHeight) +void Wallet::initAsync( + const QString &daemonAddress, + bool trustedDaemon /* = false */, + quint64 upperTransactionLimit /* = 0 */, + bool isRecovering /* = false */, + bool isRecoveringFromDevice /* = false */, + quint64 restoreHeight /* = 0 */, + const QString &proxyAddress /* = "" */) { qDebug() << "initAsync: " + daemonAddress; - const auto future = m_scheduler.run([this, daemonAddress, trustedDaemon, upperTransactionLimit, isRecovering, isRecoveringFromDevice, restoreHeight] { - bool success = init(daemonAddress, trustedDaemon, upperTransactionLimit, isRecovering, isRecoveringFromDevice, restoreHeight); + const auto future = m_scheduler.run([this, daemonAddress, trustedDaemon, upperTransactionLimit, isRecovering, isRecoveringFromDevice, restoreHeight, proxyAddress] { + bool success = init(daemonAddress, trustedDaemon, upperTransactionLimit, isRecovering, isRecoveringFromDevice, restoreHeight, proxyAddress); if (success) { emit walletCreationHeightChanged(); -- cgit v1.2.3