From c00ca6d5bc945d7e4fd57841ad5c1a5f39c4db8e Mon Sep 17 00:00:00 2001 From: sowle Date: Wed, 29 Apr 2020 21:06:08 +0300 Subject: [PATCH] tx_receiver/tx_receiver_old handling fixed --- .../currency_format_utils_abstract.h | 1 + src/wallet/wallet2.cpp | 22 +++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/currency_core/currency_format_utils_abstract.h b/src/currency_core/currency_format_utils_abstract.h index cd739bf0..a796c974 100644 --- a/src/currency_core/currency_format_utils_abstract.h +++ b/src/currency_core/currency_format_utils_abstract.h @@ -107,6 +107,7 @@ namespace currency return false; } //--------------------------------------------------------------- + // callback should return true to continue iterating through the container template bool handle_2_alternative_types_in_variant_container(const container_t& container, callback_t& cb) { diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 757d862f..73a6fb83 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -473,22 +473,22 @@ void wallet2::prepare_wti_decrypted_attachments(wallet_public::wallet_transfer_i if (wti.is_income) { account_public_address sender_address = AUTO_VAL_INIT(sender_address); - wti.show_sender = handle_2_alternative_types_in_variant_container(decrypted_att, [&](const tx_payer& p) { sender_address = p.acc_addr; return false; } ); + wti.show_sender = handle_2_alternative_types_in_variant_container(decrypted_att, [&](const tx_payer& p) { sender_address = p.acc_addr; return false; /* <- continue? */ } ); if (wti.show_sender) wti.remote_addresses.push_back(currency::get_account_address_as_str(sender_address)); } else { - //TODO: actually recipients could be more then one, handle it in future - //tx_receiver tr = AUTO_VAL_INIT(tr); - //if (!wti.remote_addresses.size() && get_type_in_variant_container(decrypted_att, tr)) - // wti.remote_addresses.push_back(currency::get_account_address_as_str(tr.acc_addr)); - - account_public_address receiver_address = AUTO_VAL_INIT(receiver_address); - handle_2_alternative_types_in_variant_container(decrypted_att, [&](const tx_payer& p) { - wti.remote_addresses.push_back(currency::get_account_address_as_str(p.acc_addr)); - return true; // continue iterating through the container - }); + if (wti.remote_addresses.empty()) + { + account_public_address receiver_address = AUTO_VAL_INIT(receiver_address); + handle_2_alternative_types_in_variant_container(decrypted_att, [&](const tx_receiver& p) { + std::string addr_str = currency::get_account_address_as_str(p.acc_addr); + wti.remote_addresses.push_back(addr_str); + LOG_PRINT_YELLOW("prepare_wti_decrypted_attachments, income=false, wti.amount = " << print_money_brief(wti.amount) << ", rem. addr = " << addr_str, LOG_LEVEL_0); + return true; // continue iterating through the container + }); + } } currency::tx_comment cm;