/* 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 "mtproto/sender.h" #include "base/timer.h" class ApiWrap; class PeerData; namespace Main { class Session; } // namespace Main namespace Api { class ViewsManager final { public: explicit ViewsManager(not_null<ApiWrap*> api); void scheduleIncrement(not_null<HistoryItem*> item); void removeIncremented(not_null<PeerData*> peer); private: void viewsIncrement(); void done( QVector<MTPint> ids, const MTPmessages_MessageViews &result, mtpRequestId requestId); void fail(const MTP::Error &error, mtpRequestId requestId); const not_null<Main::Session*> _session; MTP::Sender _api; base::flat_map<not_null<PeerData*>, base::flat_set<MsgId>> _incremented; base::flat_map<not_null<PeerData*>, base::flat_set<MsgId>> _toIncrement; base::flat_map<not_null<PeerData*>, mtpRequestId> _incrementRequests; base::flat_map<mtpRequestId, not_null<PeerData*>> _incrementByRequest; base::Timer _incrementTimer; }; } // namespace Api