/* 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 class ApiWrap; class PeerData; class ChannelData; namespace Data { class Thread; } // namespace Data namespace Api { class UnreadThings final { public: explicit UnreadThings(not_null api); [[nodiscard]] bool trackMentions(Data::Thread *thread) const; [[nodiscard]] bool trackReactions(Data::Thread *thread) const; void preloadEnough(Data::Thread *thread); void mediaAndMentionsRead( const base::flat_set &readIds, ChannelData *channel = nullptr); void cancelRequests(not_null thread); private: void preloadEnoughMentions(not_null thread); void preloadEnoughReactions(not_null thread); void requestMentions(not_null thread, int loaded); void requestReactions(not_null thread, int loaded); const not_null _api; base::flat_map, mtpRequestId> _mentionsRequests; base::flat_map, mtpRequestId> _reactionsRequests; }; } // namespace Api