Do not unload last edited message in the chat.
GitOrigin-RevId: d8a5f8053f8d0ef6bd86f503a456f6631a5f9d9e
This commit is contained in:
parent
724f2644e1
commit
37cab6d1fc
@ -6379,6 +6379,7 @@ void MessagesManager::on_message_edited(FullMessageId full_message_id) {
|
|||||||
const Message *m = get_message(d, full_message_id.get_message_id());
|
const Message *m = get_message(d, full_message_id.get_message_id());
|
||||||
CHECK(m != nullptr);
|
CHECK(m != nullptr);
|
||||||
if (td_->auth_manager_->is_bot()) {
|
if (td_->auth_manager_->is_bot()) {
|
||||||
|
d->last_edited_message_id = m->message_id;
|
||||||
send_update_message_edited(dialog_id, m);
|
send_update_message_edited(dialog_id, m);
|
||||||
}
|
}
|
||||||
update_used_hashtags(dialog_id, m);
|
update_used_hashtags(dialog_id, m);
|
||||||
@ -12318,6 +12319,7 @@ bool MessagesManager::can_unload_message(const Dialog *d, const Message *m) cons
|
|||||||
// don't want to unload messages with pending web pages
|
// don't want to unload messages with pending web pages
|
||||||
// don't want to unload message with active reply markup
|
// don't want to unload message with active reply markup
|
||||||
// don't want to unload pinned message
|
// don't want to unload pinned message
|
||||||
|
// don't want to unload last edited message, because server can send updateEditChannelMessage again
|
||||||
// can't unload from memory last dialog, last database messages, yet unsent messages, being edited media messages and active live locations
|
// can't unload from memory last dialog, last database messages, yet unsent messages, being edited media messages and active live locations
|
||||||
// can't unload messages in dialog with active suffix load query
|
// can't unload messages in dialog with active suffix load query
|
||||||
FullMessageId full_message_id{d->dialog_id, m->message_id};
|
FullMessageId full_message_id{d->dialog_id, m->message_id};
|
||||||
@ -12325,7 +12327,8 @@ bool MessagesManager::can_unload_message(const Dialog *d, const Message *m) cons
|
|||||||
!m->message_id.is_yet_unsent() && active_live_location_full_message_ids_.count(full_message_id) == 0 &&
|
!m->message_id.is_yet_unsent() && active_live_location_full_message_ids_.count(full_message_id) == 0 &&
|
||||||
replied_by_yet_unsent_messages_.count(full_message_id) == 0 && m->edited_content == nullptr &&
|
replied_by_yet_unsent_messages_.count(full_message_id) == 0 && m->edited_content == nullptr &&
|
||||||
waiting_for_web_page_messages_.count(full_message_id) == 0 && d->suffix_load_queries_.empty() &&
|
waiting_for_web_page_messages_.count(full_message_id) == 0 && d->suffix_load_queries_.empty() &&
|
||||||
m->message_id != d->reply_markup_message_id && m->message_id != d->pinned_message_id;
|
m->message_id != d->reply_markup_message_id && m->message_id != d->pinned_message_id &&
|
||||||
|
m->message_id != d->last_edited_message_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessagesManager::unload_message(Dialog *d, MessageId message_id) {
|
void MessagesManager::unload_message(Dialog *d, MessageId message_id) {
|
||||||
@ -27239,6 +27242,7 @@ bool MessagesManager::update_message(Dialog *d, Message *old_message, unique_ptr
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (is_edited && !td_->auth_manager_->is_bot()) {
|
if (is_edited && !td_->auth_manager_->is_bot()) {
|
||||||
|
d->last_edited_message_id = message_id;
|
||||||
send_update_message_edited(dialog_id, old_message);
|
send_update_message_edited(dialog_id, old_message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1060,6 +1060,7 @@ class MessagesManager : public Actor {
|
|||||||
int32 pending_last_message_date = 0;
|
int32 pending_last_message_date = 0;
|
||||||
MessageId pending_last_message_id;
|
MessageId pending_last_message_id;
|
||||||
MessageId max_notification_message_id;
|
MessageId max_notification_message_id;
|
||||||
|
MessageId last_edited_message_id;
|
||||||
uint32 scheduled_messages_sync_generation = 0;
|
uint32 scheduled_messages_sync_generation = 0;
|
||||||
|
|
||||||
MessageId max_added_message_id;
|
MessageId max_added_message_id;
|
||||||
|
Reference in New Issue
Block a user