diff options
| author | levlam <levlam@telegram.org> | 2026-06-30 19:18:49 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2026-06-30 19:18:49 +0300 |
| commit | 8475ea1b3617371ffd41be9daa6878d8910bd7e6 (patch) | |
| tree | 416ecc6887d901963cc0a341fdf8156e6f3c8135 /td | |
| parent | bc4d9701607fb91a985af06640074b90411d1718 (diff) | |
Add and use MessagesManager::get_message_id_of_ephemeral_message_id.
Diffstat (limited to 'td')
| -rw-r--r-- | td/telegram/MessagesManager.cpp | 20 | ||||
| -rw-r--r-- | td/telegram/MessagesManager.h | 2 |
2 files changed, 18 insertions, 4 deletions
diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 51887b568..eaffb3106 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -4219,6 +4219,19 @@ void MessagesManager::skip_old_pending_pts_update(tl_object_ptr<telegram_api::Up << "Receive useless update " << oneline(to_string(update)) << " from " << source; } +MessageId MessagesManager::get_message_id_of_ephemeral_message_id(DialogId dialog_id, + EphemeralMessageId ephemeral_message_id) { + Dialog *d = get_dialog_force(dialog_id, "get_message_id_of_ephemeral_message_id"); + if (d == nullptr) { + return MessageId(); + } + auto it = d->ephemeral_message_ids.find(ephemeral_message_id); + if (it == d->ephemeral_message_ids.end()) { + return MessageId(); + } + return it->second; +} + void MessagesManager::on_new_ephemeral_message(telegram_api::object_ptr<telegram_api::ephemeralMessage> &&message) { auto message_info = parse_ephemeral_message(td_, std::move(message), "on_new_ephemeral_message"); auto dialog_id = message_info.dialog_id; @@ -4231,7 +4244,7 @@ void MessagesManager::on_new_ephemeral_message(telegram_api::object_ptr<telegram force_create_dialog(dialog_id, "on_new_ephemeral_message"); d = get_dialog(dialog_id); } - if (d == nullptr) { + if (d == nullptr || d->ephemeral_message_ids.count(message_info.ephemeral_message_id) != 0) { return; } message_info.message_id = get_next_local_message_id(d); @@ -4245,11 +4258,10 @@ void MessagesManager::on_edited_ephemeral_message(telegram_api::object_ptr<teleg return; } - Dialog *d = get_dialog_force(dialog_id, "on_edited_ephemeral_message"); - if (d == nullptr || d->ephemeral_message_ids.count(message_info.ephemeral_message_id) == 0) { + message_info.message_id = get_message_id_of_ephemeral_message_id(dialog_id, message_info.ephemeral_message_id); + if (message_info.message_id == MessageId()) { return; } - message_info.message_id = d->ephemeral_message_ids[message_info.ephemeral_message_id]; on_get_message(std::move(message_info), false, "on_edited_ephemeral_message"); } diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h index 4b8036697..096050db6 100644 --- a/td/telegram/MessagesManager.h +++ b/td/telegram/MessagesManager.h @@ -314,6 +314,8 @@ class MessagesManager final : public Actor { void on_update_dialog_message_ttl(DialogId dialog_id, MessageTtl message_ttl); + MessageId get_message_id_of_ephemeral_message_id(DialogId dialog_id, EphemeralMessageId ephemeral_message_id); + void on_new_ephemeral_message(telegram_api::object_ptr<telegram_api::ephemeralMessage> &&message); void on_edited_ephemeral_message(telegram_api::object_ptr<telegram_api::ephemeralMessage> &&message); |
