Add get_message_content_new_participant_count.
GitOrigin-RevId: b4c884cdd8d947af3a5a8a3263da2b3bc547be4d
This commit is contained in:
parent
d5683ee224
commit
6539fbcff6
@ -23363,6 +23363,19 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(DialogId dialog
|
|||||||
return add_message_to_dialog(d, std::move(message), from_update, need_update, need_update_dialog_pos, source);
|
return add_message_to_dialog(d, std::move(message), from_update, need_update, need_update_dialog_pos, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32 MessagesManager::get_message_content_new_participant_count(const MessageContent *content) {
|
||||||
|
switch (content->get_type()) {
|
||||||
|
case MessageContentType::ChatAddUsers:
|
||||||
|
return narrow_cast<int32>(static_cast<const MessageChatAddUsers *>(content)->user_ids.size());
|
||||||
|
case MessageContentType::ChatJoinedByLink:
|
||||||
|
return 1;
|
||||||
|
case MessageContentType::ChatDeleteUser:
|
||||||
|
return -1;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, unique_ptr<Message> message,
|
MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, unique_ptr<Message> message,
|
||||||
bool from_update, bool *need_update,
|
bool from_update, bool *need_update,
|
||||||
bool *need_update_dialog_pos, const char *source) {
|
bool *need_update_dialog_pos, const char *source) {
|
||||||
@ -23823,30 +23836,15 @@ MessagesManager::Message *MessagesManager::add_message_to_dialog(Dialog *d, uniq
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (from_update && message_id.is_server() && dialog_id.get_type() == DialogType::Channel) {
|
if (from_update && message_id.is_server() && dialog_id.get_type() == DialogType::Channel) {
|
||||||
int32 new_participant_count = 0;
|
int32 new_participant_count = get_message_content_new_participant_count(message->content.get());
|
||||||
switch (message_content_type) {
|
|
||||||
case MessageContentType::ChatAddUsers:
|
|
||||||
new_participant_count =
|
|
||||||
narrow_cast<int32>(static_cast<const MessageChatAddUsers *>(message->content.get())->user_ids.size());
|
|
||||||
break;
|
|
||||||
case MessageContentType::ChatJoinedByLink:
|
|
||||||
new_participant_count = 1;
|
|
||||||
break;
|
|
||||||
case MessageContentType::ChatDeleteUser:
|
|
||||||
new_participant_count = -1;
|
|
||||||
break;
|
|
||||||
case MessageContentType::PinMessage:
|
|
||||||
td_->contacts_manager_->on_update_channel_pinned_message(
|
|
||||||
dialog_id.get_channel_id(), static_cast<const MessagePinMessage *>(message->content.get())->message_id);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// nothing to do
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (new_participant_count != 0) {
|
if (new_participant_count != 0) {
|
||||||
td_->contacts_manager_->speculative_add_channel_participants(dialog_id.get_channel_id(), new_participant_count,
|
td_->contacts_manager_->speculative_add_channel_participants(dialog_id.get_channel_id(), new_participant_count,
|
||||||
message->sender_user_id == my_user_id);
|
message->sender_user_id == my_user_id);
|
||||||
}
|
}
|
||||||
|
if (message_content_type == MessageContentType::PinMessage) {
|
||||||
|
td_->contacts_manager_->on_update_channel_pinned_message(
|
||||||
|
dialog_id.get_channel_id(), static_cast<const MessagePinMessage *>(message->content.get())->message_id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!td_->auth_manager_->is_bot() && from_update && message->forward_info == nullptr &&
|
if (!td_->auth_manager_->is_bot() && from_update && message->forward_info == nullptr &&
|
||||||
(message->is_outgoing || dialog_id == my_dialog_id)) {
|
(message->is_outgoing || dialog_id == my_dialog_id)) {
|
||||||
|
@ -2249,6 +2249,8 @@ class MessagesManager : public Actor {
|
|||||||
static int32 get_message_content_index_mask(const MessageContent *content, const Td *td, bool is_secret,
|
static int32 get_message_content_index_mask(const MessageContent *content, const Td *td, bool is_secret,
|
||||||
bool is_outgoing);
|
bool is_outgoing);
|
||||||
|
|
||||||
|
static int32 get_message_content_new_participant_count(const MessageContent *content);
|
||||||
|
|
||||||
Message *add_message_to_dialog(DialogId dialog_id, unique_ptr<Message> message, bool from_update, bool *need_update,
|
Message *add_message_to_dialog(DialogId dialog_id, unique_ptr<Message> message, bool from_update, bool *need_update,
|
||||||
bool *need_update_dialog_pos, const char *source);
|
bool *need_update_dialog_pos, const char *source);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user