From da813f3ee9dc92574e423a55e465001e46f961e3 Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 27 Apr 2023 22:47:45 +0300 Subject: [PATCH] Support updates.difference in on_get_pts_update. --- td/generate/tl_writer_td.cpp | 3 ++- td/telegram/UpdatesManager.cpp | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/td/generate/tl_writer_td.cpp b/td/generate/tl_writer_td.cpp index 537eaa452..8bf195a04 100644 --- a/td/generate/tl_writer_td.cpp +++ b/td/generate/tl_writer_td.cpp @@ -63,7 +63,8 @@ bool TD_TL_writer::is_full_constructor_generated(const tl::tl_combinator *t, boo t->name == "encryptedChatWaiting" || t->name == "encryptedChatRequested" || t->name == "encryptedChat" || t->name == "langPackString" || t->name == "langPackStringPluralized" || t->name == "langPackStringDeleted" || t->name == "peerUser" || t->name == "peerChat" || t->name == "updateServiceNotification" || - t->name == "updateNewMessage" || t->name == "updateChannelTooLong" || t->name == "messages.stickerSet"; + t->name == "updateNewMessage" || t->name == "updateChannelTooLong" || t->name == "messages.stickerSet" || + t->name == "updates.differenceSlice"; } int TD_TL_writer::get_storer_type(const tl::tl_combinator *t, const std::string &storer_name) const { diff --git a/td/telegram/UpdatesManager.cpp b/td/telegram/UpdatesManager.cpp index 75f411a74..ea9bd07b8 100644 --- a/td/telegram/UpdatesManager.cpp +++ b/td/telegram/UpdatesManager.cpp @@ -1905,6 +1905,14 @@ void UpdatesManager::on_get_pts_update(int32 pts, LOG(DEBUG) << "Receive update with PTS " << pts << ": " << to_string(difference_ptr); switch (difference_ptr->get_id()) { + case telegram_api::updates_difference::ID: { + auto difference = move_tl_object_as(difference_ptr); + difference_ptr = telegram_api::make_object( + std::move(difference->new_messages_), std::move(difference->new_encrypted_messages_), + std::move(difference->other_updates_), std::move(difference->chats_), std::move(difference->users_), + std::move(difference->state_)); + // fallthrough + } case telegram_api::updates_differenceSlice::ID: { auto difference = move_tl_object_as(difference_ptr); @@ -1946,7 +1954,6 @@ void UpdatesManager::on_get_pts_update(int32 pts, break; } case telegram_api::updates_differenceEmpty::ID: - case telegram_api::updates_difference::ID: case telegram_api::updates_differenceTooLong::ID: { LOG(ERROR) << "Receive " << to_string(difference_ptr); break;