/* 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 #include "base/enum_mask.h" namespace Data { struct MessagesResult; } // namespace Data namespace Storage { struct SparseIdsListResult; struct SharedMediaAddNew; struct SharedMediaAddExisting; struct SharedMediaAddSlice; struct SharedMediaRemoveOne; struct SharedMediaRemoveAll; struct SharedMediaInvalidateBottom; struct SharedMediaQuery; using SharedMediaResult = SparseIdsListResult; struct SharedMediaSliceUpdate; struct UserPhotosAddNew; struct UserPhotosAddSlice; struct UserPhotosRemoveOne; struct UserPhotosRemoveAfter; struct UserPhotosQuery; struct UserPhotosResult; struct UserPhotosSliceUpdate; //struct FeedMessagesAddNew; // #feed //struct FeedMessagesAddSlice; //struct FeedMessagesRemoveOne; //struct FeedMessagesRemoveAll; //struct FeedMessagesInvalidate; //struct FeedMessagesInvalidateBottom; //struct FeedMessagesQuery; //using FeedMessagesResult = Data::MessagesResult; //struct FeedMessagesSliceUpdate; class Facade { public: Facade(); void add(SharedMediaAddNew &&query); void add(SharedMediaAddExisting &&query); void add(SharedMediaAddSlice &&query); void remove(SharedMediaRemoveOne &&query); void remove(SharedMediaRemoveAll &&query); void invalidate(SharedMediaInvalidateBottom &&query); rpl::producer query(SharedMediaQuery &&query) const; rpl::producer sharedMediaSliceUpdated() const; rpl::producer sharedMediaOneRemoved() const; rpl::producer sharedMediaAllRemoved() const; rpl::producer sharedMediaBottomInvalidated() const; void add(UserPhotosAddNew &&query); void add(UserPhotosAddSlice &&query); void remove(UserPhotosRemoveOne &&query); void remove(UserPhotosRemoveAfter &&query); rpl::producer query(UserPhotosQuery &&query) const; rpl::producer userPhotosSliceUpdated() const; //void add(FeedMessagesAddNew &&query); // #feed //void add(FeedMessagesAddSlice &&query); //void remove(FeedMessagesRemoveOne &&query); //void remove(FeedMessagesRemoveAll &&query); //void invalidate(FeedMessagesInvalidate &&query); //void invalidate(FeedMessagesInvalidateBottom &&query); //rpl::producer query( // FeedMessagesQuery &&query) const; //rpl::producer feedMessagesSliceUpdated() const; //rpl::producer feedMessagesOneRemoved() const; //rpl::producer feedMessagesAllRemoved() const; //rpl::producer feedMessagesInvalidated() const; //rpl::producer feedMessagesBottomInvalidated() const; ~Facade(); private: class Impl; const std::unique_ptr _impl; }; } // namespace Storage