/* 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/object_ptr.h" class PeerListRow; namespace Ui { class Show; class BoxContent; class VerticalLayout; } // namespace Ui namespace Data { class ChatFilter; struct ChatFilterLink; } // namespace Data namespace Window { class SessionController; } // namespace Window [[nodiscard]] std::vector> CollectFilterLinkChats( const Data::ChatFilter &filter); [[nodiscard]] bool GoodForExportFilterLink( not_null window, const Data::ChatFilter &filter); void ExportFilterLink( FilterId id, const std::vector> &peers, Fn done, Fn fail); [[nodiscard]] object_ptr ShowLinkBox( not_null window, const Data::ChatFilter &filter, const Data::ChatFilterLink &link); [[nodiscard]] QString FilterChatStatusText(not_null peer); void SetupFilterLinks( not_null container, not_null window, rpl::producer> value, Fn currentFilter); void AddFilterSubtitleWithToggles( not_null container, rpl::producer text, int selectableCount, rpl::producer selectedCount, Fn toggle); [[nodiscard]] std::unique_ptr MakeFilterChatRow( not_null peer, const QString &status, bool disabled);