From 25d0123b9fc16c3bc4b41b9c2b8b0dff3a654834 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Wed, 22 Nov 2023 05:29:31 +0300 Subject: [PATCH] Added more universal RecentPostId for saved state of statistics info. --- .../info/statistics/info_statistics_common.h | 16 +++++++++++++++- .../statistics/info_statistics_inner_widget.cpp | 3 ++- .../info_statistics_recent_message.cpp | 5 ++--- .../statistics/info_statistics_recent_message.h | 2 +- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/Telegram/SourceFiles/info/statistics/info_statistics_common.h b/Telegram/SourceFiles/info/statistics/info_statistics_common.h index cc943ca688..c2fb5ccc53 100644 --- a/Telegram/SourceFiles/info/statistics/info_statistics_common.h +++ b/Telegram/SourceFiles/info/statistics/info_statistics_common.h @@ -11,9 +11,23 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL namespace Info::Statistics { +struct RecentPostId final { + FullMsgId messageId; + FullStoryId storyId; + + [[nodiscard]] bool valid() const { + return messageId || storyId; + } + explicit operator bool() const { + return valid(); + } + friend inline auto operator<=>(RecentPostId, RecentPostId) = default; + friend inline bool operator==(RecentPostId, RecentPostId) = default; +}; + struct SavedState final { Data::AnyStatistics stats; - base::flat_map recentPostPreviews; + base::flat_map recentPostPreviews; Data::PublicForwardsSlice publicForwardsFirstSlice; int recentPostsExpanded = 0; }; diff --git a/Telegram/SourceFiles/info/statistics/info_statistics_inner_widget.cpp b/Telegram/SourceFiles/info/statistics/info_statistics_inner_widget.cpp index ef3631fe47..cc1098ae61 100644 --- a/Telegram/SourceFiles/info/statistics/info_statistics_inner_widget.cpp +++ b/Telegram/SourceFiles/info/statistics/info_statistics_inner_widget.cpp @@ -704,7 +704,8 @@ void InnerWidget::fillRecentPosts() { messageWrap, rpl::never(), st::statisticsRecentPostButton)); - auto it = _state.recentPostPreviews.find(item->fullId().msg); + auto it = _state.recentPostPreviews.find( + { .messageId = item->fullId() }); auto cachedPreview = (it != end(_state.recentPostPreviews)) ? base::take(it->second) : QImage(); diff --git a/Telegram/SourceFiles/info/statistics/info_statistics_recent_message.cpp b/Telegram/SourceFiles/info/statistics/info_statistics_recent_message.cpp index 022da23a89..f698611174 100644 --- a/Telegram/SourceFiles/info/statistics/info_statistics_recent_message.cpp +++ b/Telegram/SourceFiles/info/statistics/info_statistics_recent_message.cpp @@ -73,7 +73,6 @@ MessagePreview::MessagePreview( int shares, QImage cachedPreview) : Ui::RpWidget(parent) -, _item(item) , _date( st::statisticsHeaderTitleTextStyle, Ui::FormatDateTime(ItemDateTime(item))) @@ -98,7 +97,7 @@ MessagePreview::MessagePreview( , _preview(std::move(cachedPreview)) { _text.setMarkedText( st::defaultPeerListItem.nameStyle, - _item->toPreview({ .generateImages = false }).text, + item->toPreview({ .generateImages = false }).text, Ui::DialogTextOptions(), Core::MarkedTextContext{ .session = &item->history()->session(), @@ -238,7 +237,7 @@ void MessagePreview::paintEvent(QPaintEvent *e) { void MessagePreview::saveState(SavedState &state) const { if (!_lifetimeDownload) { - state.recentPostPreviews[_item->fullId().msg] = _preview; + state.recentPostPreviews[{ .messageId = _messageId }] = _preview; } } diff --git a/Telegram/SourceFiles/info/statistics/info_statistics_recent_message.h b/Telegram/SourceFiles/info/statistics/info_statistics_recent_message.h index 147b5bcb23..60ca2d420c 100644 --- a/Telegram/SourceFiles/info/statistics/info_statistics_recent_message.h +++ b/Telegram/SourceFiles/info/statistics/info_statistics_recent_message.h @@ -43,7 +43,7 @@ protected: private: void processPreview(not_null item); - not_null _item; + FullMsgId _messageId; Ui::Text::String _text; Ui::Text::String _date; Ui::Text::String _views;