diff options
Diffstat (limited to 'td/telegram/MessagesManager.cpp')
| -rw-r--r-- | td/telegram/MessagesManager.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index cec112a63..7cc2c1a7a 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -4306,18 +4306,28 @@ void MessagesManager::on_new_ephemeral_message(telegram_api::object_ptr<telegram on_get_message(std::move(message_info), true, "on_new_ephemeral_message"); } -void MessagesManager::on_edited_ephemeral_message(telegram_api::object_ptr<telegram_api::ephemeralMessage> &&message) { +MessageFullId MessagesManager::on_edited_ephemeral_message( + telegram_api::object_ptr<telegram_api::ephemeralMessage> &&message, bool force) { auto message_info = parse_ephemeral_message(td_, std::move(message), "on_edited_ephemeral_message"); auto dialog_id = message_info.dialog_id; if (!dialog_id.is_valid()) { - return; + return MessageFullId(); } 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; + if (!force) { + return MessageFullId(); + } + force_create_dialog(dialog_id, "on_edited_ephemeral_message", true); + Dialog *d = get_dialog(dialog_id); + if (d == nullptr) { + return MessageFullId(); + } + CHECK(d->ephemeral_message_ids.count(message_info.ephemeral_message_id) == 0); + message_info.message_id = get_next_local_message_id(d); } - on_get_message(std::move(message_info), false, "on_edited_ephemeral_message"); + return on_get_message(std::move(message_info), false, "on_edited_ephemeral_message"); } void MessagesManager::on_delete_ephemeral_messages(DialogId dialog_id, |
