Apply users and chats from channels.getDifference before creating the dialog.
GitOrigin-RevId: 5ee65a1b7c199daf38d94a7d93b8adfb6532703d
This commit is contained in:
parent
e5133445d3
commit
e8d97ebbcd
@ -34523,6 +34523,30 @@ void MessagesManager::on_get_channel_difference(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (difference_ptr->get_id()) {
|
||||||
|
case telegram_api::updates_channelDifferenceEmpty::ID:
|
||||||
|
if (d == nullptr) {
|
||||||
|
// no need to create the dialog
|
||||||
|
after_get_channel_difference(dialog_id, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case telegram_api::updates_channelDifference::ID: {
|
||||||
|
auto difference = static_cast<telegram_api::updates_channelDifference *>(difference_ptr.get());
|
||||||
|
td_->contacts_manager_->on_get_users(std::move(difference->users_), "updates.channelDifference");
|
||||||
|
td_->contacts_manager_->on_get_chats(std::move(difference->chats_), "updates.channelDifference");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case telegram_api::updates_channelDifferenceTooLong::ID: {
|
||||||
|
auto difference = static_cast<telegram_api::updates_channelDifferenceTooLong *>(difference_ptr.get());
|
||||||
|
td_->contacts_manager_->on_get_users(std::move(difference->users_), "updates.channelDifferenceTooLong");
|
||||||
|
td_->contacts_manager_->on_get_chats(std::move(difference->chats_), "updates.channelDifferenceTooLong");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
UNREACHABLE();
|
||||||
|
}
|
||||||
|
|
||||||
bool need_update_dialog_pos = false;
|
bool need_update_dialog_pos = false;
|
||||||
if (d == nullptr) {
|
if (d == nullptr) {
|
||||||
d = add_dialog(dialog_id);
|
d = add_dialog(dialog_id);
|
||||||
@ -34577,9 +34601,6 @@ void MessagesManager::on_get_channel_difference(
|
|||||||
new_pts = request_pts + 1;
|
new_pts = request_pts + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
td_->contacts_manager_->on_get_users(std::move(difference->users_), "updates.channelDifference");
|
|
||||||
td_->contacts_manager_->on_get_chats(std::move(difference->chats_), "updates.channelDifference");
|
|
||||||
|
|
||||||
process_get_channel_difference_updates(dialog_id, std::move(difference->new_messages_),
|
process_get_channel_difference_updates(dialog_id, std::move(difference->new_messages_),
|
||||||
std::move(difference->other_updates_));
|
std::move(difference->other_updates_));
|
||||||
|
|
||||||
@ -34623,9 +34644,6 @@ void MessagesManager::on_get_channel_difference(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
td_->contacts_manager_->on_get_users(std::move(difference->users_), "updates.channelDifferenceTooLong");
|
|
||||||
td_->contacts_manager_->on_get_chats(std::move(difference->chats_), "updates.channelDifferenceTooLong");
|
|
||||||
|
|
||||||
set_dialog_folder_id(d, FolderId((dialog->flags_ & DIALOG_FLAG_HAS_FOLDER_ID) != 0 ? dialog->folder_id_ : 0));
|
set_dialog_folder_id(d, FolderId((dialog->flags_ & DIALOG_FLAG_HAS_FOLDER_ID) != 0 ? dialog->folder_id_ : 0));
|
||||||
|
|
||||||
on_update_dialog_notify_settings(dialog_id, std::move(dialog->notify_settings_),
|
on_update_dialog_notify_settings(dialog_id, std::move(dialog->notify_settings_),
|
||||||
|
Loading…
Reference in New Issue
Block a user