diff --git a/src/interfaces/wallet.h b/src/interfaces/wallet.h index 2ccd514dbf0..5a84099c116 100644 --- a/src/interfaces/wallet.h +++ b/src/interfaces/wallet.h @@ -325,7 +325,7 @@ public: virtual std::string getWalletDir() = 0; //! Restore backup wallet - virtual util::Result> restoreWallet(const fs::path& backup_file, const std::string& wallet_name, std::vector& warnings) = 0; + virtual util::Result> restoreWallet(const fs::path& backup_file, const std::string& wallet_name, std::vector& warnings, bool load_after_restore) = 0; //! Migrate a wallet virtual util::Result migrateWallet(const std::string& name, const SecureString& passphrase) = 0; diff --git a/src/qt/walletcontroller.cpp b/src/qt/walletcontroller.cpp index 869f9614c56..b01e60e6a17 100644 --- a/src/qt/walletcontroller.cpp +++ b/src/qt/walletcontroller.cpp @@ -409,7 +409,7 @@ void RestoreWalletActivity::restore(const fs::path& backup_file, const std::stri tr("Restoring Wallet %1…").arg(name.toHtmlEscaped())); QTimer::singleShot(0, worker(), [this, backup_file, wallet_name] { - auto wallet{node().walletLoader().restoreWallet(backup_file, wallet_name, m_warning_message)}; + auto wallet{node().walletLoader().restoreWallet(backup_file, wallet_name, m_warning_message, /*load_after_restore=*/true)}; if (wallet) { m_wallet_model = m_wallet_controller->getOrCreateWallet(std::move(*wallet)); diff --git a/src/wallet/interfaces.cpp b/src/wallet/interfaces.cpp index 2cda1ba2991..585ed7c7942 100644 --- a/src/wallet/interfaces.cpp +++ b/src/wallet/interfaces.cpp @@ -597,16 +597,15 @@ public: return util::Error{error}; } } - util::Result> restoreWallet(const fs::path& backup_file, const std::string& wallet_name, std::vector& warnings) override + util::Result> restoreWallet(const fs::path& backup_file, const std::string& wallet_name, std::vector& warnings, bool load_after_restore) override { DatabaseStatus status; bilingual_str error; - std::unique_ptr wallet{MakeWallet(m_context, RestoreWallet(m_context, backup_file, wallet_name, /*load_on_start=*/true, status, error, warnings))}; - if (wallet) { - return wallet; - } else { + std::unique_ptr wallet{MakeWallet(m_context, RestoreWallet(m_context, backup_file, wallet_name, /*load_on_start=*/true, status, error, warnings, load_after_restore))}; + if (!error.empty()) { return util::Error{error}; } + return wallet; } util::Result migrateWallet(const std::string& name, const SecureString& passphrase) override {