From cd8c9a58dfe2c7ac3b2a1cb617eccad10d01545a Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 10 Mar 2021 19:33:51 +0400 Subject: [PATCH] Show 'about' in voice chats for everyone. --- .../SourceFiles/calls/calls_group_members.cpp | 34 +++++++++++-------- .../SourceFiles/calls/calls_group_panel.cpp | 6 +++- Telegram/SourceFiles/data/data_group_call.cpp | 4 +-- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/Telegram/SourceFiles/calls/calls_group_members.cpp b/Telegram/SourceFiles/calls/calls_group_members.cpp index 70253264bf..68f596228e 100644 --- a/Telegram/SourceFiles/calls/calls_group_members.cpp +++ b/Telegram/SourceFiles/calls/calls_group_members.cpp @@ -374,9 +374,7 @@ Row::Row( : PeerListRow(participantPeer) , _delegate(delegate) { refreshStatus(); - if (const auto channel = participantPeer->asChannel()) { - _aboutText = channel->about(); - } + _aboutText = participantPeer->about(); } void Row::setSkipLevelUpdate(bool value) { @@ -882,10 +880,8 @@ MembersController::MembersController( _peer->session().changes().peerUpdates( Data::PeerUpdate::Flag::About ) | rpl::start_with_next([=](const Data::PeerUpdate &update) { - if (const auto channel = update.peer->asChannel()) { - if (const auto row = findRow(channel)) { - row->setAbout(channel->about()); - } + if (const auto row = findRow(update.peer)) { + row->setAbout(update.peer->about()); } }, _lifetime); } @@ -1681,7 +1677,10 @@ void MembersController::addMuteActionsToContextMenu( || isMe(participantPeer) || (muteState == Row::State::Inactive && participantIsCallAdmin - && _peer->canManageGroupCall())) { + && _peer->canManageGroupCall()) + || (isMuted + && !_peer->canManageGroupCall() + && muteState != Row::State::MutedByMe)) { return nullptr; } auto callback = [=] { @@ -1800,13 +1799,18 @@ rpl::producer GroupMembers::desiredHeightValue() const { void GroupMembers::setupAddMember(not_null call) { using namespace rpl::mappers; - _canAddMembers = Data::CanWriteValue(call->peer().get()); - SubscribeToMigration( - call->peer(), - lifetime(), - [=](not_null channel) { - _canAddMembers = Data::CanWriteValue(channel.get()); - }); + const auto peer = call->peer(); + if (peer->isBroadcast()) { + _canAddMembers = false; // #TODO calls invite members? + } else { + _canAddMembers = Data::CanWriteValue(peer.get()); + SubscribeToMigration( + peer, + lifetime(), + [=](not_null channel) { + _canAddMembers = Data::CanWriteValue(channel.get()); + }); + } _canAddMembers.value( ) | rpl::start_with_next([=](bool can) { diff --git a/Telegram/SourceFiles/calls/calls_group_panel.cpp b/Telegram/SourceFiles/calls/calls_group_panel.cpp index c2bb9fa8aa..c8a653972d 100644 --- a/Telegram/SourceFiles/calls/calls_group_panel.cpp +++ b/Telegram/SourceFiles/calls/calls_group_panel.cpp @@ -283,7 +283,11 @@ GroupPanel::GroupPanel(not_null call) showAndActivate(); } -GroupPanel::~GroupPanel() = default; +GroupPanel::~GroupPanel() { + if (_menu) { + _menu.destroy(); + } +} void GroupPanel::setupRealCallViewers(not_null call) { const auto peer = call->peer(); diff --git a/Telegram/SourceFiles/data/data_group_call.cpp b/Telegram/SourceFiles/data/data_group_call.cpp index 18fdd3d0f6..d89109c86a 100644 --- a/Telegram/SourceFiles/data/data_group_call.cpp +++ b/Telegram/SourceFiles/data/data_group_call.cpp @@ -276,9 +276,7 @@ void GroupCall::applyParticipantsSlice( return; } if (const auto about = data.vabout()) { - if (const auto channel = participantPeer->asChannel()) { - channel->setAbout(qs(*about)); - } + participantPeer->setAbout(qs(*about)); } const auto was = (i != end(_participants)) ? std::make_optional(*i)