From cd33ec58be4c38cf9bc96f1dff277933fc36370a Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 7 Sep 2018 18:43:25 +0300 Subject: [PATCH] Try to fix last_new_message_id in on_get_history_from_database. GitOrigin-RevId: 4c5ede1006c4d8be0694ccfb459d70ed0702dc5d --- td/telegram/MessagesManager.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 339f9b5f..25e6e578 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -15215,7 +15215,7 @@ void MessagesManager::on_get_history_from_database(DialogId dialog_id, MessageId if (next_message != nullptr && !next_message->have_previous) { LOG(INFO) << "Fix have_previous for " << next_message->message_id; next_message->have_previous = true; - attach_message_to_previous(d, next_message->message_id, "on_get_history_from_database"); + attach_message_to_previous(d, next_message->message_id, "on_get_history_from_database 1"); } have_next = true; @@ -15236,13 +15236,20 @@ void MessagesManager::on_get_history_from_database(DialogId dialog_id, MessageId if (from_the_end && last_added_message_id.is_valid()) { // CHECK(d->first_database_message_id.is_valid()); // CHECK(last_added_message_id.get() >= d->first_database_message_id.get()); + if ((had_full_history || d->have_full_history) && !d->last_new_message_id.is_valid() && + (last_added_message_id.is_server() || d->dialog_id.get_type() == DialogType::SecretChat)) { + LOG(ERROR) << "Trying to hard fix " << d->dialog_id << " last new message to " << last_added_message_id + << " from on_get_history_from_database 2"; + d->last_new_message_id = last_added_message_id; + on_dialog_updated(d->dialog_id, "on_get_history_from_database 3"); + } if (last_added_message_id.get() > d->last_message_id.get() && d->last_new_message_id.is_valid()) { - set_dialog_last_message_id(d, last_added_message_id, "on_get_history_from_database"); + set_dialog_last_message_id(d, last_added_message_id, "on_get_history_from_database 4"); need_update_dialog_pos = true; } if (last_added_message_id.get() != d->last_database_message_id.get()) { auto debug_last_database_message_id = d->last_database_message_id; - set_dialog_last_database_message_id(d, last_added_message_id, "on_get_history_from_database"); + set_dialog_last_database_message_id(d, last_added_message_id, "on_get_history_from_database 5"); if (last_added_message_id.get() < d->first_database_message_id.get() || !d->first_database_message_id.is_valid()) { CHECK(next_message != nullptr); @@ -15252,13 +15259,13 @@ void MessagesManager::on_get_history_from_database(DialogId dialog_id, MessageId CHECK(next_message->message_id.get() <= d->last_database_message_id.get()); LOG(ERROR) << "Fix first database message id in " << dialog_id << " from " << d->first_database_message_id << " to " << next_message->message_id; - set_dialog_first_database_message_id(d, next_message->message_id, "on_get_history_from_database"); + set_dialog_first_database_message_id(d, next_message->message_id, "on_get_history_from_database 6"); } } } if (need_update_dialog_pos) { - send_update_chat_last_message(d, "on_get_history_from_database"); + send_update_chat_last_message(d, "on_get_history_from_database 7"); } promise.set_value(Unit());