Show 'about' in voice chats for everyone.

This commit is contained in:
John Preston 2021-03-10 19:33:51 +04:00
parent ecbbdd5e74
commit cd8c9a58df
3 changed files with 25 additions and 19 deletions

View File

@ -374,9 +374,7 @@ Row::Row(
: PeerListRow(participantPeer) : PeerListRow(participantPeer)
, _delegate(delegate) { , _delegate(delegate) {
refreshStatus(); refreshStatus();
if (const auto channel = participantPeer->asChannel()) { _aboutText = participantPeer->about();
_aboutText = channel->about();
}
} }
void Row::setSkipLevelUpdate(bool value) { void Row::setSkipLevelUpdate(bool value) {
@ -882,10 +880,8 @@ MembersController::MembersController(
_peer->session().changes().peerUpdates( _peer->session().changes().peerUpdates(
Data::PeerUpdate::Flag::About Data::PeerUpdate::Flag::About
) | rpl::start_with_next([=](const Data::PeerUpdate &update) { ) | rpl::start_with_next([=](const Data::PeerUpdate &update) {
if (const auto channel = update.peer->asChannel()) { if (const auto row = findRow(update.peer)) {
if (const auto row = findRow(channel)) { row->setAbout(update.peer->about());
row->setAbout(channel->about());
}
} }
}, _lifetime); }, _lifetime);
} }
@ -1681,7 +1677,10 @@ void MembersController::addMuteActionsToContextMenu(
|| isMe(participantPeer) || isMe(participantPeer)
|| (muteState == Row::State::Inactive || (muteState == Row::State::Inactive
&& participantIsCallAdmin && participantIsCallAdmin
&& _peer->canManageGroupCall())) { && _peer->canManageGroupCall())
|| (isMuted
&& !_peer->canManageGroupCall()
&& muteState != Row::State::MutedByMe)) {
return nullptr; return nullptr;
} }
auto callback = [=] { auto callback = [=] {
@ -1800,13 +1799,18 @@ rpl::producer<int> GroupMembers::desiredHeightValue() const {
void GroupMembers::setupAddMember(not_null<GroupCall*> call) { void GroupMembers::setupAddMember(not_null<GroupCall*> call) {
using namespace rpl::mappers; using namespace rpl::mappers;
_canAddMembers = Data::CanWriteValue(call->peer().get()); const auto peer = call->peer();
SubscribeToMigration( if (peer->isBroadcast()) {
call->peer(), _canAddMembers = false; // #TODO calls invite members?
lifetime(), } else {
[=](not_null<ChannelData*> channel) { _canAddMembers = Data::CanWriteValue(peer.get());
_canAddMembers = Data::CanWriteValue(channel.get()); SubscribeToMigration(
}); peer,
lifetime(),
[=](not_null<ChannelData*> channel) {
_canAddMembers = Data::CanWriteValue(channel.get());
});
}
_canAddMembers.value( _canAddMembers.value(
) | rpl::start_with_next([=](bool can) { ) | rpl::start_with_next([=](bool can) {

View File

@ -283,7 +283,11 @@ GroupPanel::GroupPanel(not_null<GroupCall*> call)
showAndActivate(); showAndActivate();
} }
GroupPanel::~GroupPanel() = default; GroupPanel::~GroupPanel() {
if (_menu) {
_menu.destroy();
}
}
void GroupPanel::setupRealCallViewers(not_null<GroupCall*> call) { void GroupPanel::setupRealCallViewers(not_null<GroupCall*> call) {
const auto peer = call->peer(); const auto peer = call->peer();

View File

@ -276,9 +276,7 @@ void GroupCall::applyParticipantsSlice(
return; return;
} }
if (const auto about = data.vabout()) { if (const auto about = data.vabout()) {
if (const auto channel = participantPeer->asChannel()) { participantPeer->setAbout(qs(*about));
channel->setAbout(qs(*about));
}
} }
const auto was = (i != end(_participants)) const auto was = (i != end(_participants))
? std::make_optional(*i) ? std::make_optional(*i)