/* 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/timer.h" class HistoryItem; struct HistoryMessageFactcheck; namespace HistoryView { class Message; class WebPage; } // namespace HistoryView namespace Main { class Session; } // namespace Main namespace Ui { class Show; } // namespace Ui namespace Data { class Factchecks final { public: explicit Factchecks(not_null session); void requestFor(not_null item); [[nodiscard]] std::unique_ptr makeMedia( not_null view, not_null factcheck); [[nodiscard]] bool canEdit(not_null item) const; [[nodiscard]] int lengthLimit() const; void save( FullMsgId itemId, TextWithEntities text, Fn done); void save( FullMsgId itemId, const TextWithEntities &was, TextWithEntities text, std::shared_ptr show); private: [[nodiscard]] bool canEdit() const; void subscribeIfNotYet(); void request(); const not_null _session; base::Timer _requestTimer; base::flat_set> _pending; std::vector _requested; mtpRequestId _requestId = 0; bool _subscribed = false; rpl::lifetime _lifetime; }; } // namespace Data