wallet_rpc_server: add locked field to get_transfers/get_{bulk_,}_payments

Much easier to work with than the raw unlock_time field
This commit is contained in:
moneromooo-monero 2019-05-16 22:03:42 +00:00
parent 1b93cb74bb
commit 340774341f
No known key found for this signature in database
GPG Key ID: 686F07454D6CEFC3
2 changed files with 12 additions and 1 deletions

View File

@ -326,6 +326,7 @@ namespace tools
entry.timestamp = pd.m_timestamp; entry.timestamp = pd.m_timestamp;
entry.amount = pd.m_amount; entry.amount = pd.m_amount;
entry.unlock_time = pd.m_unlock_time; entry.unlock_time = pd.m_unlock_time;
entry.locked = !m_wallet->is_transfer_unlocked(pd.m_unlock_time, pd.m_block_height);
entry.fee = pd.m_fee; entry.fee = pd.m_fee;
entry.note = m_wallet->get_tx_note(pd.m_tx_hash); entry.note = m_wallet->get_tx_note(pd.m_tx_hash);
entry.type = pd.m_coinbase ? "block" : "in"; entry.type = pd.m_coinbase ? "block" : "in";
@ -344,6 +345,7 @@ namespace tools
entry.height = pd.m_block_height; entry.height = pd.m_block_height;
entry.timestamp = pd.m_timestamp; entry.timestamp = pd.m_timestamp;
entry.unlock_time = pd.m_unlock_time; entry.unlock_time = pd.m_unlock_time;
entry.locked = !m_wallet->is_transfer_unlocked(pd.m_unlock_time, pd.m_block_height);
entry.fee = pd.m_amount_in - pd.m_amount_out; entry.fee = pd.m_amount_in - pd.m_amount_out;
uint64_t change = pd.m_change == (uint64_t)-1 ? 0 : pd.m_change; // change may not be known uint64_t change = pd.m_change == (uint64_t)-1 ? 0 : pd.m_change; // change may not be known
entry.amount = pd.m_amount_in - change - entry.fee; entry.amount = pd.m_amount_in - change - entry.fee;
@ -377,6 +379,7 @@ namespace tools
entry.fee = pd.m_amount_in - pd.m_amount_out; entry.fee = pd.m_amount_in - pd.m_amount_out;
entry.amount = pd.m_amount_in - pd.m_change - entry.fee; entry.amount = pd.m_amount_in - pd.m_change - entry.fee;
entry.unlock_time = pd.m_tx.unlock_time; entry.unlock_time = pd.m_tx.unlock_time;
entry.locked = true;
entry.note = m_wallet->get_tx_note(txid); entry.note = m_wallet->get_tx_note(txid);
for (const auto &d: pd.m_dests) { for (const auto &d: pd.m_dests) {
@ -405,6 +408,7 @@ namespace tools
entry.timestamp = pd.m_timestamp; entry.timestamp = pd.m_timestamp;
entry.amount = pd.m_amount; entry.amount = pd.m_amount;
entry.unlock_time = pd.m_unlock_time; entry.unlock_time = pd.m_unlock_time;
entry.locked = true;
entry.fee = pd.m_fee; entry.fee = pd.m_fee;
entry.note = m_wallet->get_tx_note(pd.m_tx_hash); entry.note = m_wallet->get_tx_note(pd.m_tx_hash);
entry.double_spend_seen = ppd.m_double_spend_seen; entry.double_spend_seen = ppd.m_double_spend_seen;
@ -1698,6 +1702,7 @@ namespace tools
rpc_payment.amount = payment.m_amount; rpc_payment.amount = payment.m_amount;
rpc_payment.block_height = payment.m_block_height; rpc_payment.block_height = payment.m_block_height;
rpc_payment.unlock_time = payment.m_unlock_time; rpc_payment.unlock_time = payment.m_unlock_time;
rpc_payment.locked = !m_wallet->is_transfer_unlocked(payment.m_unlock_time, payment.m_block_height);
rpc_payment.subaddr_index = payment.m_subaddr_index; rpc_payment.subaddr_index = payment.m_subaddr_index;
rpc_payment.address = m_wallet->get_subaddress_as_str(payment.m_subaddr_index); rpc_payment.address = m_wallet->get_subaddress_as_str(payment.m_subaddr_index);
res.payments.push_back(rpc_payment); res.payments.push_back(rpc_payment);
@ -1727,6 +1732,7 @@ namespace tools
rpc_payment.unlock_time = payment.second.m_unlock_time; rpc_payment.unlock_time = payment.second.m_unlock_time;
rpc_payment.subaddr_index = payment.second.m_subaddr_index; rpc_payment.subaddr_index = payment.second.m_subaddr_index;
rpc_payment.address = m_wallet->get_subaddress_as_str(payment.second.m_subaddr_index); rpc_payment.address = m_wallet->get_subaddress_as_str(payment.second.m_subaddr_index);
rpc_payment.locked = !m_wallet->is_transfer_unlocked(payment.second.m_unlock_time, payment.second.m_block_height);
res.payments.push_back(std::move(rpc_payment)); res.payments.push_back(std::move(rpc_payment));
} }
@ -1781,6 +1787,7 @@ namespace tools
rpc_payment.unlock_time = payment.m_unlock_time; rpc_payment.unlock_time = payment.m_unlock_time;
rpc_payment.subaddr_index = payment.m_subaddr_index; rpc_payment.subaddr_index = payment.m_subaddr_index;
rpc_payment.address = m_wallet->get_subaddress_as_str(payment.m_subaddr_index); rpc_payment.address = m_wallet->get_subaddress_as_str(payment.m_subaddr_index);
rpc_payment.locked = !m_wallet->is_transfer_unlocked(payment.m_unlock_time, payment.m_block_height);
res.payments.push_back(std::move(rpc_payment)); res.payments.push_back(std::move(rpc_payment));
} }
} }

