aboutsummaryrefslogtreecommitdiff
path: root/src/libwalletqt/Wallet.cpp
diff options
context:
space:
mode:
authorluigi1111 <luigi1111w@gmail.com>2020-09-07 14:46:14 -0500
committerluigi1111 <luigi1111w@gmail.com>2020-09-07 14:46:14 -0500
commit5bc305679c5e8643d7fda23b9afd0214a7350720 (patch)
treef6c66fa7d642ff492cb7183fbbfa86e8b30fa033 /src/libwalletqt/Wallet.cpp
parent2557bdb35f03dc11681cec797529eb93b668d782 (diff)
parent5ea99a73e77dd03777a866ddda8ad370c8d2c48b (diff)
downloadmonzero-gui-5bc305679c5e8643d7fda23b9afd0214a7350720.tar.gz
monzero-gui-5bc305679c5e8643d7fda23b9afd0214a7350720.tar.xz
monzero-gui-5bc305679c5e8643d7fda23b9afd0214a7350720.zip
Merge pull request #3032
5ea99a7 Wallet: WalletManager: implement proxy support (xiphon)
Diffstat (limited to 'src/libwalletqt/Wallet.cpp')
-rw-r--r--src/libwalletqt/Wallet.cpp53
1 files changed, 48 insertions, 5 deletions
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();