aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/interfaces.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/wallet/interfaces.cpp')
-rw-r--r--src/wallet/interfaces.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/wallet/interfaces.cpp b/src/wallet/interfaces.cpp
index 5f2aee6923..65285187f4 100644
--- a/src/wallet/interfaces.cpp
+++ b/src/wallet/interfaces.cpp
@@ -41,6 +41,7 @@ using interfaces::Wallet;
using interfaces::WalletAddress;
using interfaces::WalletBalances;
using interfaces::WalletLoader;
+using interfaces::WalletMigrationResult;
using interfaces::WalletOrderForm;
using interfaces::WalletTx;
using interfaces::WalletTxOut;
@@ -66,6 +67,7 @@ WalletTx MakeWalletTx(CWallet& wallet, const CWalletTx& wtx)
result.txout_address_is_mine.reserve(wtx.tx->vout.size());
for (const auto& txout : wtx.tx->vout) {
result.txout_is_mine.emplace_back(wallet.IsMine(txout));
+ result.txout_is_change.push_back(OutputIsChange(wallet, txout));
result.txout_address.emplace_back();
result.txout_address_is_mine.emplace_back(ExtractDestination(txout.scriptPubKey, result.txout_address.back()) ?
wallet.IsMine(result.txout_address.back()) :
@@ -630,6 +632,18 @@ public:
return util::Error{error};
}
}
+ util::Result<WalletMigrationResult> migrateWallet(const std::string& name, const SecureString& passphrase) override
+ {
+ auto res = wallet::MigrateLegacyToDescriptor(name, passphrase, m_context);
+ if (!res) return util::Error{util::ErrorString(res)};
+ WalletMigrationResult out{
+ .wallet = MakeWallet(m_context, res->wallet),
+ .watchonly_wallet_name = res->watchonly_wallet ? std::make_optional(res->watchonly_wallet->GetName()) : std::nullopt,
+ .solvables_wallet_name = res->solvables_wallet ? std::make_optional(res->solvables_wallet->GetName()) : std::nullopt,
+ .backup_path = res->backup_path,
+ };
+ return {std::move(out)}; // std::move to work around clang bug
+ }
std::string getWalletDir() override
{
return fs::PathToString(GetWalletDir());