diff --git a/Telegram/SourceFiles/history/view/history_view_top_bar_widget.cpp b/Telegram/SourceFiles/history/view/history_view_top_bar_widget.cpp index e45537d964..fb20a34506 100644 --- a/Telegram/SourceFiles/history/view/history_view_top_bar_widget.cpp +++ b/Telegram/SourceFiles/history/view/history_view_top_bar_widget.cpp @@ -750,9 +750,7 @@ void TopBarWidget::infoClicked() { } else if (const auto topic = key.topic()) { _controller->showSection(std::make_shared(topic)); } else if (const auto sublist = key.sublist()) { - _controller->showSection(std::make_shared( - sublist, - Info::Section(Storage::SharedMediaType::Photo))); + _controller->showSection(std::make_shared(sublist)); } else if (key.peer()->savedSublistsInfo()) { _controller->showSection(std::make_shared( key.peer(), diff --git a/Telegram/SourceFiles/info/profile/info_profile_actions.cpp b/Telegram/SourceFiles/info/profile/info_profile_actions.cpp index 076f9e262b..31a9468dfb 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_actions.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_actions.cpp @@ -37,6 +37,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "data/data_forum.h" #include "data/data_forum_topic.h" #include "data/data_peer_values.h" +#include "data/data_saved_sublist.h" #include "data/data_session.h" #include "data/data_user.h" #include "data/notify/data_notify_settings.h" @@ -1019,6 +1020,10 @@ public: not_null parent, not_null peer, Origin origin); + DetailsFiller( + not_null controller, + not_null parent, + not_null sublist); DetailsFiller( not_null controller, not_null parent, @@ -1070,6 +1075,7 @@ private: not_null _parent; not_null _peer; Data::ForumTopic *_topic = nullptr; + Data::SavedSublist *_sublist = nullptr; Origin _origin; object_ptr _wrap; @@ -1169,6 +1175,17 @@ DetailsFiller::DetailsFiller( , _wrap(_parent) { } +DetailsFiller::DetailsFiller( + not_null controller, + not_null parent, + not_null sublist) +: _controller(controller) +, _parent(parent) +, _peer(sublist->sublistPeer()) +, _sublist(sublist) +, _wrap(_parent) { +} + DetailsFiller::DetailsFiller( not_null controller, not_null parent, @@ -2178,7 +2195,9 @@ Ui::MultiSlideTracker DetailsFiller::fillUserButtons( if (!user->isVerifyCodes()) { addSendMessageButton(); } - addReportReaction(tracker); + if (!_sublist) { + addReportReaction(tracker); + } return tracker; } @@ -2261,7 +2280,7 @@ object_ptr DetailsFiller::fill() { } else { add(object_ptr(_wrap)); } - if (const auto user = _peer->asUser()) { + if (const auto user = _sublist ? nullptr : _peer->asUser()) { add(setupPersonalChannel(user)); } add(CreateSkipWidget(_wrap)); @@ -2276,7 +2295,7 @@ object_ptr DetailsFiller::fill() { } } } - if (!_peer->isSelf()) { + if (!_sublist && !_peer->isSelf()) { add(setupMuteToggle()); } setupMainButtons(); @@ -2739,6 +2758,14 @@ object_ptr SetupDetails( return filler.fill(); } +object_ptr SetupDetails( + not_null controller, + not_null parent, + not_null sublist) { + DetailsFiller filler(controller, parent, sublist); + return filler.fill(); +} + object_ptr SetupDetails( not_null controller, not_null parent, @@ -2988,7 +3015,9 @@ Cover *AddCover( not_null container, not_null controller, not_null peer, - Data::ForumTopic *topic) { + Data::ForumTopic *topic, + Data::SavedSublist *sublist) { + const auto shown = sublist ? sublist->sublistPeer() : peer; const auto result = topic ? container->add(object_ptr( container, @@ -2997,13 +3026,13 @@ Cover *AddCover( : container->add(object_ptr( container, controller->parentController(), - peer, + shown, [=] { return controller->wrapWidget(); })); result->showSection( ) | rpl::start_with_next([=](Section section) { controller->showSection(topic ? std::make_shared(topic, section) - : std::make_shared(peer, section)); + : std::make_shared(shown, section)); }, result->lifetime()); result->setOnlineCount(rpl::single(0)); return result; @@ -3014,9 +3043,12 @@ void AddDetails( not_null controller, not_null peer, Data::ForumTopic *topic, + Data::SavedSublist *sublist, Origin origin) { if (topic) { container->add(SetupDetails(controller, container, topic)); + } else if (sublist) { + container->add(SetupDetails(controller, container, sublist)); } else { container->add(SetupDetails(controller, container, peer, origin)); } diff --git a/Telegram/SourceFiles/info/profile/info_profile_actions.h b/Telegram/SourceFiles/info/profile/info_profile_actions.h index 584f2d7f86..70f5ef054f 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_actions.h +++ b/Telegram/SourceFiles/info/profile/info_profile_actions.h @@ -16,6 +16,7 @@ class VerticalLayout; namespace Data { class ForumTopic; +class SavedSublist; } // namespace Data namespace Info { @@ -55,12 +56,14 @@ Cover *AddCover( not_null container, not_null controller, not_null peer, - Data::ForumTopic *topic); + Data::ForumTopic *topic, + Data::SavedSublist *sublist); void AddDetails( not_null container, not_null controller, not_null peer, Data::ForumTopic *topic, + Data::SavedSublist *sublist, Origin origin); } // namespace Info::Profile diff --git a/Telegram/SourceFiles/info/profile/info_profile_inner_widget.cpp b/Telegram/SourceFiles/info/profile/info_profile_inner_widget.cpp index 5c9b86ce47..5fe27a2eb7 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_inner_widget.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_inner_widget.cpp @@ -77,12 +77,12 @@ object_ptr InnerWidget::setupContent( } auto result = object_ptr(parent); - _cover = AddCover(result, _controller, _peer, _topic); + _cover = AddCover(result, _controller, _peer, _topic, _sublist); if (_topic && _topic->creating()) { return result; } - AddDetails(result, _controller, _peer, _topic, origin); + AddDetails(result, _controller, _peer, _topic, _sublist, origin); result->add(setupSharedMedia(result.data())); if (_topic || _sublist) { return result; diff --git a/Telegram/SourceFiles/info/profile/info_profile_widget.cpp b/Telegram/SourceFiles/info/profile/info_profile_widget.cpp index cf235c55df..6d0c8435fe 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_widget.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_widget.cpp @@ -110,6 +110,8 @@ void Widget::setInnerFocus() { rpl::producer Widget::title() { if (controller()->key().topic()) { return tr::lng_info_topic_title(); + } else if (controller()->key().sublist()) { + return tr::lng_info_user_title(); } const auto peer = controller()->key().peer(); if (const auto user = peer->asUser()) { diff --git a/Telegram/SourceFiles/info/stories/info_stories_inner_widget.cpp b/Telegram/SourceFiles/info/stories/info_stories_inner_widget.cpp index d0ab12cb50..4848fd3355 100644 --- a/Telegram/SourceFiles/info/stories/info_stories_inner_widget.cpp +++ b/Telegram/SourceFiles/info/stories/info_stories_inner_widget.cpp @@ -135,8 +135,10 @@ void InnerWidget::createProfileTop() { const auto peer = key.storiesPeer(); startTop(); - Profile::AddCover(_top, _controller, peer, nullptr); - Profile::AddDetails(_top, _controller, peer, nullptr, { v::null }); + + using namespace Profile; + AddCover(_top, _controller, peer, nullptr, nullptr); + AddDetails(_top, _controller, peer, nullptr, nullptr, { v::null }); auto tracker = Ui::MultiSlideTracker(); const auto dividerWrap = _top->add(