diff options
author | Riccardo Spagni <ric@spagni.net> | 2016-11-11 12:35:47 +0200 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2016-11-11 12:35:47 +0200 |
commit | a3cd7230f879d6e03ae2ec0ef077783f046cdc1e (patch) | |
tree | 75a38371b0374e2c9855f41351932538be4af252 /src/wallet | |
parent | Merge pull request #1314 (diff) | |
parent | Wallet API: use stored refresh height when rebuilding cache (diff) | |
download | monero-a3cd7230f879d6e03ae2ec0ef077783f046cdc1e.tar.xz |
Merge pull request #1315
9150a16 Wallet API: use stored refresh height when rebuilding cache (Jacob Brydolf)
Diffstat (limited to 'src/wallet')
-rw-r--r-- | src/wallet/api/wallet.cpp | 14 | ||||
-rw-r--r-- | src/wallet/api/wallet.h | 1 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp index d00a8c462..134ea601c 100644 --- a/src/wallet/api/wallet.cpp +++ b/src/wallet/api/wallet.cpp @@ -201,6 +201,7 @@ WalletImpl::WalletImpl(bool testnet) , m_wallet2Callback(nullptr) , m_recoveringFromSeed(false) , m_synchronized(false) + , m_rebuildWalletCache(false) { m_wallet = new tools::wallet2(testnet); m_history = new TransactionHistoryImpl(this); @@ -269,6 +270,14 @@ bool WalletImpl::open(const std::string &path, const std::string &password) m_recoveringFromSeed = false; try { // TODO: handle "deprecated" + // Check if wallet cache exists + bool keys_file_exists; + bool wallet_file_exists; + tools::wallet2::wallet_exists(path, keys_file_exists, wallet_file_exists); + if(!wallet_file_exists){ + // Rebuilding wallet cache, using refresh height from .keys file + m_rebuildWalletCache = true; + } m_wallet->load(path, password); m_password = password; @@ -998,8 +1007,9 @@ bool WalletImpl::isNewWallet() const { // in case wallet created without daemon connection, closed and opened again, // it's the same case as if it created from scratch, i.e. we need "fast sync" - // with the daemon (pull hashes instead of pull blocks) - return !(blockChainHeight() > 1 || m_recoveringFromSeed); + // with the daemon (pull hashes instead of pull blocks). + // If wallet cache is rebuilt, creation height stored in .keys is used. + return !(blockChainHeight() > 1 || m_recoveringFromSeed || m_rebuildWalletCache); } void WalletImpl::doInit(const string &daemon_address, uint64_t upper_transaction_size_limit) diff --git a/src/wallet/api/wallet.h b/src/wallet/api/wallet.h index e447879de..372d6efd7 100644 --- a/src/wallet/api/wallet.h +++ b/src/wallet/api/wallet.h @@ -145,6 +145,7 @@ private: // instead of pulling hashes (fast-refresh) bool m_recoveringFromSeed; std::atomic<bool> m_synchronized; + bool m_rebuildWalletCache; }; |