diff --git a/src/interfaces/node.h b/src/interfaces/node.h --- a/src/interfaces/node.h +++ b/src/interfaces/node.h @@ -202,6 +202,14 @@ //! Return interfaces for accessing wallets (if any). virtual std::vector> getWallets() = 0; + //! Attempts to load a wallet from file or directory. + //! The loaded wallet is also notified to handlers previously registered + //! with handleLoadWallet. + virtual std::unique_ptr loadWallet(const CChainParams ¶ms, + const std::string &name, + std::string &error, + std::string &warning) const = 0; + //! Register handler for init messages. using InitMessageFn = std::function; virtual std::unique_ptr handleInitMessage(InitMessageFn fn) = 0; diff --git a/src/interfaces/node.cpp b/src/interfaces/node.cpp --- a/src/interfaces/node.cpp +++ b/src/interfaces/node.cpp @@ -45,6 +45,10 @@ fs::path GetWalletDir(); std::vector ListWalletDir(); std::vector> GetWallets(); +std::shared_ptr LoadWallet(const CChainParams &chainParams, + interfaces::Chain &chain, + const std::string &name, std::string &error, + std::string &warning); namespace interfaces { @@ -270,6 +274,12 @@ } return wallets; } + std::unique_ptr + loadWallet(const CChainParams ¶ms, const std::string &name, + std::string &error, std::string &warning) const override { + return MakeWallet( + LoadWallet(params, *m_interfaces.chain, name, error, warning)); + } std::unique_ptr handleInitMessage(InitMessageFn fn) override { return MakeHandler(::uiInterface.InitMessage_connect(fn)); }