Ensure that there are at most 3 recent repliers.

This commit is contained in:
levlam 2021-12-20 15:47:03 +03:00
parent 2b9a5741b2
commit f53ae6b85e
2 changed files with 9 additions and 1 deletions

View File

@ -48,6 +48,9 @@ MessageReplyInfo::MessageReplyInfo(tl_object_ptr<telegram_api::messageReplies> &
LOG(ERROR) << "Receive " << dialog_id << " as a recent replier"; LOG(ERROR) << "Receive " << dialog_id << " as a recent replier";
} }
} }
if (recent_replier_dialog_ids.size() > MAX_RECENT_REPLIERS) {
recent_replier_dialog_ids.resize(MAX_RECENT_REPLIERS);
}
} }
if ((reply_info->flags_ & telegram_api::messageReplies::MAX_ID_MASK) != 0 && if ((reply_info->flags_ & telegram_api::messageReplies::MAX_ID_MASK) != 0 &&
ServerMessageId(reply_info->max_id_).is_valid()) { ServerMessageId(reply_info->max_id_).is_valid()) {
@ -120,7 +123,7 @@ bool MessageReplyInfo::add_reply(DialogId replier_dialog_id, MessageId reply_mes
td::remove(recent_replier_dialog_ids, replier_dialog_id); td::remove(recent_replier_dialog_ids, replier_dialog_id);
if (diff > 0) { if (diff > 0) {
recent_replier_dialog_ids.insert(recent_replier_dialog_ids.begin(), replier_dialog_id); recent_replier_dialog_ids.insert(recent_replier_dialog_ids.begin(), replier_dialog_id);
if (recent_replier_dialog_ids.size() > 3) { if (recent_replier_dialog_ids.size() > MAX_RECENT_REPLIERS) {
recent_replier_dialog_ids.pop_back(); recent_replier_dialog_ids.pop_back();
} }
} else { } else {

View File

@ -31,6 +31,8 @@ struct MessageReplyInfo {
MessageId last_read_outbox_message_id; MessageId last_read_outbox_message_id;
bool is_comment = false; bool is_comment = false;
static constexpr size_t MAX_RECENT_REPLIERS = 3;
MessageReplyInfo() = default; MessageReplyInfo() = default;
MessageReplyInfo(tl_object_ptr<telegram_api::messageReplies> &&reply_info, bool is_bot); MessageReplyInfo(tl_object_ptr<telegram_api::messageReplies> &&reply_info, bool is_bot);
@ -121,6 +123,9 @@ struct MessageReplyInfo {
if (channel_id.get() == 777) { if (channel_id.get() == 777) {
*this = MessageReplyInfo(); *this = MessageReplyInfo();
} }
if (recent_replier_dialog_ids.size() > MAX_RECENT_REPLIERS) {
recent_replier_dialog_ids.resize(MAX_RECENT_REPLIERS);
}
} }
}; };