diff --git a/Telegram/SourceFiles/boxes/moderate_messages_box.cpp b/Telegram/SourceFiles/boxes/moderate_messages_box.cpp index ae25f7a687..29f7a22c0e 100644 --- a/Telegram/SourceFiles/boxes/moderate_messages_box.cpp +++ b/Telegram/SourceFiles/boxes/moderate_messages_box.cpp @@ -591,6 +591,7 @@ void SafeSubmitOnEnter(not_null box) { void DeleteChatBox(not_null box, not_null peer) { const auto container = box->verticalLayout(); + const auto userpicPeer = peer->userpicPaintingPeer(); const auto maybeUser = peer->asUser(); const auto isBot = maybeUser && maybeUser->isBot(); @@ -601,8 +602,9 @@ void DeleteChatBox(not_null box, not_null peer) { const auto userpic = Ui::CreateChild( container, - peer, - st::mainMenuUserpic); + userpicPeer, + st::mainMenuUserpic, + peer->userpicForceForumShape()); userpic->showSavedMessagesOnSelf(true); Ui::IconWithTitle( container, @@ -614,7 +616,7 @@ void DeleteChatBox(not_null box, not_null peer) { : maybeUser ? tr::lng_profile_delete_conversation() | Ui::Text::ToBold() : rpl::single( - peer->name() + userpicPeer->name() ) | Ui::Text::ToBold() | rpl::type_erased(), box->getDelegate()->style().title)); diff --git a/Telegram/SourceFiles/data/data_channel.cpp b/Telegram/SourceFiles/data/data_channel.cpp index 43182a6ad6..8365be635b 100644 --- a/Telegram/SourceFiles/data/data_channel.cpp +++ b/Telegram/SourceFiles/data/data_channel.cpp @@ -652,6 +652,9 @@ bool ChannelData::canPostStories() const { } bool ChannelData::canEditStories() const { + if (isMonoforum()) { + return false; + } return amCreator() || (adminRights() & AdminRight::EditStories); } @@ -678,7 +681,9 @@ bool ChannelData::hiddenPreHistory() const { } bool ChannelData::canAddMembers() const { - return isMegagroup() + return isMonoforum() + ? false + : isMegagroup() ? !amRestricted(ChatRestriction::AddParticipants) : ((adminRights() & AdminRight::InviteByLinkOrAdd) || amCreator()); } diff --git a/Telegram/SourceFiles/data/data_peer.cpp b/Telegram/SourceFiles/data/data_peer.cpp index 4556022257..7af00bad92 100644 --- a/Telegram/SourceFiles/data/data_peer.cpp +++ b/Telegram/SourceFiles/data/data_peer.cpp @@ -1206,6 +1206,8 @@ int PeerData::nameVersion() const { const QString &PeerData::name() const { if (const auto to = migrateTo()) { return to->name(); + } else if (const auto broadcast = monoforumBroadcast()) { + return broadcast->name(); } return _name; } @@ -1213,6 +1215,10 @@ const QString &PeerData::name() const { const QString &PeerData::shortName() const { if (const auto user = asUser()) { return user->firstName.isEmpty() ? user->lastName : user->firstName; + } else if (const auto to = migrateTo()) { + return to->shortName(); + } else if (const auto broadcast = monoforumBroadcast()) { + return broadcast->shortName(); } return _name; } @@ -1554,7 +1560,8 @@ bool PeerData::canRevokeFullHistory() const { } else if (const auto megagroup = asMegagroup()) { return megagroup->amCreator() && megagroup->membersCountKnown() - && megagroup->canDelete(); + && megagroup->canDelete() + && !megagroup->isMonoforum(); } return false; } diff --git a/Telegram/SourceFiles/window/window_peer_menu.cpp b/Telegram/SourceFiles/window/window_peer_menu.cpp index 84f738b55a..0f48fb48f7 100644 --- a/Telegram/SourceFiles/window/window_peer_menu.cpp +++ b/Telegram/SourceFiles/window/window_peer_menu.cpp @@ -1087,6 +1087,9 @@ void Filler::addManageChat() { void Filler::addBoostChat() { if (const auto channel = _peer->asChannel()) { + if (channel->isMonoforum()) { + return; + } const auto text = channel->isMegagroup() ? tr::lng_boost_group_button(tr::now) : tr::lng_boost_channel_button(tr::now); @@ -1101,6 +1104,9 @@ void Filler::addBoostChat() { void Filler::addViewStatistics() { if (const auto channel = _peer->asChannel()) { + if (channel->isMonoforum()) { + return; + } const auto controller = _controller; const auto weak = base::make_weak(_thread); const auto peer = _peer; @@ -1219,7 +1225,7 @@ void Filler::addThemeEdit() { } void Filler::addTTLSubmenu(bool addSeparator) { - if (_thread->asTopic()) { + if (_thread->asTopic() || !_peer || _peer->isMonoforum()) { return; // #TODO later forum } const auto validator = TTLMenu::TTLValidator( @@ -1346,6 +1352,7 @@ void Filler::addViewAsMessages() { void Filler::addViewAsTopics() { if (!_peer || !_peer->isForum() + || (_peer->asChannel()->flags() & ChannelDataFlag::ForumTabs) || !_controller->adaptive().isOneColumn()) { return; }