/* 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" class ApiWrap; namespace Main { class Session; } // namespace Main namespace Api { enum class UnarchiveOnNewMessage { None, NotInFoldersUnmuted, AnyUnmuted, }; class GlobalPrivacy final { public: explicit GlobalPrivacy(not_null api); void reload(Fn callback = nullptr); void updateArchiveAndMute(bool value); void updateUnarchiveOnNewMessage(UnarchiveOnNewMessage value); [[nodiscard]] bool archiveAndMuteCurrent() const; [[nodiscard]] rpl::producer archiveAndMute() const; [[nodiscard]] auto unarchiveOnNewMessageCurrent() const -> UnarchiveOnNewMessage; [[nodiscard]] auto unarchiveOnNewMessage() const -> rpl::producer; [[nodiscard]] rpl::producer showArchiveAndMute() const; [[nodiscard]] rpl::producer<> suggestArchiveAndMute() const; void dismissArchiveAndMuteSuggestion(); private: void apply(const MTPGlobalPrivacySettings &data); void update( bool archiveAndMute, UnarchiveOnNewMessage unarchiveOnNewMessage); const not_null _session; MTP::Sender _api; mtpRequestId _requestId = 0; rpl::variable _archiveAndMute = false; rpl::variable _unarchiveOnNewMessage = UnarchiveOnNewMessage::None; rpl::variable _showArchiveAndMute = false; std::vector> _callbacks; }; } // namespace Api