diff --git a/td/telegram/GroupCallManager.cpp b/td/telegram/GroupCallManager.cpp index b3e9e3a75..12452434f 100644 --- a/td/telegram/GroupCallManager.cpp +++ b/td/telegram/GroupCallManager.cpp @@ -1895,10 +1895,27 @@ void GroupCallManager::get_group_call_stream_segment(GroupCallId group_call_id, return promise.set_error(Status::Error(400, "Group call can't be streamed")); } - td_->create_handler(std::move(promise)) + auto query_promise = PromiseCreator::lambda( + [actor_id = actor_id(this), input_group_call_id, promise = std::move(promise)](Result &&result) mutable { + send_closure(actor_id, &GroupCallManager::finish_get_group_call_stream_segment, input_group_call_id, + std::move(result), std::move(promise)); + }); + td_->create_handler(std::move(query_promise)) ->send(input_group_call_id, group_call->stream_dc_id, time_offset, scale); } +void GroupCallManager::finish_get_group_call_stream_segment(InputGroupCallId input_group_call_id, + Result &&result, Promise &&promise) { + auto *group_call = get_group_call(input_group_call_id); + CHECK(group_call != nullptr); + if (group_call->is_inited && check_group_call_is_joined_timeout_.has_timeout(group_call->group_call_id.get())) { + check_group_call_is_joined_timeout_.set_timeout_in(group_call->group_call_id.get(), + CHECK_GROUP_CALL_IS_JOINED_TIMEOUT); + } + + promise.set_result(std::move(result)); +} + void GroupCallManager::join_group_call(GroupCallId group_call_id, DialogId as_dialog_id, td_api::object_ptr &&payload, int32 audio_source, bool is_muted, const string &invite_hash, diff --git a/td/telegram/GroupCallManager.h b/td/telegram/GroupCallManager.h index 251894be5..6907bac9c 100644 --- a/td/telegram/GroupCallManager.h +++ b/td/telegram/GroupCallManager.h @@ -164,6 +164,9 @@ class GroupCallManager : public Actor { void finish_get_group_call(InputGroupCallId input_group_call_id, Result> &&result); + void finish_get_group_call_stream_segment(InputGroupCallId input_group_call_id, Result &&result, + Promise &&promise); + void finish_check_group_call_is_joined(InputGroupCallId input_group_call_id, int32 audio_source, Result &&result);