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)
, _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<int> GroupMembers::desiredHeightValue() const {
void GroupMembers::setupAddMember(not_null<GroupCall*> call) {
using namespace rpl::mappers;
_canAddMembers = Data::CanWriteValue(call->peer().get());
SubscribeToMigration(
call->peer(),
lifetime(),
[=](not_null<ChannelData*> 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<ChannelData*> channel) {
_canAddMembers = Data::CanWriteValue(channel.get());
});
}
_canAddMembers.value(
) | rpl::start_with_next([=](bool can) {

View File

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

View File

@ -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)