/* 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 "base/unique_qptr.h" #include "ui/effects/message_sending_animation_common.h" namespace Window { class SessionController; } // namespace Window namespace Ui { class RpWidget; class ChatTheme; class MessageSendingAnimationController final { public: explicit MessageSendingAnimationController( not_null controller); struct SendingInfoTo { rpl::producer globalEndGeometry; not_null item; not_null theme; }; void appendSending(MessageSendingAnimationFrom from); void startAnimation(SendingInfoTo &&to); [[nodiscard]] bool hasLocalMessage(MsgId msgId) const; [[nodiscard]] bool hasAnimatedMessage(not_null item) const; private: const not_null _controller; base::flat_map _itemSendPending; base::flat_map< not_null, base::unique_qptr> _processing; }; } // namespace Ui