/* 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 "data/data_subscription_option.h" #include "mtproto/sender.h" class ApiWrap; namespace Main { class Session; } // namespace Main namespace Api { class Premium final { public: explicit Premium(not_null api); void reload(); [[nodiscard]] rpl::producer statusTextValue() const; [[nodiscard]] auto videos() const -> const base::flat_map> &; [[nodiscard]] rpl::producer<> videosUpdated() const; [[nodiscard]] auto stickers() const -> const std::vector> &; [[nodiscard]] rpl::producer<> stickersUpdated() const; [[nodiscard]] auto cloudSet() const -> const std::vector> &; [[nodiscard]] rpl::producer<> cloudSetUpdated() const; [[nodiscard]] int64 monthlyAmount() const; [[nodiscard]] QString monthlyCurrency() const; [[nodiscard]] auto subscriptionOptions() const -> const Data::SubscriptionOptions &; private: void reloadPromo(); void reloadStickers(); void reloadCloudSet(); const not_null _session; MTP::Sender _api; mtpRequestId _promoRequestId = 0; std::optional _statusText; rpl::event_stream _statusTextUpdates; base::flat_map> _videos; rpl::event_stream<> _videosUpdated; mtpRequestId _stickersRequestId = 0; uint64 _stickersHash = 0; std::vector> _stickers; rpl::event_stream<> _stickersUpdated; mtpRequestId _cloudSetRequestId = 0; uint64 _cloudSetHash = 0; std::vector> _cloudSet; rpl::event_stream<> _cloudSetUpdated; int64 _monthlyAmount = 0; QString _monthlyCurrency; Data::SubscriptionOptions _subscriptionOptions; }; } // namespace Api