Fix can_be_muted flag.
This commit is contained in:
parent
8dd4fe3166
commit
3413e38a61
|
@ -11722,7 +11722,8 @@ void ContactsManager::on_update_chat_status(Chat *c, ChatId chat_id, DialogParti
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (need_reload_group_call) {
|
if (need_reload_group_call) {
|
||||||
td_->messages_manager_->on_update_dialog_group_call_rights(DialogId(chat_id));
|
send_closure_later(G()->messages_manager(), &MessagesManager::on_update_dialog_group_call_rights,
|
||||||
|
DialogId(chat_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
c->is_changed = true;
|
c->is_changed = true;
|
||||||
|
@ -12064,7 +12065,8 @@ void ContactsManager::on_channel_status_changed(Channel *c, ChannelId channel_id
|
||||||
reload_dialog_administrators(DialogId(channel_id), 0, Auto());
|
reload_dialog_administrators(DialogId(channel_id), 0, Auto());
|
||||||
}
|
}
|
||||||
if (need_reload_group_call) {
|
if (need_reload_group_call) {
|
||||||
td_->messages_manager_->on_update_dialog_group_call_rights(DialogId(channel_id));
|
send_closure_later(G()->messages_manager(), &MessagesManager::on_update_dialog_group_call_rights,
|
||||||
|
DialogId(channel_id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -426,6 +426,7 @@ struct GroupCallManager::GroupCallParticipants {
|
||||||
string next_offset;
|
string next_offset;
|
||||||
int64 min_order = std::numeric_limits<int64>::max();
|
int64 min_order = std::numeric_limits<int64>::max();
|
||||||
|
|
||||||
|
bool are_administrators_loaded = false;
|
||||||
vector<UserId> administrator_user_ids;
|
vector<UserId> administrator_user_ids;
|
||||||
|
|
||||||
std::map<int32, vector<tl_object_ptr<telegram_api::groupCallParticipant>>> pending_version_updates_;
|
std::map<int32, vector<tl_object_ptr<telegram_api::groupCallParticipant>>> pending_version_updates_;
|
||||||
|
@ -709,10 +710,12 @@ void GroupCallManager::on_update_group_call_rights(InputGroupCallId input_group_
|
||||||
auto participants_it = group_call_participants_.find(input_group_call_id);
|
auto participants_it = group_call_participants_.find(input_group_call_id);
|
||||||
if (participants_it != group_call_participants_.end()) {
|
if (participants_it != group_call_participants_.end()) {
|
||||||
CHECK(participants_it->second != nullptr);
|
CHECK(participants_it->second != nullptr);
|
||||||
|
if (participants_it->second->are_administrators_loaded) {
|
||||||
update_group_call_participants_can_be_muted(
|
update_group_call_participants_can_be_muted(
|
||||||
input_group_call_id, can_manage_group_calls(group_call->dialog_id).is_ok(), participants_it->second.get());
|
input_group_call_id, can_manage_group_calls(group_call->dialog_id).is_ok(), participants_it->second.get());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
reload_group_call(input_group_call_id, Auto());
|
reload_group_call(input_group_call_id, Auto());
|
||||||
}
|
}
|
||||||
|
@ -1220,6 +1223,7 @@ void GroupCallManager::update_group_call_participants_can_be_muted(InputGroupCal
|
||||||
bool can_manage,
|
bool can_manage,
|
||||||
GroupCallParticipants *participants) {
|
GroupCallParticipants *participants) {
|
||||||
CHECK(participants != nullptr);
|
CHECK(participants != nullptr);
|
||||||
|
LOG(INFO) << "Update group call participants can_be_muted in " << input_group_call_id;
|
||||||
for (auto &participant : participants->participants) {
|
for (auto &participant : participants->participants) {
|
||||||
if (update_group_call_participant_can_be_muted(can_manage, participants, participant) && participant.order != 0) {
|
if (update_group_call_participant_can_be_muted(can_manage, participants, participant) && participant.order != 0) {
|
||||||
send_update_group_call_participant(input_group_call_id, participant);
|
send_update_group_call_participant(input_group_call_id, participant);
|
||||||
|
@ -1308,6 +1312,7 @@ int GroupCallManager::process_group_call_participant(InputGroupCallId input_grou
|
||||||
participant.order = real_order;
|
participant.order = real_order;
|
||||||
}
|
}
|
||||||
participant.is_just_joined = false;
|
participant.is_just_joined = false;
|
||||||
|
update_group_call_participant_can_be_muted(can_manage, participants, participant);
|
||||||
participants->participants.push_back(std::move(participant));
|
participants->participants.push_back(std::move(participant));
|
||||||
if (participants->participants.back().order != 0) {
|
if (participants->participants.back().order != 0) {
|
||||||
send_update_group_call_participant(input_group_call_id, participants->participants.back());
|
send_update_group_call_participant(input_group_call_id, participants->participants.back());
|
||||||
|
@ -1408,6 +1413,7 @@ void GroupCallManager::join_group_call(GroupCallId group_call_id,
|
||||||
void GroupCallManager::try_load_group_call_administrators(InputGroupCallId input_group_call_id, DialogId dialog_id) {
|
void GroupCallManager::try_load_group_call_administrators(InputGroupCallId input_group_call_id, DialogId dialog_id) {
|
||||||
if (!dialog_id.is_valid() || !need_group_call_participants(input_group_call_id) ||
|
if (!dialog_id.is_valid() || !need_group_call_participants(input_group_call_id) ||
|
||||||
can_manage_group_calls(dialog_id).is_error()) {
|
can_manage_group_calls(dialog_id).is_error()) {
|
||||||
|
LOG(INFO) << "Don't need to load administrators in " << input_group_call_id << " from " << dialog_id;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1472,6 +1478,7 @@ void GroupCallManager::finish_load_group_call_administrators(InputGroupCallId in
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG(INFO) << "Set administrators of " << input_group_call_id << " to " << administrator_user_ids;
|
LOG(INFO) << "Set administrators of " << input_group_call_id << " to " << administrator_user_ids;
|
||||||
|
group_call_participants->are_administrators_loaded = true;
|
||||||
group_call_participants->administrator_user_ids = std::move(administrator_user_ids);
|
group_call_participants->administrator_user_ids = std::move(administrator_user_ids);
|
||||||
|
|
||||||
update_group_call_participants_can_be_muted(input_group_call_id, true, group_call_participants);
|
update_group_call_participants_can_be_muted(input_group_call_id, true, group_call_participants);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user