/* This file is part of Telegram Desktop, the official desktop application for the Telegram messaging service. For license and copyright information please follow this link: https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once #include "base/object_ptr.h" #include "info/statistics/info_statistics_common.h" #include "ui/widgets/scroll_area.h" #include "ui/wrap/vertical_layout.h" namespace Info { class Controller; } // namespace Info namespace Info::Statistics { class Memento; class MessagePreview; void FillLoading( not_null container, rpl::producer toggleOn, rpl::producer<> showFinished); class InnerWidget final : public Ui::VerticalLayout { public: struct ShowRequest final { PeerId info = PeerId(0); FullMsgId history; FullMsgId messageStatistic; FullStoryId storyStatistic; FullStoryId story; }; InnerWidget( QWidget *parent, not_null controller, not_null peer, FullMsgId contextId, FullStoryId storyId); [[nodiscard]] rpl::producer scrollToRequests() const; [[nodiscard]] rpl::producer showRequests() const; void showFinished(); void saveState(not_null memento); void restoreState(not_null memento); private: void load(); void fill(); void fillRecentPosts(not_null container); not_null _controller; not_null _peer; FullMsgId _contextId; FullStoryId _storyId; std::vector> _messagePreviews; SavedState _state; rpl::event_stream _scrollToRequests; rpl::event_stream _showRequests; rpl::event_stream<> _showFinished; rpl::event_stream _loaded; }; } // namespace Info::Statistics