Store DialogId in information about group call.

This commit is contained in:
levlam 2020-12-13 14:52:07 +03:00
parent b015ada0dc
commit 6fdf68bad4
6 changed files with 50 additions and 52 deletions

View File

@ -5949,7 +5949,7 @@ void ContactsManager::create_channel_voice_chat(DialogId dialog_id, Promise<Grou
std::move(promise)); std::move(promise));
} }
}); });
send_closure(G()->group_call_manager(), &GroupCallManager::create_voice_chat, channel_id, std::move(new_promise)); send_closure(G()->group_call_manager(), &GroupCallManager::create_voice_chat, dialog_id, std::move(new_promise));
} }
void ContactsManager::on_create_channel_group_call(ChannelId channel_id, InputGroupCallId input_group_call_id, void ContactsManager::on_create_channel_group_call(ChannelId channel_id, InputGroupCallId input_group_call_id,
@ -5976,7 +5976,7 @@ void ContactsManager::on_create_channel_group_call(ChannelId channel_id, InputGr
channel_full->is_changed = true; channel_full->is_changed = true;
update_channel_full(channel_full, channel_id); update_channel_full(channel_full, channel_id);
} }
promise.set_value(td_->group_call_manager_->get_group_call_id(input_group_call_id, channel_id)); promise.set_value(td_->group_call_manager_->get_group_call_id(input_group_call_id, DialogId(channel_id)));
} }
void ContactsManager::get_channel_statistics_dc_id(DialogId dialog_id, bool for_full_statistics, void ContactsManager::get_channel_statistics_dc_id(DialogId dialog_id, bool for_full_statistics,
@ -13169,7 +13169,7 @@ GroupCallId ContactsManager::get_channel_active_group_call_id(ChannelId channel_
return GroupCallId(); return GroupCallId();
} }
} }
return td_->group_call_manager_->get_group_call_id(channel_full->active_group_call_id, channel_id); return td_->group_call_manager_->get_group_call_id(channel_full->active_group_call_id, DialogId(channel_id));
} }
bool ContactsManager::have_channel(ChannelId channel_id) const { bool ContactsManager::have_channel(ChannelId channel_id) const {
@ -14457,7 +14457,7 @@ tl_object_ptr<td_api::supergroupFullInfo> ContactsManager::get_supergroup_full_i
get_chat_photo_object(td_->file_manager_.get(), channel_full->photo), channel_full->description, get_chat_photo_object(td_->file_manager_.get(), channel_full->photo), channel_full->description,
channel_full->participant_count, channel_full->administrator_count, channel_full->restricted_count, channel_full->participant_count, channel_full->administrator_count, channel_full->restricted_count,
channel_full->banned_count, DialogId(channel_full->linked_channel_id).get(), channel_full->banned_count, DialogId(channel_full->linked_channel_id).get(),
td_->group_call_manager_->get_group_call_id(channel_full->active_group_call_id, channel_id).get(), td_->group_call_manager_->get_group_call_id(channel_full->active_group_call_id, DialogId(channel_id)).get(),
channel_full->slow_mode_delay, slow_mode_delay_expires_in, channel_full->can_get_participants, channel_full->slow_mode_delay, slow_mode_delay_expires_in, channel_full->can_get_participants,
channel_full->can_set_username, channel_full->can_set_sticker_set, channel_full->can_set_location, channel_full->can_set_username, channel_full->can_set_sticker_set, channel_full->can_set_location,
channel_full->can_view_statistics, channel_full->is_all_history_available, channel_full->sticker_set_id.get(), channel_full->can_view_statistics, channel_full->is_all_history_available, channel_full->sticker_set_id.get(),

View File

@ -24,16 +24,16 @@ namespace td {
class CreateGroupCallQuery : public Td::ResultHandler { class CreateGroupCallQuery : public Td::ResultHandler {
Promise<InputGroupCallId> promise_; Promise<InputGroupCallId> promise_;
ChannelId channel_id_; DialogId dialog_id_;
public: public:
explicit CreateGroupCallQuery(Promise<InputGroupCallId> &&promise) : promise_(std::move(promise)) { explicit CreateGroupCallQuery(Promise<InputGroupCallId> &&promise) : promise_(std::move(promise)) {
} }
void send(ChannelId channel_id) { void send(DialogId dialog_id) {
channel_id_ = channel_id; dialog_id_ = dialog_id;
auto input_channel = td->contacts_manager_->get_input_channel(channel_id); auto input_channel = td->contacts_manager_->get_input_channel(dialog_id.get_channel_id());
CHECK(input_channel != nullptr); CHECK(input_channel != nullptr);
send_query(G()->net_query_creator().create( send_query(G()->net_query_creator().create(
@ -62,7 +62,7 @@ class CreateGroupCallQuery : public Td::ResultHandler {
} }
void on_error(uint64 id, Status status) override { void on_error(uint64 id, Status status) override {
td->contacts_manager_->on_get_channel_error(channel_id_, status, "CreateGroupCallQuery"); td->messages_manager_->on_get_dialog_error(dialog_id_, status, "CreateGroupCallQuery");
promise_.set_error(std::move(status)); promise_.set_error(std::move(status));
} }
}; };
@ -400,7 +400,7 @@ class DiscardGroupCallQuery : public Td::ResultHandler {
struct GroupCallManager::GroupCall { struct GroupCallManager::GroupCall {
GroupCallId group_call_id; GroupCallId group_call_id;
ChannelId channel_id; DialogId dialog_id;
bool is_inited = false; bool is_inited = false;
bool is_active = false; bool is_active = false;
bool is_joined = false; bool is_joined = false;
@ -473,7 +473,7 @@ void GroupCallManager::on_send_speaking_action_timeout(GroupCallId group_call_id
auto input_group_call_id = get_input_group_call_id(group_call_id).move_as_ok(); auto input_group_call_id = get_input_group_call_id(group_call_id).move_as_ok();
auto *group_call = get_group_call(input_group_call_id); auto *group_call = get_group_call(input_group_call_id);
CHECK(group_call != nullptr && group_call->is_inited && group_call->channel_id.is_valid()); CHECK(group_call != nullptr && group_call->is_inited && group_call->dialog_id.is_valid());
if (!group_call->is_joined || !group_call->is_speaking) { if (!group_call->is_joined || !group_call->is_speaking) {
return; return;
} }
@ -482,8 +482,8 @@ void GroupCallManager::on_send_speaking_action_timeout(GroupCallId group_call_id
pending_send_speaking_action_timeout_.add_timeout_in(group_call_id.get(), 4.0); pending_send_speaking_action_timeout_.add_timeout_in(group_call_id.get(), 4.0);
td_->messages_manager_->send_dialog_action(DialogId(group_call->channel_id), MessageId(), td_->messages_manager_->send_dialog_action(group_call->dialog_id, MessageId(), DialogAction::get_speaking_action(),
DialogAction::get_speaking_action(), Promise<Unit>()); Promise<Unit>());
} }
void GroupCallManager::on_recent_speaker_update_timeout_callback(void *group_call_manager_ptr, void GroupCallManager::on_recent_speaker_update_timeout_callback(void *group_call_manager_ptr,
@ -531,11 +531,11 @@ void GroupCallManager::on_sync_participants_timeout(GroupCallId group_call_id) {
sync_group_call_participants(input_group_call_id); sync_group_call_participants(input_group_call_id);
} }
GroupCallId GroupCallManager::get_group_call_id(InputGroupCallId input_group_call_id, ChannelId channel_id) { GroupCallId GroupCallManager::get_group_call_id(InputGroupCallId input_group_call_id, DialogId dialog_id) {
if (td_->auth_manager_->is_bot() || !input_group_call_id.is_valid()) { if (td_->auth_manager_->is_bot() || !input_group_call_id.is_valid()) {
return GroupCallId(); return GroupCallId();
} }
return add_group_call(input_group_call_id, channel_id)->group_call_id; return add_group_call(input_group_call_id, dialog_id)->group_call_id;
} }
Result<InputGroupCallId> GroupCallManager::get_input_group_call_id(GroupCallId group_call_id) { Result<InputGroupCallId> GroupCallManager::get_input_group_call_id(GroupCallId group_call_id) {
@ -558,16 +558,16 @@ GroupCallId GroupCallManager::get_next_group_call_id(InputGroupCallId input_grou
} }
GroupCallManager::GroupCall *GroupCallManager::add_group_call(InputGroupCallId input_group_call_id, GroupCallManager::GroupCall *GroupCallManager::add_group_call(InputGroupCallId input_group_call_id,
ChannelId channel_id) { DialogId dialog_id) {
CHECK(!td_->auth_manager_->is_bot()); CHECK(!td_->auth_manager_->is_bot());
auto &group_call = group_calls_[input_group_call_id]; auto &group_call = group_calls_[input_group_call_id];
if (group_call == nullptr) { if (group_call == nullptr) {
group_call = make_unique<GroupCall>(); group_call = make_unique<GroupCall>();
group_call->group_call_id = get_next_group_call_id(input_group_call_id); group_call->group_call_id = get_next_group_call_id(input_group_call_id);
LOG(INFO) << "Add " << input_group_call_id << " from " << channel_id << " as " << group_call->group_call_id; LOG(INFO) << "Add " << input_group_call_id << " from " << dialog_id << " as " << group_call->group_call_id;
} }
if (!group_call->channel_id.is_valid()) { if (!group_call->dialog_id.is_valid()) {
group_call->channel_id = channel_id; group_call->dialog_id = dialog_id;
} }
return group_call.get(); return group_call.get();
} }
@ -590,8 +590,8 @@ GroupCallManager::GroupCall *GroupCallManager::get_group_call(InputGroupCallId i
} }
} }
void GroupCallManager::create_voice_chat(ChannelId channel_id, Promise<InputGroupCallId> &&promise) { void GroupCallManager::create_voice_chat(DialogId dialog_id, Promise<InputGroupCallId> &&promise) {
td_->create_handler<CreateGroupCallQuery>(std::move(promise))->send(channel_id); td_->create_handler<CreateGroupCallQuery>(std::move(promise))->send(dialog_id);
} }
void GroupCallManager::get_group_call(GroupCallId group_call_id, void GroupCallManager::get_group_call(GroupCallId group_call_id,
@ -630,7 +630,7 @@ void GroupCallManager::finish_get_group_call(InputGroupCallId input_group_call_i
if (result.is_ok()) { if (result.is_ok()) {
td_->contacts_manager_->on_get_users(std::move(result.ok_ref()->users_), "finish_get_group_call"); td_->contacts_manager_->on_get_users(std::move(result.ok_ref()->users_), "finish_get_group_call");
if (update_group_call(result.ok()->call_, ChannelId()) != input_group_call_id) { if (update_group_call(result.ok()->call_, DialogId()) != input_group_call_id) {
LOG(ERROR) << "Expected " << input_group_call_id << ", but received " << to_string(result.ok()); LOG(ERROR) << "Expected " << input_group_call_id << ", but received " << to_string(result.ok());
result = Status::Error(500, "Receive another group call"); result = Status::Error(500, "Receive another group call");
} else { } else {
@ -1241,7 +1241,7 @@ void GroupCallManager::set_group_call_participant_is_speaking(GroupCallId group_
on_user_speaking_in_group_call(group_call_id, user_id, date, recursive); on_user_speaking_in_group_call(group_call_id, user_id, date, recursive);
} }
if (group_call->source == source && !group_call->channel_id.is_valid() && group_call->is_speaking != is_speaking) { if (group_call->source == source && !group_call->dialog_id.is_valid() && group_call->is_speaking != is_speaking) {
group_call->is_speaking = is_speaking; group_call->is_speaking = is_speaking;
if (is_speaking) { if (is_speaking) {
pending_send_speaking_action_timeout_.add_timeout_in(group_call_id.get(), 0.0); pending_send_speaking_action_timeout_.add_timeout_in(group_call_id.get(), 0.0);
@ -1348,17 +1348,16 @@ void GroupCallManager::discard_group_call(GroupCallId group_call_id, Promise<Uni
td_->create_handler<DiscardGroupCallQuery>(std::move(promise))->send(input_group_call_id); td_->create_handler<DiscardGroupCallQuery>(std::move(promise))->send(input_group_call_id);
} }
void GroupCallManager::on_update_group_call(tl_object_ptr<telegram_api::GroupCall> group_call_ptr, void GroupCallManager::on_update_group_call(tl_object_ptr<telegram_api::GroupCall> group_call_ptr, DialogId dialog_id) {
ChannelId channel_id) {
if (td_->auth_manager_->is_bot()) { if (td_->auth_manager_->is_bot()) {
LOG(ERROR) << "Receive " << to_string(group_call_ptr); LOG(ERROR) << "Receive " << to_string(group_call_ptr);
return; return;
} }
if (!channel_id.is_valid()) { if (!dialog_id.is_valid()) {
LOG(ERROR) << "Receive " << to_string(group_call_ptr) << " in invalid " << channel_id; LOG(ERROR) << "Receive " << to_string(group_call_ptr) << " in invalid " << dialog_id;
channel_id = ChannelId(); dialog_id = DialogId();
} }
auto input_group_call_id = update_group_call(group_call_ptr, channel_id); auto input_group_call_id = update_group_call(group_call_ptr, dialog_id);
if (input_group_call_id.is_valid()) { if (input_group_call_id.is_valid()) {
LOG(INFO) << "Update " << input_group_call_id; LOG(INFO) << "Update " << input_group_call_id;
} else { } else {
@ -1397,7 +1396,7 @@ void GroupCallManager::try_clear_group_call_participants(InputGroupCallId input_
} }
InputGroupCallId GroupCallManager::update_group_call(const tl_object_ptr<telegram_api::GroupCall> &group_call_ptr, InputGroupCallId GroupCallManager::update_group_call(const tl_object_ptr<telegram_api::GroupCall> &group_call_ptr,
ChannelId channel_id) { DialogId dialog_id) {
CHECK(group_call_ptr != nullptr); CHECK(group_call_ptr != nullptr);
InputGroupCallId input_group_call_id; InputGroupCallId input_group_call_id;
@ -1434,11 +1433,11 @@ InputGroupCallId GroupCallManager::update_group_call(const tl_object_ptr<telegra
} }
bool need_update = false; bool need_update = false;
auto *group_call = add_group_call(input_group_call_id, channel_id); auto *group_call = add_group_call(input_group_call_id, dialog_id);
call.group_call_id = group_call->group_call_id; call.group_call_id = group_call->group_call_id;
call.channel_id = channel_id.is_valid() ? channel_id : group_call->channel_id; call.dialog_id = dialog_id.is_valid() ? dialog_id : group_call->dialog_id;
if (!group_call->channel_id.is_valid()) { if (!group_call->dialog_id.is_valid()) {
group_call->channel_id = channel_id; group_call->dialog_id = dialog_id;
} }
if (!group_call->is_inited) { if (!group_call->is_inited) {
*group_call = std::move(call); *group_call = std::move(call);
@ -1450,8 +1449,8 @@ InputGroupCallId GroupCallManager::update_group_call(const tl_object_ptr<telegra
// always update to an ended call, droping also is_joined and is_speaking flags // always update to an ended call, droping also is_joined and is_speaking flags
*group_call = std::move(call); *group_call = std::move(call);
need_update = true; need_update = true;
if (group_call->channel_id.is_valid()) { if (group_call->dialog_id.is_valid()) {
td_->contacts_manager_->on_update_channel_group_call(group_call->channel_id, false, false); td_->contacts_manager_->on_update_channel_group_call(group_call->dialog_id.get_channel_id(), false, false);
} }
} else { } else {
auto mute_flags_changed = auto mute_flags_changed =
@ -1479,8 +1478,8 @@ InputGroupCallId GroupCallManager::update_group_call(const tl_object_ptr<telegra
} }
} }
} }
if (group_call->channel_id.is_valid()) { if (group_call->dialog_id.is_valid()) {
td_->contacts_manager_->on_update_channel_group_call(group_call->channel_id, true, td_->contacts_manager_->on_update_channel_group_call(group_call->dialog_id.get_channel_id(), true,
group_call->participant_count == 0); group_call->participant_count == 0);
} }
} }
@ -1541,7 +1540,7 @@ void GroupCallManager::on_user_speaking_in_group_call(GroupCallId group_call_id,
if (!td_->contacts_manager_->have_user_force(user_id)) { if (!td_->contacts_manager_->have_user_force(user_id)) {
if (recursive) { if (recursive) {
LOG(ERROR) << "Failed to find speaking " << user_id << " from " << input_group_call_id << " in " LOG(ERROR) << "Failed to find speaking " << user_id << " from " << input_group_call_id << " in "
<< group_call->channel_id; << group_call->dialog_id;
} else { } else {
auto query_promise = PromiseCreator::lambda([actor_id = actor_id(this), group_call_id, user_id, auto query_promise = PromiseCreator::lambda([actor_id = actor_id(this), group_call_id, user_id,
date](Result<Unit> &&result) { date](Result<Unit> &&result) {
@ -1556,7 +1555,7 @@ void GroupCallManager::on_user_speaking_in_group_call(GroupCallId group_call_id,
} }
LOG(INFO) << "Add " << user_id << " as recent speaker at " << date << " in " << input_group_call_id << " from " LOG(INFO) << "Add " << user_id << " as recent speaker at " << date << " in " << input_group_call_id << " from "
<< group_call->channel_id; << group_call->dialog_id;
auto &recent_speakers = group_call_recent_speakers_[group_call_id]; auto &recent_speakers = group_call_recent_speakers_[group_call_id];
if (recent_speakers == nullptr) { if (recent_speakers == nullptr) {
recent_speakers = make_unique<GroupCallRecentSpeakers>(); recent_speakers = make_unique<GroupCallRecentSpeakers>();

View File

@ -6,7 +6,7 @@
// //
#pragma once #pragma once
#include "td/telegram/ChannelId.h" #include "td/telegram/DialogId.h"
#include "td/telegram/GroupCallId.h" #include "td/telegram/GroupCallId.h"
#include "td/telegram/GroupCallParticipant.h" #include "td/telegram/GroupCallParticipant.h"
#include "td/telegram/InputGroupCallId.h" #include "td/telegram/InputGroupCallId.h"
@ -35,9 +35,9 @@ class GroupCallManager : public Actor {
GroupCallManager &operator=(GroupCallManager &&) = delete; GroupCallManager &operator=(GroupCallManager &&) = delete;
~GroupCallManager() override; ~GroupCallManager() override;
GroupCallId get_group_call_id(InputGroupCallId input_group_call_id, ChannelId channel_id); GroupCallId get_group_call_id(InputGroupCallId input_group_call_id, DialogId dialog_id);
void create_voice_chat(ChannelId channel_id, Promise<InputGroupCallId> &&promise); void create_voice_chat(DialogId dialog_id, Promise<InputGroupCallId> &&promise);
void get_group_call(GroupCallId group_call_id, Promise<td_api::object_ptr<td_api::groupCall>> &&promise); void get_group_call(GroupCallId group_call_id, Promise<td_api::object_ptr<td_api::groupCall>> &&promise);
@ -63,7 +63,7 @@ class GroupCallManager : public Actor {
void discard_group_call(GroupCallId group_call_id, Promise<Unit> &&promise); void discard_group_call(GroupCallId group_call_id, Promise<Unit> &&promise);
void on_update_group_call(tl_object_ptr<telegram_api::GroupCall> group_call_ptr, ChannelId channel_id); void on_update_group_call(tl_object_ptr<telegram_api::GroupCall> group_call_ptr, DialogId dialog_id);
void on_user_speaking_in_group_call(GroupCallId group_call_id, UserId user_id, int32 date, bool recursive = false); void on_user_speaking_in_group_call(GroupCallId group_call_id, UserId user_id, int32 date, bool recursive = false);
@ -104,7 +104,7 @@ class GroupCallManager : public Actor {
GroupCallId get_next_group_call_id(InputGroupCallId input_group_call_id); GroupCallId get_next_group_call_id(InputGroupCallId input_group_call_id);
GroupCall *add_group_call(InputGroupCallId input_group_call_id, ChannelId channel_id); GroupCall *add_group_call(InputGroupCallId input_group_call_id, DialogId dialog_id);
const GroupCall *get_group_call(InputGroupCallId input_group_call_id) const; const GroupCall *get_group_call(InputGroupCallId input_group_call_id) const;
GroupCall *get_group_call(InputGroupCallId input_group_call_id); GroupCall *get_group_call(InputGroupCallId input_group_call_id);
@ -136,8 +136,7 @@ class GroupCallManager : public Actor {
void on_group_call_left(InputGroupCallId input_group_call_id, int32 source); void on_group_call_left(InputGroupCallId input_group_call_id, int32 source);
InputGroupCallId update_group_call(const tl_object_ptr<telegram_api::GroupCall> &group_call_ptr, InputGroupCallId update_group_call(const tl_object_ptr<telegram_api::GroupCall> &group_call_ptr, DialogId dialog_id);
ChannelId channel_id);
void on_receive_group_call_version(InputGroupCallId input_group_call_id, int32 version); void on_receive_group_call_version(InputGroupCallId input_group_call_id, int32 version);

View File

@ -4787,13 +4787,13 @@ tl_object_ptr<td_api::MessageContent> get_message_content_object(const MessageCo
case MessageContentType::GroupCall: { case MessageContentType::GroupCall: {
auto *m = static_cast<const MessageGroupCall *>(content); auto *m = static_cast<const MessageGroupCall *>(content);
return make_tl_object<td_api::messageVoiceChat>( return make_tl_object<td_api::messageVoiceChat>(
td->group_call_manager_->get_group_call_id(m->input_group_call_id, ChannelId()).get(), td->group_call_manager_->get_group_call_id(m->input_group_call_id, DialogId()).get(),
m->duration >= 0 ? max(m->duration, 1) : 0); m->duration >= 0 ? max(m->duration, 1) : 0);
} }
case MessageContentType::InviteToGroupCall: { case MessageContentType::InviteToGroupCall: {
auto *m = static_cast<const MessageInviteToGroupCall *>(content); auto *m = static_cast<const MessageInviteToGroupCall *>(content);
return make_tl_object<td_api::messageInviteVoiceChatParticipants>( return make_tl_object<td_api::messageInviteVoiceChatParticipants>(
td->group_call_manager_->get_group_call_id(m->input_group_call_id, ChannelId()).get(), td->group_call_manager_->get_group_call_id(m->input_group_call_id, DialogId()).get(),
td->contacts_manager_->get_user_ids_object(m->user_ids, "MessageInviteToGroupCall")); td->contacts_manager_->get_user_ids_object(m->user_ids, "MessageInviteToGroupCall"));
} }
default: default:

View File

@ -30785,7 +30785,7 @@ tl_object_ptr<td_api::ChatEventAction> MessagesManager::get_chat_event_action_ob
return nullptr; return nullptr;
} }
return make_tl_object<td_api::chatEventVoiceChatCreated>( return make_tl_object<td_api::chatEventVoiceChatCreated>(
td_->group_call_manager_->get_group_call_id(input_group_call_id, channel_id).get()); td_->group_call_manager_->get_group_call_id(input_group_call_id, DialogId(channel_id)).get());
} }
case telegram_api::channelAdminLogEventActionDiscardGroupCall::ID: { case telegram_api::channelAdminLogEventActionDiscardGroupCall::ID: {
auto action = move_tl_object_as<telegram_api::channelAdminLogEventActionDiscardGroupCall>(action_ptr); auto action = move_tl_object_as<telegram_api::channelAdminLogEventActionDiscardGroupCall>(action_ptr);
@ -30794,7 +30794,7 @@ tl_object_ptr<td_api::ChatEventAction> MessagesManager::get_chat_event_action_ob
return nullptr; return nullptr;
} }
return make_tl_object<td_api::chatEventVoiceChatDiscarded>( return make_tl_object<td_api::chatEventVoiceChatDiscarded>(
td_->group_call_manager_->get_group_call_id(input_group_call_id, channel_id).get()); td_->group_call_manager_->get_group_call_id(input_group_call_id, DialogId(channel_id)).get());
} }
case telegram_api::channelAdminLogEventActionParticipantMute::ID: { case telegram_api::channelAdminLogEventActionParticipantMute::ID: {
auto action = move_tl_object_as<telegram_api::channelAdminLogEventActionParticipantMute>(action_ptr); auto action = move_tl_object_as<telegram_api::channelAdminLogEventActionParticipantMute>(action_ptr);

View File

@ -2149,7 +2149,7 @@ void UpdatesManager::on_update(tl_object_ptr<telegram_api::updatePhoneCallSignal
void UpdatesManager::on_update(tl_object_ptr<telegram_api::updateGroupCall> update, bool /*force_apply*/) { void UpdatesManager::on_update(tl_object_ptr<telegram_api::updateGroupCall> update, bool /*force_apply*/) {
send_closure(G()->group_call_manager(), &GroupCallManager::on_update_group_call, std::move(update->call_), send_closure(G()->group_call_manager(), &GroupCallManager::on_update_group_call, std::move(update->call_),
ChannelId(update->channel_id_)); DialogId(ChannelId(update->channel_id_)));
} }
void UpdatesManager::on_update(tl_object_ptr<telegram_api::updateGroupCallParticipants> update, bool /*force_apply*/) { void UpdatesManager::on_update(tl_object_ptr<telegram_api::updateGroupCallParticipants> update, bool /*force_apply*/) {