Better handling of channelDifferenceTooLong.
GitOrigin-RevId: db70a044bf34c7e30b57266e361cd9579f864e39
This commit is contained in:
parent
b666f554f4
commit
f2a4cbd1f7
@ -22098,9 +22098,6 @@ void MessagesManager::on_get_channel_dialog(DialogId dialog_id, MessageId last_m
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
LOG(ERROR) << "Receive as last " << last_message_id;
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Dialog *d = get_dialog(dialog_id);
|
Dialog *d = get_dialog(dialog_id);
|
||||||
@ -22125,17 +22122,20 @@ void MessagesManager::on_get_channel_dialog(DialogId dialog_id, MessageId last_m
|
|||||||
// offline. It is the best way for gaps support, but it is pretty hard to implement correctly.
|
// offline. It is the best way for gaps support, but it is pretty hard to implement correctly.
|
||||||
// It should be also noted that some messages like live location messages shouldn't be deleted.
|
// It should be also noted that some messages like live location messages shouldn't be deleted.
|
||||||
|
|
||||||
set_dialog_first_database_message_id(d, MessageId(), "on_get_channel_dialog");
|
if (last_message_id.get() > d->last_new_message_id.get()) {
|
||||||
set_dialog_last_database_message_id(d, MessageId(), "on_get_channel_dialog");
|
// TODO properly support last_message_id.get() <= d->last_new_message_id.get()
|
||||||
d->have_full_history = false;
|
set_dialog_first_database_message_id(d, MessageId(), "on_get_channel_dialog");
|
||||||
for (auto &first_message_id : d->first_database_message_id_by_index) {
|
set_dialog_last_database_message_id(d, MessageId(), "on_get_channel_dialog");
|
||||||
first_message_id = MessageId();
|
d->have_full_history = false;
|
||||||
|
for (auto &first_message_id : d->first_database_message_id_by_index) {
|
||||||
|
first_message_id = MessageId();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
std::fill(d->message_count_by_index.begin(), d->message_count_by_index.end(), -1);
|
std::fill(d->message_count_by_index.begin(), d->message_count_by_index.end(), -1);
|
||||||
|
|
||||||
on_dialog_updated(dialog_id, "on_get_channel_dialog 10");
|
on_dialog_updated(dialog_id, "on_get_channel_dialog 10");
|
||||||
|
|
||||||
// TODO support last_message_id.get() < d->last_new_message_id.get()
|
// TODO properly support last_message_id.get() <= d->last_new_message_id.get()
|
||||||
if (last_message_id.get() > d->last_new_message_id.get()) { // if last message is really a new message
|
if (last_message_id.get() > d->last_new_message_id.get()) { // if last message is really a new message
|
||||||
d->last_new_message_id = MessageId();
|
d->last_new_message_id = MessageId();
|
||||||
set_dialog_last_message_id(d, MessageId(), "on_get_channel_dialog 20");
|
set_dialog_last_message_id(d, MessageId(), "on_get_channel_dialog 20");
|
||||||
|
Reference in New Issue
Block a user