diff --git a/tl/generate/scheme/tonlib_api.tl b/tl/generate/scheme/tonlib_api.tl index 599cb21f..c4d8eb98 100644 --- a/tl/generate/scheme/tonlib_api.tl +++ b/tl/generate/scheme/tonlib_api.tl @@ -55,7 +55,7 @@ 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; +raw.extMessageInfo 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; @@ -251,7 +251,8 @@ 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 = raw.ExtMessageInfo; +raw.sendMessage body:bytes = Ok; +raw.sendMessageReturnHash 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 6ba7fea3..69cf1595 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 0d265c65..e8a9ac44 100644 --- a/tonlib/tonlib/TonlibClient.cpp +++ b/tonlib/tonlib/TonlibClient.cpp @@ -2366,15 +2366,22 @@ 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(); - auto body_hash = body->get_hash().as_slice().str(); + make_request(int_api::SendMessage{std::move(body)}, to_any_promise(std::move(promise))); + return td::Status::OK(); +} + +td::Status TonlibClient::do_request(const tonlib_api::raw_sendMessageReturnHash& request, + td::Promise>&& promise) { + TRY_RESULT_PREFIX(body, vm::std_boc_deserialize(request.body_), TonlibError::InvalidBagOfCells("body")); + auto 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)); + promise.wrap([hash = std::move(hash)](auto res) { + return tonlib_api::make_object(std::move(hash)); })); return td::Status::OK(); } diff --git a/tonlib/tonlib/TonlibClient.h b/tonlib/tonlib/TonlibClient.h index 3ce68ee4..10c83f21 100644 --- a/tonlib/tonlib/TonlibClient.h +++ b/tonlib/tonlib/TonlibClient.h @@ -224,7 +224,9 @@ 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_sendMessageReturnHash& 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,