Add separate speculatively_update_channel_participants function.
GitOrigin-RevId: 73cb67adffb5488686e181d460640e0682e418e3
This commit is contained in:
parent
0c2c587f8c
commit
10c743a839
@ -25186,28 +25186,6 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
|
|||||||
add_message_file_sources(dialog_id, m);
|
add_message_file_sources(dialog_id, m);
|
||||||
register_message_content(td_, m->content.get(), {dialog_id, message_id});
|
register_message_content(td_, m->content.get(), {dialog_id, message_id});
|
||||||
|
|
||||||
if (from_update && message_id.is_server() && dialog_id.get_type() == DialogType::Channel &&
|
|
||||||
m->sender_user_id.is_valid()) {
|
|
||||||
switch (message_content_type) {
|
|
||||||
case MessageContentType::ChatAddUsers:
|
|
||||||
td_->contacts_manager_->speculative_add_channel_participants(
|
|
||||||
dialog_id.get_channel_id(), get_message_content_added_user_ids(m->content.get()), m->sender_user_id,
|
|
||||||
m->date, m->sender_user_id == my_user_id);
|
|
||||||
break;
|
|
||||||
case MessageContentType::ChatJoinedByLink:
|
|
||||||
td_->contacts_manager_->speculative_add_channel_participants(dialog_id.get_channel_id(), {m->sender_user_id},
|
|
||||||
m->sender_user_id, m->date,
|
|
||||||
m->sender_user_id == my_user_id);
|
|
||||||
break;
|
|
||||||
case MessageContentType::ChatDeleteUser:
|
|
||||||
td_->contacts_manager_->speculative_delete_channel_participant(
|
|
||||||
dialog_id.get_channel_id(), get_message_content_deleted_user_id(m->content.get()),
|
|
||||||
m->sender_user_id == my_user_id);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (from_update && message_id.is_server() && message_content_type == MessageContentType::PinMessage) {
|
if (from_update && message_id.is_server() && message_content_type == MessageContentType::PinMessage) {
|
||||||
auto pinned_message_id = get_message_content_pinned_message_id(m->content.get());
|
auto pinned_message_id = get_message_content_pinned_message_id(m->content.get());
|
||||||
on_update_dialog_pinned_message_id(dialog_id, pinned_message_id);
|
on_update_dialog_pinned_message_id(dialog_id, pinned_message_id);
|
||||||
@ -25218,6 +25196,7 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
|
|||||||
on_sent_message_content(td_, m->content.get());
|
on_sent_message_content(td_, m->content.get());
|
||||||
}
|
}
|
||||||
if (from_update) {
|
if (from_update) {
|
||||||
|
speculatively_update_channel_participants(dialog_id, m);
|
||||||
update_used_hashtags(dialog_id, m);
|
update_used_hashtags(dialog_id, m);
|
||||||
update_top_dialogs(dialog_id, m);
|
update_top_dialogs(dialog_id, m);
|
||||||
}
|
}
|
||||||
@ -27781,6 +27760,32 @@ void MessagesManager::after_get_channel_difference(DialogId dialog_id, bool succ
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MessagesManager::speculatively_update_channel_participants(DialogId dialog_id, const Message *m) {
|
||||||
|
if (!m->message_id.is_any_server() || dialog_id.get_type() != DialogType::Channel || !m->sender_user_id.is_valid()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto channel_id = dialog_id.get_channel_id();
|
||||||
|
UserId my_user_id(td_->contacts_manager_->get_my_id());
|
||||||
|
bool by_me = m->sender_user_id == my_user_id;
|
||||||
|
switch (m->content->get_type()) {
|
||||||
|
case MessageContentType::ChatAddUsers:
|
||||||
|
td_->contacts_manager_->speculative_add_channel_participants(
|
||||||
|
channel_id, get_message_content_added_user_ids(m->content.get()), m->sender_user_id, m->date, by_me);
|
||||||
|
break;
|
||||||
|
case MessageContentType::ChatJoinedByLink:
|
||||||
|
td_->contacts_manager_->speculative_add_channel_participants(channel_id, {m->sender_user_id}, m->sender_user_id,
|
||||||
|
m->date, by_me);
|
||||||
|
break;
|
||||||
|
case MessageContentType::ChatDeleteUser:
|
||||||
|
td_->contacts_manager_->speculative_delete_channel_participant(
|
||||||
|
channel_id, get_message_content_deleted_user_id(m->content.get()), by_me);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MessagesManager::update_used_hashtags(DialogId dialog_id, const Message *m) {
|
void MessagesManager::update_used_hashtags(DialogId dialog_id, const Message *m) {
|
||||||
CHECK(m != nullptr);
|
CHECK(m != nullptr);
|
||||||
if (td_->auth_manager_->is_bot() || (!m->is_outgoing && dialog_id != get_my_dialog_id()) ||
|
if (td_->auth_manager_->is_bot() || (!m->is_outgoing && dialog_id != get_my_dialog_id()) ||
|
||||||
|
@ -2268,6 +2268,8 @@ class MessagesManager : public Actor {
|
|||||||
void save_recently_found_dialogs();
|
void save_recently_found_dialogs();
|
||||||
bool load_recently_found_dialogs(Promise<Unit> &promise);
|
bool load_recently_found_dialogs(Promise<Unit> &promise);
|
||||||
|
|
||||||
|
void speculatively_update_channel_participants(DialogId dialog_id, const Message *m);
|
||||||
|
|
||||||
void update_used_hashtags(DialogId dialog_id, const Message *m);
|
void update_used_hashtags(DialogId dialog_id, const Message *m);
|
||||||
|
|
||||||
void update_top_dialogs(DialogId dialog_id, const Message *m);
|
void update_top_dialogs(DialogId dialog_id, const Message *m);
|
||||||
|
Reference in New Issue
Block a user