From 384f6d9a317ccd91980850c5a25fd0d9947a6691 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Fri, 10 Oct 2025 19:01:17 +0300 Subject: [PATCH] Added logging of api updates when deleted message is unknown. --- Telegram/SourceFiles/api/api_updates.cpp | 11 +++++++++++ Telegram/SourceFiles/history/history.cpp | 8 ++++++++ Telegram/SourceFiles/history/history.h | 3 +++ 3 files changed, 22 insertions(+) diff --git a/Telegram/SourceFiles/api/api_updates.cpp b/Telegram/SourceFiles/api/api_updates.cpp index ddfabb6a56..4326245720 100644 --- a/Telegram/SourceFiles/api/api_updates.cpp +++ b/Telegram/SourceFiles/api/api_updates.cpp @@ -1627,6 +1627,17 @@ void Updates::feedUpdate(const MTPUpdate &update) { auto &d = update.c_updateNewChannelMessage(); auto channel = session().data().channelLoaded(peerToChannel(PeerFromMessage(d.vmessage()))); const auto isDataLoaded = AllDataLoadedForMessage(&session(), d.vmessage()); + { + // Todo delete. + const auto messageId = IdFromMessage(d.vmessage()); + if (const auto history = channel ? session().data().historyLoaded(channel) : nullptr) { + if (history->isUnknownMessageDeleted(messageId)) { + LOG(("Unknown message deleted detected for channel %1, message %2") + .arg(channel->id.value & PeerId::kChatTypeMask) + .arg(messageId.bare)); + } + } + } if (!requestingDifference() && (!channel || isDataLoaded != DataIsLoadedResult::Ok)) { MTP_LOG(0, ("getDifference " "{ good - after not all data loaded in updateNewChannelMessage }%1" diff --git a/Telegram/SourceFiles/history/history.cpp b/Telegram/SourceFiles/history/history.cpp index 62ffcdd035..d8c12b0731 100644 --- a/Telegram/SourceFiles/history/history.cpp +++ b/Telegram/SourceFiles/history/history.cpp @@ -2976,11 +2976,19 @@ bool History::shouldBeInChatList() const { } void History::unknownMessageDeleted(MsgId messageId) { + LOG(("History::unknownMessageDeleted. Peer ID: %1, Message ID: %2.") + .arg(peer->id.value & PeerId::kChatTypeMask) + .arg(messageId.bare)); + _unknownDeletedMessages[messageId] = base::unixtime::now(); if (_inboxReadBefore && messageId >= *_inboxReadBefore) { owner().histories().requestDialogEntry(this); } } +bool History::isUnknownMessageDeleted(MsgId messageId) const { + return _unknownDeletedMessages.contains(messageId); +} + bool History::isServerSideUnread(not_null item) const { Expects(item->isRegular()); diff --git a/Telegram/SourceFiles/history/history.h b/Telegram/SourceFiles/history/history.h index e44f994523..63dac2ed2a 100644 --- a/Telegram/SourceFiles/history/history.h +++ b/Telegram/SourceFiles/history/history.h @@ -249,6 +249,7 @@ public: [[nodiscard]] bool lastMessageKnown() const; [[nodiscard]] bool lastServerMessageKnown() const; void unknownMessageDeleted(MsgId messageId); + [[nodiscard]] bool isUnknownMessageDeleted(MsgId messageId) const; void applyDialogTopMessage(MsgId topMessageId); void applyDialog(Data::Folder *requestFolder, const MTPDdialog &data); void applyPinnedUpdate(const MTPDupdateDialogPinned &data); @@ -668,6 +669,8 @@ private: base::flat_map _savingCloudDraftRequests; base::flat_map _forwardDrafts; + base::flat_map _unknownDeletedMessages; + QString _topPromotedMessage; QString _topPromotedType;