forked from Public/monero-gui
Wallet: implement async wallet storing
This commit is contained in:
@@ -48,7 +48,6 @@
|
||||
#include <QtConcurrent/QtConcurrent>
|
||||
#include <QList>
|
||||
#include <QVector>
|
||||
#include <QMutex>
|
||||
#include <QMutexLocker>
|
||||
|
||||
namespace {
|
||||
@@ -230,9 +229,19 @@ QString Wallet::path() const
|
||||
return QDir::toNativeSeparators(QString::fromStdString(m_walletImpl->path()));
|
||||
}
|
||||
|
||||
bool Wallet::store(const QString &path)
|
||||
void Wallet::storeAsync(const QJSValue &callback, const QString &path /* = "" */)
|
||||
{
|
||||
return m_walletImpl->store(path.toStdString());
|
||||
const auto future = m_scheduler.run(
|
||||
[this, path] {
|
||||
QMutexLocker locker(&m_storeMutex);
|
||||
|
||||
return QJSValueList({m_walletImpl->store(path.toStdString())});
|
||||
},
|
||||
callback);
|
||||
if (!future.first)
|
||||
{
|
||||
QJSValue(callback).call(QJSValueList({false}));
|
||||
}
|
||||
}
|
||||
|
||||
bool Wallet::init(const QString &daemonAddress, bool trustedDaemon, quint64 upperTransactionLimit, bool isRecovering, bool isRecoveringFromDevice, quint64 restoreHeight)
|
||||
|
||||
@@ -144,7 +144,7 @@ public:
|
||||
|
||||
//! saves wallet to the file by given path
|
||||
//! empty path stores in current location
|
||||
Q_INVOKABLE bool store(const QString &path = "");
|
||||
Q_INVOKABLE void storeAsync(const QJSValue &callback, const QString &path = "");
|
||||
|
||||
//! initializes wallet asynchronously
|
||||
Q_INVOKABLE void initAsync(const QString &daemonAddress, bool trustedDaemon = false, quint64 upperTransactionLimit = 0, bool isRecovering = false, bool isRecoveringFromDevice = false, quint64 restoreHeight = 0);
|
||||
@@ -434,6 +434,7 @@ private:
|
||||
QString m_daemonPassword;
|
||||
Monero::WalletListener *m_walletListener;
|
||||
FutureScheduler m_scheduler;
|
||||
QMutex m_storeMutex;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user