From a6a6237a3f6937e9240937dd2a6177c84c5c36e9 Mon Sep 17 00:00:00 2001 From: levlam Date: Sat, 30 Jan 2021 23:52:16 +0300 Subject: [PATCH] Split need_group_call_participants into two functions. --- td/telegram/GroupCallManager.cpp | 26 ++++++++++++++------------ td/telegram/GroupCallManager.h | 2 ++ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/td/telegram/GroupCallManager.cpp b/td/telegram/GroupCallManager.cpp index 8243d8b5c..16586f373 100644 --- a/td/telegram/GroupCallManager.cpp +++ b/td/telegram/GroupCallManager.cpp @@ -747,7 +747,7 @@ void GroupCallManager::get_group_call(GroupCallId group_call_id, void GroupCallManager::on_update_group_call_rights(InputGroupCallId input_group_call_id) { auto group_call = get_group_call(input_group_call_id); - if (need_group_call_participants(input_group_call_id)) { + if (need_group_call_participants(input_group_call_id, group_call)) { CHECK(group_call != nullptr && group_call->is_inited); try_load_group_call_administrators(input_group_call_id, group_call->dialog_id); @@ -846,7 +846,11 @@ void GroupCallManager::finish_check_group_call_is_joined(InputGroupCallId input_ } bool GroupCallManager::need_group_call_participants(InputGroupCallId input_group_call_id) const { - auto *group_call = get_group_call(input_group_call_id); + return need_group_call_participants(input_group_call_id, get_group_call(input_group_call_id)); +} + +bool GroupCallManager::need_group_call_participants(InputGroupCallId input_group_call_id, + const GroupCall *group_call) const { if (group_call == nullptr || !group_call->is_inited || !group_call->is_active) { return false; } @@ -1505,11 +1509,10 @@ void GroupCallManager::finish_load_group_call_administrators(InputGroupCallId in return; } - if (!need_group_call_participants(input_group_call_id)) { + auto *group_call = get_group_call(input_group_call_id); + if (!need_group_call_participants(input_group_call_id, group_call)) { return; } - - auto *group_call = get_group_call(input_group_call_id); CHECK(group_call != nullptr); if (!group_call->dialog_id.is_valid() || !can_manage_group_calls(group_call->dialog_id).is_ok()) { return; @@ -1810,10 +1813,10 @@ void GroupCallManager::load_group_call_participants(GroupCallId group_call_id, i TRY_RESULT_PROMISE(promise, input_group_call_id, get_input_group_call_id(group_call_id)); - if (!need_group_call_participants(input_group_call_id)) { + auto *group_call = get_group_call(input_group_call_id); + if (!need_group_call_participants(input_group_call_id, group_call)) { return promise.set_error(Status::Error(400, "Can't load group call participants")); } - auto *group_call = get_group_call(input_group_call_id); CHECK(group_call != nullptr && group_call->is_inited); if (group_call->loaded_all_participants) { return promise.set_value(Unit()); @@ -1987,7 +1990,7 @@ InputGroupCallId GroupCallManager::update_group_call(const tl_object_ptraudio_source; *group_call = std::move(call); - if (need_group_call_participants(input_group_call_id)) { + if (need_group_call_participants(input_group_call_id, group_call)) { // init version group_call->version = call.version; if (process_pending_group_call_participant_updates(input_group_call_id)) { @@ -2028,7 +2031,7 @@ InputGroupCallId GroupCallManager::update_group_call(const tl_object_ptrparticipant_count = call.participant_count; need_update = true; } - if (need_group_call_participants(input_group_call_id) && !join_params.empty()) { + if (need_group_call_participants(input_group_call_id, group_call) && !join_params.empty()) { LOG(INFO) << "Init " << call.group_call_id << " version to " << call.version; if (group_call->can_self_unmute != call.can_self_unmute) { group_call->can_self_unmute = call.can_self_unmute; @@ -2058,11 +2061,10 @@ InputGroupCallId GroupCallManager::update_group_call(const tl_object_ptris_inited); if (group_call->version == -1) { return; diff --git a/td/telegram/GroupCallManager.h b/td/telegram/GroupCallManager.h index aa7602cfa..462f46427 100644 --- a/td/telegram/GroupCallManager.h +++ b/td/telegram/GroupCallManager.h @@ -137,6 +137,8 @@ class GroupCallManager : public Actor { bool need_group_call_participants(InputGroupCallId input_group_call_id) const; + bool need_group_call_participants(InputGroupCallId input_group_call_id, const GroupCall *group_call) const; + bool process_pending_group_call_participant_updates(InputGroupCallId input_group_call_id); void sync_group_call_participants(InputGroupCallId input_group_call_id);