diff --git a/Telegram/SourceFiles/data/data_session.cpp b/Telegram/SourceFiles/data/data_session.cpp index d8782132e..f5b5553ce 100644 --- a/Telegram/SourceFiles/data/data_session.cpp +++ b/Telegram/SourceFiles/data/data_session.cpp @@ -1957,6 +1957,19 @@ rpl::producer<> Session::pinnedDialogsOrderUpdated() const { return _pinnedDialogsOrderUpdated.events(); } +Session::CreditsSubsRebuilderPtr Session::createCreditsSubsRebuilder() { + if (auto result = activeCreditsSubsRebuilder()) { + return result; + } + auto result = std::make_shared(); + _creditsSubsRebuilder = result; + return result; +} + +Session::CreditsSubsRebuilderPtr Session::activeCreditsSubsRebuilder() const { + return _creditsSubsRebuilder.lock(); +} + void Session::registerHeavyViewPart(not_null view) { _heavyViewParts.emplace(view); } diff --git a/Telegram/SourceFiles/data/data_session.h b/Telegram/SourceFiles/data/data_session.h index b9d048062..84e735c09 100644 --- a/Telegram/SourceFiles/data/data_session.h +++ b/Telegram/SourceFiles/data/data_session.h @@ -70,6 +70,7 @@ class Chatbots; class BusinessInfo; struct ReactionId; struct UnavailableReason; +struct CreditsStatusSlice; struct RepliesReadTillUpdate { FullMsgId id; @@ -337,6 +338,11 @@ public: void notifyPinnedDialogsOrderUpdated(); [[nodiscard]] rpl::producer<> pinnedDialogsOrderUpdated() const; + using CreditsSubsRebuilder = rpl::event_stream; + using CreditsSubsRebuilderPtr = std::shared_ptr; + [[nodiscard]] CreditsSubsRebuilderPtr createCreditsSubsRebuilder(); + [[nodiscard]] CreditsSubsRebuilderPtr activeCreditsSubsRebuilder() const; + void registerRestricted( not_null item, const QString &reason); @@ -1095,6 +1101,8 @@ private: MessageIdsList _mimeForwardIds; + std::weak_ptr _creditsSubsRebuilder; + using CredentialsWithGeneration = std::pair< const Passport::SavedCredentials, int>;