diff --git a/Telegram/SourceFiles/info/profile/info_profile_actions.cpp b/Telegram/SourceFiles/info/profile/info_profile_actions.cpp index c083c9e080..f8258e938f 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_actions.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_actions.cpp @@ -1164,20 +1164,6 @@ private: object_ptr setupInfo(); void setupMainApp(); void setupBotPermissions(); - void setupMainButtons(); - Ui::MultiSlideTracker fillTopicButtons(); - Ui::MultiSlideTracker fillUserButtons( - not_null user); - Ui::MultiSlideTracker fillChannelButtons( - not_null channel); - Ui::MultiSlideTracker fillDiscussionButtons( - not_null channel); - void addShowTopicsListButton( - Ui::MultiSlideTracker &tracker, - not_null forum); - void addViewChannelButton( - Ui::MultiSlideTracker &tracker, - not_null channel); void addReportReaction(Ui::MultiSlideTracker &tracker); void addReportReaction( @@ -2078,33 +2064,6 @@ void DetailsFiller::setupBotPermissions() { AddSkip(_wrap); } -void DetailsFiller::setupMainButtons() { - auto wrapButtons = [=](auto &&callback) { - auto topSkip = _wrap->add(CreateSlideSkipWidget(_wrap)); - auto tracker = callback(); - topSkip->toggleOn(std::move(tracker).atLeastOneShownValue()); - }; - if (_topic) { - wrapButtons([=] { - return fillTopicButtons(); - }); - } else if (const auto user = _peer->asUser()) { - wrapButtons([=] { - return fillUserButtons(user); - }); - } else if (const auto channel = _peer->asChannel()) { - if (channel->isMegagroup()) { - wrapButtons([=] { - return fillDiscussionButtons(channel); - }); - } else { - wrapButtons([=] { - return fillChannelButtons(channel); - }); - } - } -} - void DetailsFiller::addReportReaction(Ui::MultiSlideTracker &tracker) { v::match(_origin.data, [&](GroupReactionOrigin data) { const auto user = _peer->asUser(); @@ -2161,154 +2120,6 @@ void DetailsFiller::addReportReaction( st::infoMainButtonAttention); } -Ui::MultiSlideTracker DetailsFiller::fillTopicButtons() { - Ui::MultiSlideTracker tracker; - addShowTopicsListButton(tracker, _topic->forum()); - return tracker; -} - -void DetailsFiller::addShowTopicsListButton( - Ui::MultiSlideTracker &tracker, - not_null forum) { - using namespace rpl::mappers; - - const auto window = _controller->parentController(); - const auto peer = forum->peer(); - auto showTopicsVisible = rpl::combine( - window->adaptive().oneColumnValue(), - window->shownForum().value(), - _1 || (_2 != forum)); - const auto callback = [=] { - if (const auto forum = peer->forum()) { - if (peer->useSubsectionTabs()) { - window->searchInChat(forum->history()); - } else { - window->showForum(forum); - } - } - }; - AddMainButton( - _wrap, - (forum->peer()->isBot() - ? tr::lng_bot_show_threads_list() - : tr::lng_forum_show_topics_list()), - std::move(showTopicsVisible), - callback, - tracker); -} - -Ui::MultiSlideTracker DetailsFiller::fillUserButtons( - not_null user) { - using namespace rpl::mappers; - - Ui::MultiSlideTracker tracker; - if (user->isSelf()) { - return tracker; - } - auto window = _controller->parentController(); - - auto addSendMessageButton = [&] { - auto activePeerValue = window->activeChatValue( - ) | rpl::map([](Dialogs::Key key) { - return key.peer(); - }); - auto sendMessageVisible = rpl::combine( - _controller->wrapValue(), - std::move(activePeerValue), - (_1 != Wrap::Side) || (_2 != user)); - auto sendMessage = [window, user] { - window->showPeerHistory( - user, - Window::SectionShow::Way::Forward); - }; - AddMainButton( - _wrap, - tr::lng_profile_send_message(), - std::move(sendMessageVisible), - std::move(sendMessage), - tracker); - }; - - if (!user->isVerifyCodes()) { - addSendMessageButton(); - } - if (!_sublist) { - addReportReaction(tracker); - } - - return tracker; -} - -Ui::MultiSlideTracker DetailsFiller::fillChannelButtons( - not_null channel) { - Ui::MultiSlideTracker tracker; - addViewChannelButton(tracker, channel); - return tracker; -} - -void DetailsFiller::addViewChannelButton( - Ui::MultiSlideTracker &tracker, - not_null channel) { - using namespace rpl::mappers; - - auto window = _controller->parentController(); - auto activePeerValue = window->activeChatValue( - ) | rpl::map([](Dialogs::Key key) { - return key.peer(); - }); - auto viewChannelVisible = rpl::combine( - _controller->wrapValue(), - std::move(activePeerValue), - (_1 != Wrap::Side) || (_2 != channel)); - auto viewChannel = [=] { - window->showPeerHistory( - channel, - Window::SectionShow::Way::Forward); - }; - AddMainButton( - _wrap, - tr::lng_profile_view_channel(), - std::move(viewChannelVisible), - std::move(viewChannel), - tracker); -} - -Ui::MultiSlideTracker DetailsFiller::fillDiscussionButtons( - not_null channel) { - using namespace rpl::mappers; - - Ui::MultiSlideTracker tracker; - auto window = _controller->parentController(); - auto viewDiscussionVisible = window->dialogsEntryStateValue( - ) | rpl::map([=](const Dialogs::EntryState &state) { - const auto history = state.key.history(); - return (state.section == Dialogs::EntryState::Section::Replies) - && history - && (history->peer == channel); - }); - auto viewDiscussion = [=] { - window->showPeerHistory( - channel, - Window::SectionShow::Way::Forward); - }; - AddMainButton( - _wrap, - tr::lng_profile_view_discussion(), - std::move(viewDiscussionVisible), - std::move(viewDiscussion), - tracker); - - if (const auto forum = channel->forum()) { - if (channel->useSubsectionTabs()) { - addShowTopicsListButton(tracker, forum); - } - } else if (const auto broadcast = channel->monoforumBroadcast()) { - addViewChannelButton(tracker, broadcast); - } - - return tracker; -} - object_ptr DetailsFiller::fill() { Expects(!_topic || !_topic->creating()); @@ -2331,7 +2142,6 @@ object_ptr DetailsFiller::fill() { } } } - setupMainButtons(); add(CreateSkipWidget(_wrap)); return std::move(_wrap);