diff --git a/src/dummywallet.cpp b/src/dummywallet.cpp index 5b33daf85..3714187a9 100644 --- a/src/dummywallet.cpp +++ b/src/dummywallet.cpp @@ -6,6 +6,8 @@ #include #include +class CWallet; + class DummyWalletInit : public WalletInitInterface { public: @@ -31,3 +33,19 @@ void DummyWalletInit::AddWalletOptions() const } const WalletInitInterface& g_wallet_init_interface = DummyWalletInit(); + +std::vector> GetWallets() +{ + throw std::logic_error("Wallet function called in non-wallet build."); +} + +namespace interfaces { + +class Wallet; + +std::unique_ptr MakeWallet(const std::shared_ptr& wallet) +{ + throw std::logic_error("Wallet function called in non-wallet build."); +} + +} // namespace interfaces diff --git a/src/interfaces/node.cpp b/src/interfaces/node.cpp index 1da58fe48..d95b41657 100644 --- a/src/interfaces/node.cpp +++ b/src/interfaces/node.cpp @@ -32,19 +32,18 @@ #if defined(HAVE_CONFIG_H) #include #endif -#ifdef ENABLE_WALLET -#include -#include -#define CHECK_WALLET(x) x -#else -#define CHECK_WALLET(x) throw std::logic_error("Wallet function called in non-wallet build.") -#endif #include #include #include +class CWallet; +std::vector> GetWallets(); + namespace interfaces { + +class Wallet; + namespace { class NodeImpl : public Node @@ -221,15 +220,11 @@ class NodeImpl : public Node } std::vector> getWallets() override { -#ifdef ENABLE_WALLET std::vector> wallets; for (const std::shared_ptr& wallet : GetWallets()) { wallets.emplace_back(MakeWallet(wallet)); } return wallets; -#else - throw std::logic_error("Node::getWallets() called in non-wallet build."); -#endif } std::unique_ptr handleInitMessage(InitMessageFn fn) override { @@ -249,8 +244,7 @@ class NodeImpl : public Node } std::unique_ptr handleLoadWallet(LoadWalletFn fn) override { - CHECK_WALLET( - return MakeHandler(::uiInterface.LoadWallet_connect([fn](std::shared_ptr wallet) { fn(MakeWallet(wallet)); }))); + return MakeHandler(::uiInterface.LoadWallet_connect([fn](std::shared_ptr wallet) { fn(MakeWallet(wallet)); })); } std::unique_ptr handleNotifyNumConnectionsChanged(NotifyNumConnectionsChangedFn fn) override { diff --git a/src/interfaces/wallet.h b/src/interfaces/wallet.h index 44240a572..7aa91f37e 100644 --- a/src/interfaces/wallet.h +++ b/src/interfaces/wallet.h @@ -366,8 +366,8 @@ struct WalletTxOut bool is_spent = false; }; -//! Return implementation of Wallet interface. This function will be undefined -//! in builds where ENABLE_WALLET is false. +//! Return implementation of Wallet interface. This function is defined in +//! dummywallet.cpp and throws if the wallet component is not compiled. std::unique_ptr MakeWallet(const std::shared_ptr& wallet); } // namespace interfaces