diff --git a/src/rpc/util.cpp b/src/rpc/util.cpp index f01944cd0be..f95ac4cb4b9 100644 --- a/src/rpc/util.cpp +++ b/src/rpc/util.cpp @@ -1175,8 +1175,25 @@ UniValue GetServicesNames(ServiceFlags services) return servicesNames; } +/** Convert a vector of bilingual strings to a UniValue::VARR containing their original untranslated values. */ +[[nodiscard]] static UniValue BilingualStringsToUniValue(const std::vector& bilingual_strings) +{ + CHECK_NONFATAL(!bilingual_strings.empty()); + UniValue result{UniValue::VARR}; + for (const auto& s : bilingual_strings) { + result.push_back(s.original); + } + return result; +} + void PushWarnings(const UniValue& warnings, UniValue& obj) { if (warnings.empty()) return; obj.pushKV("warnings", warnings); } + +void PushWarnings(const std::vector& warnings, UniValue& obj) +{ + if (warnings.empty()) return; + obj.pushKV("warnings", BilingualStringsToUniValue(warnings)); +} diff --git a/src/rpc/util.h b/src/rpc/util.h index 15c73068b94..bb5c30a2f44 100644 --- a/src/rpc/util.h +++ b/src/rpc/util.h @@ -388,5 +388,6 @@ private: * @param[out] obj UniValue object to push the warnings array object to. */ void PushWarnings(const UniValue& warnings, UniValue& obj); +void PushWarnings(const std::vector& warnings, UniValue& obj); #endif // BITCOIN_RPC_UTIL_H diff --git a/src/wallet/rpc/backup.cpp b/src/wallet/rpc/backup.cpp index 026acf939bb..76a736d14d1 100644 --- a/src/wallet/rpc/backup.cpp +++ b/src/wallet/rpc/backup.cpp @@ -1904,6 +1904,10 @@ RPCHelpMan restorewallet() { {RPCResult::Type::STR, "name", "The wallet name if restored successfully."}, {RPCResult::Type::STR, "warning", "Warning messages, if any, related to restoring the wallet. Multiple messages will be delimited by newlines."}, + {RPCResult::Type::ARR, "warnings", /*optional=*/true, "Warning messages, if any, related to restoring the wallet.", + { + {RPCResult::Type::STR, "", ""}, + }}, } }, RPCExamples{ @@ -1934,6 +1938,7 @@ RPCHelpMan restorewallet() UniValue obj(UniValue::VOBJ); obj.pushKV("name", wallet->GetName()); obj.pushKV("warning", Join(warnings, Untranslated("\n")).original); + PushWarnings(warnings, obj); return obj; diff --git a/src/wallet/rpc/wallet.cpp b/src/wallet/rpc/wallet.cpp index 20cd6976468..a28ddfb01b1 100644 --- a/src/wallet/rpc/wallet.cpp +++ b/src/wallet/rpc/wallet.cpp @@ -208,6 +208,10 @@ static RPCHelpMan loadwallet() { {RPCResult::Type::STR, "name", "The wallet name if loaded successfully."}, {RPCResult::Type::STR, "warning", "Warning messages, if any, related to loading the wallet. Multiple messages will be delimited by newlines."}, + {RPCResult::Type::ARR, "warnings", /*optional=*/true, "Warning messages, if any, related to loading the wallet.", + { + {RPCResult::Type::STR, "", ""}, + }}, } }, RPCExamples{ @@ -241,6 +245,7 @@ static RPCHelpMan loadwallet() UniValue obj(UniValue::VOBJ); obj.pushKV("name", wallet->GetName()); obj.pushKV("warning", Join(warnings, Untranslated("\n")).original); + PushWarnings(warnings, obj); return obj; }, @@ -336,6 +341,10 @@ static RPCHelpMan createwallet() { {RPCResult::Type::STR, "name", "The wallet name if created successfully. If the wallet was created using a full path, the wallet_name will be the full path."}, {RPCResult::Type::STR, "warning", "Warning messages, if any, related to creating the wallet. Multiple messages will be delimited by newlines."}, + {RPCResult::Type::ARR, "warnings", /*optional=*/true, "Warning messages, if any, related to creating the wallet.", + { + {RPCResult::Type::STR, "", ""}, + }}, } }, RPCExamples{ @@ -406,6 +415,7 @@ static RPCHelpMan createwallet() UniValue obj(UniValue::VOBJ); obj.pushKV("name", wallet->GetName()); obj.pushKV("warning", Join(warnings, Untranslated("\n")).original); + PushWarnings(warnings, obj); return obj; }, @@ -423,6 +433,10 @@ static RPCHelpMan unloadwallet() }, RPCResult{RPCResult::Type::OBJ, "", "", { {RPCResult::Type::STR, "warning", "Warning messages, if any, related to unloading the wallet. Multiple messages will be delimited by newlines."}, + {RPCResult::Type::ARR, "warnings", /*optional=*/true, "Warning messages, if any, related to unloading the wallet.", + { + {RPCResult::Type::STR, "", ""}, + }}, }}, RPCExamples{ HelpExampleCli("unloadwallet", "wallet_name") @@ -465,6 +479,8 @@ static RPCHelpMan unloadwallet() UniValue result(UniValue::VOBJ); result.pushKV("warning", Join(warnings, Untranslated("\n")).original); + PushWarnings(warnings, result); + return result; }, };