mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-05-22 07:43:57 +02:00
Give some admin rights to confcall creator.
This commit is contained in:
parent
c846eeed9d
commit
e33a866a63
7 changed files with 27 additions and 12 deletions
|
@ -424,7 +424,7 @@ void TopBar::initControls() {
|
||||||
if (const auto call = _call.get()) {
|
if (const auto call = _call.get()) {
|
||||||
call->hangup();
|
call->hangup();
|
||||||
} else if (const auto group = _groupCall.get()) {
|
} else if (const auto group = _groupCall.get()) {
|
||||||
if (!group->peer()->canManageGroupCall()) {
|
if (!group->canManage()) {
|
||||||
group->hangup();
|
group->hangup();
|
||||||
} else {
|
} else {
|
||||||
_show->showBox(
|
_show->showBox(
|
||||||
|
|
|
@ -1239,8 +1239,13 @@ void GroupCall::join(const MTPInputGroupCall &inputCall) {
|
||||||
}
|
}
|
||||||
}, _lifetime);
|
}, _lifetime);
|
||||||
|
|
||||||
|
if (_conferenceCall) {
|
||||||
|
_canManage = _conferenceCall->canManage();
|
||||||
|
return;
|
||||||
|
}
|
||||||
_peer->session().updates().addActiveChat(
|
_peer->session().updates().addActiveChat(
|
||||||
_peerStream.events_starting_with_copy(_peer));
|
_peerStream.events_starting_with_copy(_peer));
|
||||||
|
_canManage = Data::CanManageGroupCallValue(_peer);
|
||||||
SubscribeToMigration(_peer, _lifetime, [=](not_null<ChannelData*> group) {
|
SubscribeToMigration(_peer, _lifetime, [=](not_null<ChannelData*> group) {
|
||||||
_peer = group;
|
_peer = group;
|
||||||
_canManage = Data::CanManageGroupCallValue(_peer);
|
_canManage = Data::CanManageGroupCallValue(_peer);
|
||||||
|
|
|
@ -615,7 +615,7 @@ bool Members::Controller::needToReorder(not_null<Row*> row) const {
|
||||||
|
|
||||||
if (row->speaking()) {
|
if (row->speaking()) {
|
||||||
return !allRowsAboveAreSpeaking(row);
|
return !allRowsAboveAreSpeaking(row);
|
||||||
} else if (!_peer->canManageGroupCall()) {
|
} else if (!_call->canManage()) {
|
||||||
// Raising hands reorder participants only for voice chat admins.
|
// Raising hands reorder participants only for voice chat admins.
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -684,7 +684,7 @@ void Members::Controller::checkRowPosition(not_null<Row*> row) {
|
||||||
return proj(a) > proj(b);
|
return proj(a) > proj(b);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
delegate()->peerListSortRows(_peer->canManageGroupCall()
|
delegate()->peerListSortRows(_call->canManage()
|
||||||
? makeComparator(projForAdmin)
|
? makeComparator(projForAdmin)
|
||||||
: makeComparator(projForOther));
|
: makeComparator(projForOther));
|
||||||
}
|
}
|
||||||
|
@ -919,7 +919,7 @@ bool Members::Controller::rowIsMe(not_null<PeerData*> participantPeer) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Members::Controller::rowCanMuteMembers() {
|
bool Members::Controller::rowCanMuteMembers() {
|
||||||
return _peer->canManageGroupCall();
|
return _call->canManage();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Members::Controller::rowUpdateRow(not_null<Row*> row) {
|
void Members::Controller::rowUpdateRow(not_null<Row*> row) {
|
||||||
|
@ -1317,7 +1317,7 @@ base::unique_qptr<Ui::PopupMenu> Members::Controller::createRowContextMenu(
|
||||||
false,
|
false,
|
||||||
static_cast<Row*>(row.get()));
|
static_cast<Row*>(row.get()));
|
||||||
} else if (participant
|
} else if (participant
|
||||||
&& (!isMe(participantPeer) || _peer->canManageGroupCall())
|
&& (!isMe(participantPeer) || _call->canManage())
|
||||||
&& (participant->ssrc != 0
|
&& (participant->ssrc != 0
|
||||||
|| GetAdditionalAudioSsrc(participant->videoParams) != 0)) {
|
|| GetAdditionalAudioSsrc(participant->videoParams) != 0)) {
|
||||||
addMuteActionsToContextMenu(
|
addMuteActionsToContextMenu(
|
||||||
|
@ -1387,11 +1387,11 @@ void Members::Controller::addMuteActionsToContextMenu(
|
||||||
bool participantIsCallAdmin,
|
bool participantIsCallAdmin,
|
||||||
not_null<Row*> row) {
|
not_null<Row*> row) {
|
||||||
const auto muteUnmuteString = [=](bool muted, bool mutedByMe) {
|
const auto muteUnmuteString = [=](bool muted, bool mutedByMe) {
|
||||||
return (muted && _peer->canManageGroupCall())
|
return (muted && _call->canManage())
|
||||||
? tr::lng_group_call_context_unmute(tr::now)
|
? tr::lng_group_call_context_unmute(tr::now)
|
||||||
: mutedByMe
|
: mutedByMe
|
||||||
? tr::lng_group_call_context_unmute_for_me(tr::now)
|
? tr::lng_group_call_context_unmute_for_me(tr::now)
|
||||||
: _peer->canManageGroupCall()
|
: _call->canManage()
|
||||||
? tr::lng_group_call_context_mute(tr::now)
|
? tr::lng_group_call_context_mute(tr::now)
|
||||||
: tr::lng_group_call_context_mute_for_me(tr::now);
|
: tr::lng_group_call_context_mute_for_me(tr::now);
|
||||||
};
|
};
|
||||||
|
@ -1488,7 +1488,7 @@ void Members::Controller::addMuteActionsToContextMenu(
|
||||||
|| isMe(participantPeer)
|
|| isMe(participantPeer)
|
||||||
|| (muteState == Row::State::Inactive
|
|| (muteState == Row::State::Inactive
|
||||||
&& participantIsCallAdmin
|
&& participantIsCallAdmin
|
||||||
&& _peer->canManageGroupCall())) {
|
&& _call->canManage())) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
auto callback = [=] {
|
auto callback = [=] {
|
||||||
|
|
|
@ -441,7 +441,7 @@ void LeaveBox(
|
||||||
: tr::lng_group_call_leave_sure())),
|
: tr::lng_group_call_leave_sure())),
|
||||||
(inCall ? st::groupCallBoxLabel : st::boxLabel)),
|
(inCall ? st::groupCallBoxLabel : st::boxLabel)),
|
||||||
scheduled ? st::boxPadding : st::boxRowPadding);
|
scheduled ? st::boxPadding : st::boxRowPadding);
|
||||||
const auto discard = call->peer()->canManageGroupCall()
|
const auto discard = call->canManage()
|
||||||
? box->addRow(object_ptr<Ui::Checkbox>(
|
? box->addRow(object_ptr<Ui::Checkbox>(
|
||||||
box.get(),
|
box.get(),
|
||||||
(scheduled
|
(scheduled
|
||||||
|
@ -507,9 +507,12 @@ void FillMenu(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const auto conference = call->conference();
|
||||||
const auto addEditJoinAs = call->showChooseJoinAs();
|
const auto addEditJoinAs = call->showChooseJoinAs();
|
||||||
const auto addEditTitle = call->canManage();
|
const auto addEditTitle = !conference && call->canManage();
|
||||||
const auto addEditRecording = call->canManage() && !real->scheduleDate();
|
const auto addEditRecording = !conference
|
||||||
|
&& call->canManage()
|
||||||
|
&& !real->scheduleDate();
|
||||||
const auto addScreenCast = !wide
|
const auto addScreenCast = !wide
|
||||||
&& call->videoIsWorking()
|
&& call->videoIsWorking()
|
||||||
&& !real->scheduleDate();
|
&& !real->scheduleDate();
|
||||||
|
|
|
@ -766,7 +766,7 @@ void SettingsBox(
|
||||||
}, volumeItem->lifetime());
|
}, volumeItem->lifetime());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (peer->canManageGroupCall()) {
|
if (call->canManage()) {
|
||||||
layout->add(object_ptr<Ui::SettingsButton>(
|
layout->add(object_ptr<Ui::SettingsButton>(
|
||||||
layout,
|
layout,
|
||||||
(peer->isBroadcast()
|
(peer->isBroadcast()
|
||||||
|
|
|
@ -128,6 +128,10 @@ bool GroupCall::rtmp() const {
|
||||||
return _rtmp;
|
return _rtmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool GroupCall::canManage() const {
|
||||||
|
return _conference ? _creator : _peer->canManageGroupCall();
|
||||||
|
}
|
||||||
|
|
||||||
bool GroupCall::listenersHidden() const {
|
bool GroupCall::listenersHidden() const {
|
||||||
return _listenersHidden;
|
return _listenersHidden;
|
||||||
}
|
}
|
||||||
|
@ -539,6 +543,7 @@ void GroupCall::applyCallFields(const MTPDgroupCall &data) {
|
||||||
_version = 1;
|
_version = 1;
|
||||||
}
|
}
|
||||||
_rtmp = data.is_rtmp_stream();
|
_rtmp = data.is_rtmp_stream();
|
||||||
|
_creator = data.is_creator();
|
||||||
_listenersHidden = data.is_listeners_hidden();
|
_listenersHidden = data.is_listeners_hidden();
|
||||||
_joinMuted = data.is_join_muted();
|
_joinMuted = data.is_join_muted();
|
||||||
_canChangeJoinMuted = data.is_can_change_join_muted();
|
_canChangeJoinMuted = data.is_can_change_join_muted();
|
||||||
|
|
|
@ -78,6 +78,7 @@ public:
|
||||||
[[nodiscard]] CallId id() const;
|
[[nodiscard]] CallId id() const;
|
||||||
[[nodiscard]] bool loaded() const;
|
[[nodiscard]] bool loaded() const;
|
||||||
[[nodiscard]] bool rtmp() const;
|
[[nodiscard]] bool rtmp() const;
|
||||||
|
[[nodiscard]] bool canManage() const;
|
||||||
[[nodiscard]] bool listenersHidden() const;
|
[[nodiscard]] bool listenersHidden() const;
|
||||||
[[nodiscard]] not_null<PeerData*> peer() const;
|
[[nodiscard]] not_null<PeerData*> peer() const;
|
||||||
[[nodiscard]] MTPInputGroupCall input() const;
|
[[nodiscard]] MTPInputGroupCall input() const;
|
||||||
|
@ -271,6 +272,7 @@ private:
|
||||||
mtpRequestId _checkStaleRequestId = 0;
|
mtpRequestId _checkStaleRequestId = 0;
|
||||||
rpl::lifetime _checkStaleLifetime;
|
rpl::lifetime _checkStaleLifetime;
|
||||||
|
|
||||||
|
bool _creator : 1 = false;
|
||||||
bool _joinMuted : 1 = false;
|
bool _joinMuted : 1 = false;
|
||||||
bool _canChangeJoinMuted : 1 = true;
|
bool _canChangeJoinMuted : 1 = true;
|
||||||
bool _allParticipantsLoaded : 1 = false;
|
bool _allParticipantsLoaded : 1 = false;
|
||||||
|
|
Loading…
Add table
Reference in a new issue