Skip to content

Commit

Permalink
wallet.cpp: Implement propose_builder_transaction2 #467
Browse files Browse the repository at this point in the history
  • Loading branch information
theoreticalbts committed Dec 2, 2015
1 parent 0985516 commit 7a5c5c4
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 7 deletions.
19 changes: 16 additions & 3 deletions libraries/wallet/include/graphene/wallet/wallet.hpp
Expand Up @@ -443,9 +443,21 @@ class wallet_api
/**
* @ingroup Transaction Builder API
*/
signed_transaction propose_builder_transaction(transaction_handle_type handle,
time_point_sec expiration = time_point::now() + fc::minutes(1),
uint32_t review_period_seconds = 0, bool broadcast = true);
signed_transaction propose_builder_transaction(
transaction_handle_type handle,
time_point_sec expiration = time_point::now() + fc::minutes(1),
uint32_t review_period_seconds = 0,
bool broadcast = true
);

signed_transaction propose_builder_transaction2(
transaction_handle_type handle,
string account_name_or_id,
time_point_sec expiration = time_point::now() + fc::minutes(1),
uint32_t review_period_seconds = 0,
bool broadcast = true
);

/**
* @ingroup Transaction Builder API
*/
Expand Down Expand Up @@ -1469,6 +1481,7 @@ FC_API( graphene::wallet::wallet_api,
(preview_builder_transaction)
(sign_builder_transaction)
(propose_builder_transaction)
(propose_builder_transaction2)
(remove_builder_transaction)
(is_new)
(is_locked)
Expand Down
45 changes: 41 additions & 4 deletions libraries/wallet/wallet.cpp
Expand Up @@ -821,9 +821,10 @@ class wallet_api_impl

return _builder_transactions[transaction_handle] = sign_transaction(_builder_transactions[transaction_handle], broadcast);
}
signed_transaction propose_builder_transaction(transaction_handle_type handle,
time_point_sec expiration = time_point::now() + fc::minutes(1),
uint32_t review_period_seconds = 0, bool broadcast = true)
signed_transaction propose_builder_transaction(
transaction_handle_type handle,
time_point_sec expiration = time_point::now() + fc::minutes(1),
uint32_t review_period_seconds = 0, bool broadcast = true)
{
FC_ASSERT(_builder_transactions.count(handle));
proposal_create_operation op;
Expand All @@ -838,6 +839,28 @@ class wallet_api_impl

return trx = sign_transaction(trx, broadcast);
}

signed_transaction propose_builder_transaction2(
transaction_handle_type handle,
string account_name_or_id,
time_point_sec expiration = time_point::now() + fc::minutes(1),
uint32_t review_period_seconds = 0, bool broadcast = true)
{
FC_ASSERT(_builder_transactions.count(handle));
proposal_create_operation op;
op.fee_paying_account = get_account(account_name_or_id).get_id();
op.expiration_time = expiration;
signed_transaction& trx = _builder_transactions[handle];
std::transform(trx.operations.begin(), trx.operations.end(), std::back_inserter(op.proposed_ops),
[](const operation& op) -> op_wrapper { return op; });
if( review_period_seconds )
op.review_period_seconds = review_period_seconds;
trx.operations = {op};
_remote_db->get_global_properties().parameters.current_fees->set_fee( trx.operations.front() );

return trx = sign_transaction(trx, broadcast);
}

void remove_builder_transaction(transaction_handle_type handle)
{
_builder_transactions.erase(handle);
Expand Down Expand Up @@ -2681,11 +2704,25 @@ signed_transaction wallet_api::sign_builder_transaction(transaction_handle_type
return my->sign_builder_transaction(transaction_handle, broadcast);
}

signed_transaction wallet_api::propose_builder_transaction(transaction_handle_type handle, time_point_sec expiration, uint32_t review_period_seconds, bool broadcast)
signed_transaction wallet_api::propose_builder_transaction(
transaction_handle_type handle,
time_point_sec expiration,
uint32_t review_period_seconds,
bool broadcast)
{
return my->propose_builder_transaction(handle, expiration, review_period_seconds, broadcast);
}

signed_transaction wallet_api::propose_builder_transaction2(
transaction_handle_type handle,
string account_name_or_id,
time_point_sec expiration,
uint32_t review_period_seconds,
bool broadcast)
{
return my->propose_builder_transaction2(handle, account_name_or_id, expiration, review_period_seconds, broadcast);
}

void wallet_api::remove_builder_transaction(transaction_handle_type handle)
{
return my->remove_builder_transaction(handle);
Expand Down

0 comments on commit 7a5c5c4

Please sign in to comment.