View File

@ -47,7 +47,7 @@
// advance which version they will stop working with // advance which version they will stop working with
// Don't go over 32767 for any of these // Don't go over 32767 for any of these
#define WALLET_RPC_VERSION_MAJOR 1 #define WALLET_RPC_VERSION_MAJOR 1
#define WALLET_RPC_VERSION_MINOR 14 #define WALLET_RPC_VERSION_MINOR 15
#define MAKE_WALLET_RPC_VERSION(major,minor) (((major)<<16)|(minor)) #define MAKE_WALLET_RPC_VERSION(major,minor) (((major)<<16)|(minor))
#define WALLET_RPC_VERSION MAKE_WALLET_RPC_VERSION(WALLET_RPC_VERSION_MAJOR, WALLET_RPC_VERSION_MINOR) #define WALLET_RPC_VERSION MAKE_WALLET_RPC_VERSION(WALLET_RPC_VERSION_MAJOR, WALLET_RPC_VERSION_MINOR)
namespace tools namespace tools
@ -912,6 +912,7 @@ namespace wallet_rpc
uint64_t amount; uint64_t amount;
uint64_t block_height; uint64_t block_height;
uint64_t unlock_time; uint64_t unlock_time;
bool locked;
cryptonote::subaddress_index subaddr_index; cryptonote::subaddress_index subaddr_index;
std::string address; std::string address;
@ -921,6 +922,7 @@ namespace wallet_rpc
KV_SERIALIZE(amount) KV_SERIALIZE(amount)
KV_SERIALIZE(block_height) KV_SERIALIZE(block_height)
KV_SERIALIZE(unlock_time) KV_SERIALIZE(unlock_time)
KV_SERIALIZE(locked)
KV_SERIALIZE(subaddr_index) KV_SERIALIZE(subaddr_index)
KV_SERIALIZE(address) KV_SERIALIZE(address)
END_KV_SERIALIZE_MAP() END_KV_SERIALIZE_MAP()
@ -1360,6 +1362,7 @@ namespace wallet_rpc
std::list<transfer_destination> destinations; std::list<transfer_destination> destinations;
std::string type; std::string type;
uint64_t unlock_time; uint64_t unlock_time;
bool locked;
cryptonote::subaddress_index subaddr_index; cryptonote::subaddress_index subaddr_index;
std::vector<cryptonote::subaddress_index> subaddr_indices; std::vector<cryptonote::subaddress_index> subaddr_indices;
std::string address; std::string address;
@ -1378,6 +1381,7 @@ namespace wallet_rpc
KV_SERIALIZE(destinations); KV_SERIALIZE(destinations);
KV_SERIALIZE(type); KV_SERIALIZE(type);
KV_SERIALIZE(unlock_time) KV_SERIALIZE(unlock_time)
KV_SERIALIZE(locked)
KV_SERIALIZE(subaddr_index); KV_SERIALIZE(subaddr_index);
KV_SERIALIZE(subaddr_indices); KV_SERIALIZE(subaddr_indices);
KV_SERIALIZE(address); KV_SERIALIZE(address);