diff --git a/tl/generate/scheme/tonlib_api.tl b/tl/generate/scheme/tonlib_api.tl index 7ba6b6a9..c1c3966f 100644 --- a/tl/generate/scheme/tonlib_api.tl +++ b/tl/generate/scheme/tonlib_api.tl @@ -55,6 +55,8 @@ raw.message source:accountAddress destination:accountAddress value:int64 fwd_fee raw.transaction utime:int53 data:bytes transaction_id:internal.transactionId fee:int64 storage_fee:int64 other_fee:int64 in_msg:raw.message out_msgs:vector = raw.Transaction; raw.transactions transactions:vector previous_transaction_id:internal.transactionId = raw.Transactions; +raw.extMessageInfo body_hash:bytes = raw.ExtMessageInfo; + pchan.config alice_public_key:string alice_address:accountAddress bob_public_key:string bob_address:accountAddress init_timeout:int32 close_timeout:int32 channel_id:int64 = pchan.Config; raw.initialAccountState code:bytes data:bytes = InitialAccountState; @@ -246,7 +248,7 @@ getBip39Hints prefix:string = Bip39Hints; //raw.init initial_account_state:raw.initialAccountState = Ok; raw.getAccountState account_address:accountAddress = raw.FullAccountState; raw.getTransactions private_key:InputKey account_address:accountAddress from_transaction_id:internal.transactionId = raw.Transactions; -raw.sendMessage body:bytes = Ok; +raw.sendMessage body:bytes = raw.ExtMessageInfo; raw.createAndSendMessage destination:accountAddress initial_account_state:bytes data:bytes = Ok; raw.createQuery destination:accountAddress init_code:bytes init_data:bytes body:bytes = query.Info; diff --git a/tl/generate/scheme/tonlib_api.tlo b/tl/generate/scheme/tonlib_api.tlo index d99b35f3..0bf3f39e 100644 Binary files a/tl/generate/scheme/tonlib_api.tlo and b/tl/generate/scheme/tonlib_api.tlo differ diff --git a/tonlib/tonlib/TonlibClient.cpp b/tonlib/tonlib/TonlibClient.cpp index 6a31720c..6e55108d 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -2366,12 +2366,16 @@ auto to_any_promise(td::Promise&& promise) { } td::Status TonlibClient::do_request(const tonlib_api::raw_sendMessage& request, - td::Promise>&& promise) { + td::Promise>&& promise) { TRY_RESULT_PREFIX(body, vm::std_boc_deserialize(request.body_), TonlibError::InvalidBagOfCells("body")); std::ostringstream os; block::gen::t_Message_Any.print_ref(os, body); LOG(ERROR) << os.str(); - make_request(int_api::SendMessage{std::move(body)}, to_any_promise(std::move(promise))); + auto body_hash = body->get_hash().as_slice().str(); + make_request(int_api::SendMessage{std::move(body)}, + promise.wrap([body_hash = std::move(body_hash)](auto res) { + return tonlib_api::make_object(std::move(body_hash)); + })); return td::Status::OK(); } diff --git a/tonlib/tonlib/TonlibClient.h b/tonlib/tonlib/TonlibClient.h index 1d2bb38a..09c102cd 100644 --- a/tonlib/tonlib/TonlibClient.h +++ b/tonlib/tonlib/TonlibClient.h @@ -224,7 +224,7 @@ class TonlibClient : public td::actor::Actor { td::Status do_request(tonlib_api::options_setConfig& request, td::Promise>&& promise); - td::Status do_request(const tonlib_api::raw_sendMessage& request, td::Promise>&& promise); + td::Status do_request(const tonlib_api::raw_sendMessage& request, td::Promise>&& promise); td::Status do_request(const tonlib_api::raw_createAndSendMessage& request, td::Promise>&& promise); td::Status do_request(const tonlib_api::raw_createQuery& request,