Remove allow_error from ReadHistoryQuery.
GitOrigin-RevId: 7f285eb790f55b3bcdddc5c912a1c1cb094719e7
This commit is contained in:
parent
821bc642cf
commit
a82dfe4735
@ -1300,15 +1300,13 @@ class ReadHistoryQuery : public Td::ResultHandler {
|
|||||||
class ReadChannelHistoryQuery : public Td::ResultHandler {
|
class ReadChannelHistoryQuery : public Td::ResultHandler {
|
||||||
Promise<Unit> promise_;
|
Promise<Unit> promise_;
|
||||||
ChannelId channel_id_;
|
ChannelId channel_id_;
|
||||||
bool allow_error_;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit ReadChannelHistoryQuery(Promise<Unit> &&promise) : promise_(std::move(promise)) {
|
explicit ReadChannelHistoryQuery(Promise<Unit> &&promise) : promise_(std::move(promise)) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void send(ChannelId channel_id, MessageId max_message_id, bool allow_error) {
|
void send(ChannelId channel_id, MessageId max_message_id) {
|
||||||
channel_id_ = channel_id;
|
channel_id_ = channel_id;
|
||||||
allow_error_ = allow_error;
|
|
||||||
auto input_channel = td->contacts_manager_->get_input_channel(channel_id);
|
auto input_channel = td->contacts_manager_->get_input_channel(channel_id);
|
||||||
CHECK(input_channel != nullptr);
|
CHECK(input_channel != nullptr);
|
||||||
|
|
||||||
@ -1322,9 +1320,6 @@ class ReadChannelHistoryQuery : public Td::ResultHandler {
|
|||||||
return on_error(id, result_ptr.move_as_error());
|
return on_error(id, result_ptr.move_as_error());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool result = result_ptr.ok();
|
|
||||||
LOG_IF(ERROR, !result && !allow_error_) << "Read history failed";
|
|
||||||
|
|
||||||
promise_.set_value(Unit());
|
promise_.set_value(Unit());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -12877,8 +12872,7 @@ Status MessagesManager::view_messages(DialogId dialog_id, const vector<MessageId
|
|||||||
|
|
||||||
bool need_read = force_read || d->is_opened;
|
bool need_read = force_read || d->is_opened;
|
||||||
bool is_secret = dialog_id.get_type() == DialogType::SecretChat;
|
bool is_secret = dialog_id.get_type() == DialogType::SecretChat;
|
||||||
MessageId max_incoming_message_id; // max remotely available viewed incoming message_id
|
MessageId max_message_id; // max server or local viewed message_id
|
||||||
MessageId max_message_id; // max server or local viewed message_id
|
|
||||||
vector<MessageId> read_content_message_ids;
|
vector<MessageId> read_content_message_ids;
|
||||||
for (auto message_id : message_ids) {
|
for (auto message_id : message_ids) {
|
||||||
auto message = get_message_force(d, message_id);
|
auto message = get_message_force(d, message_id);
|
||||||
@ -12887,13 +12881,8 @@ Status MessagesManager::view_messages(DialogId dialog_id, const vector<MessageId
|
|||||||
d->pending_viewed_message_ids.insert(message_id);
|
d->pending_viewed_message_ids.insert(message_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!message_id.is_yet_unsent() && message_id.get() > max_incoming_message_id.get()) {
|
if (!message_id.is_yet_unsent() && message_id.get() > max_message_id.get()) {
|
||||||
if (!message->is_outgoing && (message_id.is_server() || is_secret)) {
|
max_message_id = message_id;
|
||||||
max_incoming_message_id = message_id;
|
|
||||||
}
|
|
||||||
if (message_id.get() > max_message_id.get()) {
|
|
||||||
max_message_id = message_id;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (need_read) {
|
if (need_read) {
|
||||||
@ -12921,14 +12910,11 @@ Status MessagesManager::view_messages(DialogId dialog_id, const vector<MessageId
|
|||||||
if (dialog_id.get_type() != DialogType::SecretChat) {
|
if (dialog_id.get_type() != DialogType::SecretChat) {
|
||||||
if (last_read_message_id.get_prev_server_message_id().get() >
|
if (last_read_message_id.get_prev_server_message_id().get() >
|
||||||
d->last_read_inbox_message_id.get_prev_server_message_id().get()) {
|
d->last_read_inbox_message_id.get_prev_server_message_id().get()) {
|
||||||
bool allow_error =
|
read_history_on_server(d->dialog_id, last_read_message_id.get_prev_server_message_id(), 0);
|
||||||
max_incoming_message_id.get() <= d->last_read_inbox_message_id.get_prev_server_message_id().get();
|
|
||||||
read_history_on_server(d->dialog_id, last_read_message_id.get_prev_server_message_id(), allow_error, 0);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (last_read_message_id.get() > d->last_read_inbox_message_id.get()) {
|
if (last_read_message_id.get() > d->last_read_inbox_message_id.get()) {
|
||||||
bool allow_error = max_incoming_message_id.get() <= d->last_read_inbox_message_id.get();
|
read_history_on_server(d->dialog_id, last_read_message_id, 0);
|
||||||
read_history_on_server(d->dialog_id, last_read_message_id, allow_error, 0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -13654,8 +13640,7 @@ class MessagesManager::ReadHistoryOnServerLogEvent {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void MessagesManager::read_history_on_server(DialogId dialog_id, MessageId max_message_id, bool allow_error,
|
void MessagesManager::read_history_on_server(DialogId dialog_id, MessageId max_message_id, uint64 logevent_id) {
|
||||||
uint64 logevent_id) {
|
|
||||||
if (td_->auth_manager_->is_bot()) {
|
if (td_->auth_manager_->is_bot()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -13678,7 +13663,7 @@ void MessagesManager::read_history_on_server(DialogId dialog_id, MessageId max_m
|
|||||||
break;
|
break;
|
||||||
case DialogType::Channel: {
|
case DialogType::Channel: {
|
||||||
auto channel_id = dialog_id.get_channel_id();
|
auto channel_id = dialog_id.get_channel_id();
|
||||||
td_->create_handler<ReadChannelHistoryQuery>(std::move(promise))->send(channel_id, max_message_id, allow_error);
|
td_->create_handler<ReadChannelHistoryQuery>(std::move(promise))->send(channel_id, max_message_id);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DialogType::SecretChat: {
|
case DialogType::SecretChat: {
|
||||||
@ -25221,7 +25206,7 @@ void MessagesManager::on_binlog_events(vector<BinlogEvent> &&events) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
read_history_on_server(dialog_id, log_event.max_message_id_, true, event.id_);
|
read_history_on_server(dialog_id, log_event.max_message_id_, event.id_);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LogEvent::HandlerType::ReadMessageContentsOnServer: {
|
case LogEvent::HandlerType::ReadMessageContentsOnServer: {
|
||||||
|
@ -2094,7 +2094,7 @@ class MessagesManager : public Actor {
|
|||||||
|
|
||||||
void read_history_outbox(DialogId dialog_id, MessageId max_message_id, int32 read_date = -1);
|
void read_history_outbox(DialogId dialog_id, MessageId max_message_id, int32 read_date = -1);
|
||||||
|
|
||||||
void read_history_on_server(DialogId dialog_id, MessageId max_message_id, bool allow_error, uint64 logevent_id);
|
void read_history_on_server(DialogId dialog_id, MessageId max_message_id, uint64 logevent_id);
|
||||||
|
|
||||||
void read_secret_chat_outbox_inner(DialogId dialog_id, int32 up_to_date, int32 read_date);
|
void read_secret_chat_outbox_inner(DialogId dialog_id, int32 up_to_date, int32 read_date);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user