Remove separate MessagesManager::on_update_scheduled_message_id.

This commit is contained in:
levlam 2022-06-23 17:05:43 +03:00
parent 3659842864
commit 638b4346ca
3 changed files with 21 additions and 47 deletions

View File

@ -28982,16 +28982,17 @@ void MessagesManager::on_imported_message_attachments_uploaded(int64 random_id,
}
bool MessagesManager::on_update_message_id(int64 random_id, MessageId new_message_id, const string &source) {
if (!new_message_id.is_valid() || !new_message_id.is_server()) {
if (!new_message_id.is_valid() && !new_message_id.is_valid_scheduled()) {
LOG(ERROR) << "Receive " << new_message_id << " in updateMessageId with random_id " << random_id << " from "
<< source;
return false;
}
CHECK(new_message_id.is_any_server());
auto it = being_sent_messages_.find(random_id);
if (it == being_sent_messages_.end()) {
// update about a new message sent from other device or a service message
LOG(INFO) << "Receive not send outgoing " << new_message_id << " with random_id = " << random_id;
LOG(INFO) << "Receive not sent outgoing " << new_message_id << " with random_id = " << random_id;
return true;
}
@ -29007,38 +29008,11 @@ bool MessagesManager::on_update_message_id(int64 random_id, MessageId new_messag
LOG(INFO) << "Save correspondence from " << new_message_id << " in " << dialog_id << " to " << old_message_id;
CHECK(old_message_id.is_yet_unsent());
update_message_ids_[FullMessageId(dialog_id, new_message_id)] = old_message_id;
return true;
}
bool MessagesManager::on_update_scheduled_message_id(int64 random_id, ScheduledServerMessageId new_message_id,
const string &source) {
if (!new_message_id.is_valid()) {
LOG(ERROR) << "Receive " << new_message_id << " in updateMessageId with random_id " << random_id << " from "
<< source;
return false;
if (new_message_id.is_scheduled()) {
update_scheduled_message_ids_[dialog_id][new_message_id.get_scheduled_server_message_id()] = old_message_id;
} else {
update_message_ids_[FullMessageId(dialog_id, new_message_id)] = old_message_id;
}
auto it = being_sent_messages_.find(random_id);
if (it == being_sent_messages_.end()) {
LOG(ERROR) << "Receive not send outgoing " << new_message_id << " with random_id = " << random_id;
return false;
}
auto dialog_id = it->second.get_dialog_id();
auto old_message_id = it->second.get_message_id();
being_sent_messages_.erase(it);
if (!have_message_force({dialog_id, old_message_id}, "on_update_scheduled_message_id")) {
delete_sent_message_on_server(dialog_id, MessageId(new_message_id, std::numeric_limits<int32>::max()),
old_message_id);
return true;
}
LOG(INFO) << "Save correspondence from " << new_message_id << " in " << dialog_id << " to " << old_message_id;
CHECK(old_message_id.is_yet_unsent());
update_scheduled_message_ids_[dialog_id][new_message_id] = old_message_id;
return true;
}

View File

@ -288,8 +288,6 @@ class MessagesManager final : public Actor {
bool on_update_message_id(int64 random_id, MessageId new_message_id, const string &source);
bool on_update_scheduled_message_id(int64 random_id, ScheduledServerMessageId new_message_id, const string &source);
void on_update_dialog_draft_message(DialogId dialog_id, tl_object_ptr<telegram_api::DraftMessage> &&draft_message);
void on_update_dialog_is_pinned(FolderId folder_id, DialogId dialog_id, bool is_pinned);

View File

@ -1796,16 +1796,20 @@ void UpdatesManager::on_pending_updates(vector<tl_object_ptr<telegram_api::Updat
size_t ordinary_new_message_count = 0;
size_t scheduled_new_message_count = 0;
size_t update_message_id_count = 0;
size_t update_count = 0;
for (auto &update : updates) {
if (update != nullptr) {
auto constructor_id = update->get_id();
if (constructor_id == telegram_api::updateNewMessage::ID ||
constructor_id == telegram_api::updateNewChannelMessage::ID) {
ordinary_new_message_count++;
} else if (constructor_id == telegram_api::updateNewScheduledMessage::ID) {
scheduled_new_message_count++;
} else if (constructor_id == telegram_api::updateMessageID::ID) {
if (constructor_id == telegram_api::updateMessageID::ID) {
update_message_id_count++;
} else {
update_count++;
if (constructor_id == telegram_api::updateNewMessage::ID ||
constructor_id == telegram_api::updateNewChannelMessage::ID) {
ordinary_new_message_count++;
} else if (constructor_id == telegram_api::updateNewScheduledMessage::ID) {
scheduled_new_message_count++;
}
}
}
}
@ -1835,15 +1839,13 @@ void UpdatesManager::on_pending_updates(vector<tl_object_ptr<telegram_api::Updat
if (id == telegram_api::updateMessageID::ID) {
LOG(INFO) << "Receive from " << source << " " << to_string(update);
auto sent_message_update = move_tl_object_as<telegram_api::updateMessageID>(update);
bool success = false;
MessageId message_id;
if (ordinary_new_message_count != 0) {
success = td_->messages_manager_->on_update_message_id(
sent_message_update->random_id_, MessageId(ServerMessageId(sent_message_update->id_)), source);
message_id = MessageId(ServerMessageId(sent_message_update->id_));
} else if (scheduled_new_message_count != 0) {
success = td_->messages_manager_->on_update_scheduled_message_id(
sent_message_update->random_id_, ScheduledServerMessageId(sent_message_update->id_), source);
message_id = MessageId(ScheduledServerMessageId(sent_message_update->id_), std::numeric_limits<int32>::max());
}
if (!success) {
if (!td_->messages_manager_->on_update_message_id(sent_message_update->random_id_, message_id, source)) {
for (auto &debug_update : updates) {
LOG(ERROR) << "Update: " << oneline(to_string(debug_update));
}