/* 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/weak_ptr.h" #include "base/object_ptr.h" #include "calls/group/calls_group_common.h" class PeerData; namespace Ui { class BoxContent; class VerticalLayout; } // namespace Ui namespace style { struct FlatLabel; struct RoundButton; struct IconButton; struct PopupMenu; } // namespace style namespace Calls::Group { struct JoinInfo; class StartRtmpProcess final { public: StartRtmpProcess() = default; ~StartRtmpProcess(); void start( not_null peer, Fn)> showBox, Fn showToast, Fn done); static void FillRtmpRows( not_null container, bool divider, Fn)> showBox, Fn showToast, rpl::producer &&data, const style::FlatLabel *labelStyle, const style::IconButton *showButtonStyle, const style::FlatLabel *subsectionTitleStyle, const style::RoundButton *attentionButtonStyle, const style::PopupMenu *popupMenuStyle); private: void requestUrl(bool revoke); void processUrl(RtmpInfo data); void createBox(); void finish(JoinInfo info); struct RtmpRequest { not_null peer; rpl::variable data; Fn)> showBox; Fn showToast; Fn done; base::has_weak_ptr guard; QPointer box; rpl::lifetime lifetime; mtpRequestId id = 0; }; std::unique_ptr _request; }; } // namespace Calls::Group