/* 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 Api { class Authorizations final { public: explicit Authorizations(not_null api); struct Entry { uint64 hash = 0; bool incomplete = false; int apiId = 0; TimeId activeTime = 0; QString name, active, info, ip, location, system, platform; }; using List = std::vector; void reload(); void cancelCurrentRequest(); void requestTerminate( Fn &&done, Fn &&fail, std::optional hash = std::nullopt); [[nodiscard]] crl::time lastReceivedTime(); [[nodiscard]] List list() const; [[nodiscard]] rpl::producer listChanges() const; [[nodiscard]] int total() const; [[nodiscard]] rpl::producer totalChanges() const; void updateTTL(int days); [[nodiscard]] rpl::producer ttlDays() const; void toggleCallsDisabledHere(bool disabled) { toggleCallsDisabled(0, disabled); } void toggleCallsDisabled(uint64 hash, bool disabled); [[nodiscard]] bool callsDisabledHere() const; [[nodiscard]] rpl::producer callsDisabledHereValue() const; [[nodiscard]] rpl::producer callsDisabledHereChanges() const; private: MTP::Sender _api; mtpRequestId _requestId = 0; List _list; rpl::event_stream<> _listChanges; mtpRequestId _ttlRequestId = 0; rpl::variable _ttlDays = 0; base::flat_map _toggleCallsDisabledRequests; rpl::variable _callsDisabledHere; crl::time _lastReceived = 0; rpl::lifetime _lifetime; }; } // namespace Api