Fix get_full_history,
GitOrigin-RevId: 437b3f8dd1c7172ac156c172f70a473b5a8eebf9
This commit is contained in:
parent
ea2afdf9a6
commit
235c137d49
@ -6779,32 +6779,18 @@ void MessagesManager::on_get_history(DialogId dialog_id, MessageId from_message_
|
|||||||
CHECK(-limit < offset && offset <= 0);
|
CHECK(-limit < offset && offset <= 0);
|
||||||
CHECK(offset < 0 || from_the_end);
|
CHECK(offset < 0 || from_the_end);
|
||||||
|
|
||||||
if (narrow_cast<int32>(messages.size()) < limit + offset && !messages.empty()) {
|
// it is likely that there is no more history messages on the server
|
||||||
MessageId first_received_message_id = get_message_id(messages.back());
|
bool have_full_history = from_the_end && narrow_cast<int32>(messages.size()) < limit;
|
||||||
if (first_received_message_id.get() >= from_message_id.get()) {
|
Dialog *d = get_dialog(dialog_id);
|
||||||
// it is likely that there is no more history messages on the server
|
|
||||||
Dialog *d = get_dialog(dialog_id);
|
if (messages.empty()) {
|
||||||
if (d != nullptr && d->first_database_message_id.is_valid() &&
|
if (d != nullptr) {
|
||||||
d->first_database_message_id.get() <= first_received_message_id.get()) {
|
if (have_full_history) {
|
||||||
d->have_full_history = true;
|
d->have_full_history = true;
|
||||||
on_dialog_updated(dialog_id, "set have_full_history");
|
on_dialog_updated(dialog_id, "set have_full_history");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (from_the_end && narrow_cast<int32>(messages.size()) < limit) {
|
if (from_the_end && d->have_full_history) {
|
||||||
// it is likely that there is no more history messages on the server
|
|
||||||
Dialog *d = get_dialog(dialog_id);
|
|
||||||
if (d != nullptr) {
|
|
||||||
d->have_full_history = true;
|
|
||||||
on_dialog_updated(dialog_id, "set have_full_history");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (messages.empty()) {
|
|
||||||
if (from_the_end) {
|
|
||||||
Dialog *d = get_dialog(dialog_id);
|
|
||||||
if (d != nullptr && d->have_full_history) {
|
|
||||||
set_dialog_is_empty(d, "on_get_history empty");
|
set_dialog_is_empty(d, "on_get_history empty");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -6825,7 +6811,15 @@ void MessagesManager::on_get_history(DialogId dialog_id, MessageId from_message_
|
|||||||
MessageId last_received_message_id = get_message_id(messages[0]);
|
MessageId last_received_message_id = get_message_id(messages[0]);
|
||||||
MessageId last_added_message_id;
|
MessageId last_added_message_id;
|
||||||
bool have_next = false;
|
bool have_next = false;
|
||||||
Dialog *d = get_dialog(dialog_id);
|
|
||||||
|
if (narrow_cast<int32>(messages.size()) < limit + offset && d != nullptr) {
|
||||||
|
MessageId first_received_message_id = get_message_id(messages.back());
|
||||||
|
if (first_received_message_id.get() >= from_message_id.get() && d->first_database_message_id.is_valid() &&
|
||||||
|
first_received_message_id.get() >= d->first_database_message_id.get()) {
|
||||||
|
// it is likely that there is no more history messages on the server
|
||||||
|
have_full_history = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MessageId prev_last_new_message_id;
|
MessageId prev_last_new_message_id;
|
||||||
MessageId prev_first_database_message_id;
|
MessageId prev_first_database_message_id;
|
||||||
@ -6839,7 +6833,7 @@ void MessagesManager::on_get_history(DialogId dialog_id, MessageId from_message_
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (auto &message : messages) {
|
for (auto &message : messages) {
|
||||||
if (!have_next && from_the_end && get_message_id(message).get() < d->last_message_id.get()) {
|
if (!have_next && from_the_end && d != nullptr && get_message_id(message).get() < d->last_message_id.get()) {
|
||||||
// last message in the dialog should be attached to the next message if there is some
|
// last message in the dialog should be attached to the next message if there is some
|
||||||
have_next = true;
|
have_next = true;
|
||||||
}
|
}
|
||||||
@ -6886,6 +6880,11 @@ void MessagesManager::on_get_history(DialogId dialog_id, MessageId from_message_
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (have_full_history) {
|
||||||
|
d->have_full_history = true;
|
||||||
|
on_dialog_updated(dialog_id, "set have_full_history 2");
|
||||||
|
}
|
||||||
|
|
||||||
// LOG_IF(ERROR, d->first_message_id.is_valid() && d->first_message_id.get() > first_received_message_id.get())
|
// LOG_IF(ERROR, d->first_message_id.is_valid() && d->first_message_id.get() > first_received_message_id.get())
|
||||||
// << "Receive message " << first_received_message_id << ", but first chat message is " << d->first_message_id;
|
// << "Receive message " << first_received_message_id << ", but first chat message is " << d->first_message_id;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user