mirror of
https://github.com/monero-project/monero-gui.git
synced 2024-12-23 12:09:57 +00:00
Wallet: async fetching wallet, daemon and target height
This commit is contained in:
parent
68c7cf7276
commit
2524cc179e
3 changed files with 38 additions and 21 deletions
24
main.qml
24
main.qml
|
@ -293,6 +293,7 @@ ApplicationWindow {
|
||||||
|
|
||||||
// Disconnect all listeners
|
// Disconnect all listeners
|
||||||
if (typeof currentWallet !== "undefined" && currentWallet !== null) {
|
if (typeof currentWallet !== "undefined" && currentWallet !== null) {
|
||||||
|
currentWallet.heightRefreshed.disconnect(onHeightRefreshed);
|
||||||
currentWallet.refreshed.disconnect(onWalletRefresh)
|
currentWallet.refreshed.disconnect(onWalletRefresh)
|
||||||
currentWallet.updated.disconnect(onWalletUpdate)
|
currentWallet.updated.disconnect(onWalletUpdate)
|
||||||
currentWallet.newBlock.disconnect(onWalletNewBlock)
|
currentWallet.newBlock.disconnect(onWalletNewBlock)
|
||||||
|
@ -351,6 +352,7 @@ ApplicationWindow {
|
||||||
}
|
}
|
||||||
|
|
||||||
// connect handlers
|
// connect handlers
|
||||||
|
currentWallet.heightRefreshed.connect(onHeightRefreshed);
|
||||||
currentWallet.refreshed.connect(onWalletRefresh)
|
currentWallet.refreshed.connect(onWalletRefresh)
|
||||||
currentWallet.updated.connect(onWalletUpdate)
|
currentWallet.updated.connect(onWalletUpdate)
|
||||||
currentWallet.newBlock.connect(onWalletNewBlock)
|
currentWallet.newBlock.connect(onWalletNewBlock)
|
||||||
|
@ -621,18 +623,7 @@ ApplicationWindow {
|
||||||
remoteNodeConnected = false;
|
remoteNodeConnected = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function onWalletRefresh() {
|
function onHeightRefreshed(bcHeight, dCurrentBlock, dTargetBlock) {
|
||||||
console.log(">>> wallet refreshed")
|
|
||||||
|
|
||||||
// Daemon connected
|
|
||||||
leftPanel.networkStatus.connected = currentWallet.connected()
|
|
||||||
|
|
||||||
// Wallet height
|
|
||||||
var bcHeight = currentWallet.blockChainHeight();
|
|
||||||
|
|
||||||
// Check daemon status
|
|
||||||
var dCurrentBlock = currentWallet.daemonBlockChainHeight();
|
|
||||||
var dTargetBlock = currentWallet.daemonBlockChainTargetHeight();
|
|
||||||
// Daemon fully synced
|
// Daemon fully synced
|
||||||
// TODO: implement onDaemonSynced or similar in wallet API and don't start refresh thread before daemon is 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.
|
// targetBlock = currentBlock = 1 before network connection is established.
|
||||||
|
@ -683,6 +674,15 @@ ApplicationWindow {
|
||||||
onWalletUpdate();
|
onWalletUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onWalletRefresh() {
|
||||||
|
console.log(">>> wallet refreshed")
|
||||||
|
|
||||||
|
// Daemon connected
|
||||||
|
leftPanel.networkStatus.connected = currentWallet.connected()
|
||||||
|
|
||||||
|
currentWallet.refreshHeightAsync();
|
||||||
|
}
|
||||||
|
|
||||||
function startDaemon(flags){
|
function startDaemon(flags){
|
||||||
// Pause refresh while starting daemon
|
// Pause refresh while starting daemon
|
||||||
currentWallet.pauseRefresh();
|
currentWallet.pauseRefresh();
|
||||||
|
|
|
@ -348,6 +348,19 @@ void Wallet::setSubaddressLabel(quint32 accountIndex, quint32 addressIndex, cons
|
||||||
m_walletImpl->setSubaddressLabel(accountIndex, addressIndex, label.toStdString());
|
m_walletImpl->setSubaddressLabel(accountIndex, addressIndex, label.toStdString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Wallet::refreshHeightAsync() const
|
||||||
|
{
|
||||||
|
QtConcurrent::run([this] {
|
||||||
|
QFuture<quint64> daemonHeight = QtConcurrent::run([this] {
|
||||||
|
return daemonBlockChainHeight();
|
||||||
|
});
|
||||||
|
QFuture<quint64> targetHeight = QtConcurrent::run([this] {
|
||||||
|
return daemonBlockChainTargetHeight();
|
||||||
|
});
|
||||||
|
emit heightRefreshed(blockChainHeight(), daemonHeight.result(), targetHeight.result());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
quint64 Wallet::blockChainHeight() const
|
quint64 Wallet::blockChainHeight() const
|
||||||
{
|
{
|
||||||
return m_walletImpl->blockChainHeight();
|
return m_walletImpl->blockChainHeight();
|
||||||
|
|
|
@ -181,15 +181,7 @@ public:
|
||||||
//! returns if view only wallet
|
//! returns if view only wallet
|
||||||
Q_INVOKABLE bool viewOnly() const;
|
Q_INVOKABLE bool viewOnly() const;
|
||||||
|
|
||||||
//! returns current wallet's block height
|
Q_INVOKABLE void refreshHeightAsync() const;
|
||||||
//! (can be less than daemon's blockchain height when wallet sync in progress)
|
|
||||||
Q_INVOKABLE quint64 blockChainHeight() const;
|
|
||||||
|
|
||||||
//! returns daemon's blockchain height
|
|
||||||
Q_INVOKABLE quint64 daemonBlockChainHeight() const;
|
|
||||||
|
|
||||||
//! returns daemon's blockchain target height
|
|
||||||
Q_INVOKABLE quint64 daemonBlockChainTargetHeight() const;
|
|
||||||
|
|
||||||
//! export/import key images
|
//! export/import key images
|
||||||
Q_INVOKABLE bool exportKeyImages(const QString& path);
|
Q_INVOKABLE bool exportKeyImages(const QString& path);
|
||||||
|
@ -355,6 +347,7 @@ signals:
|
||||||
void deviceButtonRequest(quint64 buttonCode);
|
void deviceButtonRequest(quint64 buttonCode);
|
||||||
void deviceButtonPressed();
|
void deviceButtonPressed();
|
||||||
void transactionCommitted(bool status, PendingTransaction *t, QStringList txid);
|
void transactionCommitted(bool status, PendingTransaction *t, QStringList txid);
|
||||||
|
void heightRefreshed(quint64 walletHeight, quint64 daemonHeight, quint64 targetHeight) const;
|
||||||
|
|
||||||
// emitted when transaction is created async
|
// emitted when transaction is created async
|
||||||
void transactionCreated(PendingTransaction * transaction, QString address, QString paymentId, quint32 mixinCount);
|
void transactionCreated(PendingTransaction * transaction, QString address, QString paymentId, quint32 mixinCount);
|
||||||
|
@ -365,6 +358,17 @@ private:
|
||||||
Wallet(QObject * parent = nullptr);
|
Wallet(QObject * parent = nullptr);
|
||||||
Wallet(Monero::Wallet *w, QObject * parent = 0);
|
Wallet(Monero::Wallet *w, QObject * parent = 0);
|
||||||
~Wallet();
|
~Wallet();
|
||||||
|
|
||||||
|
//! returns current wallet's block height
|
||||||
|
//! (can be less than daemon's blockchain height when wallet sync in progress)
|
||||||
|
quint64 blockChainHeight() const;
|
||||||
|
|
||||||
|
//! returns daemon's blockchain height
|
||||||
|
quint64 daemonBlockChainHeight() const;
|
||||||
|
|
||||||
|
//! returns daemon's blockchain target height
|
||||||
|
quint64 daemonBlockChainTargetHeight() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class WalletManager;
|
friend class WalletManager;
|
||||||
friend class WalletListenerImpl;
|
friend class WalletListenerImpl;
|
||||||
|
|
Loading…
Reference in a new issue