Add manage_call admin right support.

This commit is contained in:
John Preston 2020-11-28 10:21:11 +03:00
parent d18b29efb8
commit 7983d33ad5
10 changed files with 24 additions and 8 deletions

View file

@ -1881,6 +1881,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_rights_group_invite_link" = "Invite users via link";
"lng_rights_group_invite" = "Add users";
"lng_rights_group_pin" = "Pin messages";
"lng_rights_group_manage_calls" = "Manage voice chats";
"lng_rights_group_delete" = "Delete messages";
"lng_rights_group_anonymous" = "Remain Anonymous";
"lng_rights_add_admins" = "Add new admins";
@ -2045,6 +2046,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_admin_log_admin_invite_users" = "Add members";
"lng_admin_log_admin_invite_link" = "Invite users via link";
"lng_admin_log_admin_pin_messages" = "Pin messages";
"lng_admin_log_admin_manage_calls" = "Manage voice chats";
"lng_admin_log_admin_add_admins" = "Add new admins";
// #feed

View file

@ -216,7 +216,8 @@ MTPChatAdminRights EditAdminBox::Defaults(not_null<PeerData*> peer) {
| Flag::f_delete_messages
| Flag::f_ban_users
| Flag::f_invite_users
| Flag::f_pin_messages)
| Flag::f_pin_messages
| Flag::f_manage_call)
: (Flag::f_change_info
| Flag::f_post_messages
| Flag::f_edit_messages

View file

@ -135,6 +135,7 @@ std::vector<std::pair<ChatAdminRights, QString>> AdminRightLabels(
? tr::lng_rights_group_invite_link(tr::now)
: tr::lng_rights_group_invite(tr::now) },
{ Flag::f_pin_messages, tr::lng_rights_group_pin(tr::now) },
{ Flag::f_manage_call, tr::lng_rights_group_manage_calls(tr::now) },
{ Flag::f_anonymous, tr::lng_rights_group_anonymous(tr::now) },
{ Flag::f_add_admins, tr::lng_rights_add_admins(tr::now) },
};

View file

@ -19,7 +19,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/effects/ripple_animation.h"
#include "main/main_session.h"
#include "lang/lang_keys.h"
#include "facades.h"
#include "facades.h" // Ui::showPeerHistory.
#include "mainwindow.h" // App::wnd()->activate.
#include "styles/style_calls.h"
namespace Calls {
@ -50,7 +51,7 @@ public:
return QSize(_st->width, _st->height);
}
bool actionDisabled() const override {
return peer()->isSelf() || !_channel->amCreator();
return peer()->isSelf() || !_channel->canManageCall();
}
QMargins actionMargins() const override {
return QMargins(
@ -403,6 +404,7 @@ auto MembersController::toggleMuteRequests() const
void MembersController::rowClicked(not_null<PeerListRow*> row) {
Ui::showPeerHistory(row->peer(), ShowAtUnreadMsgId);
App::wnd()->activate();
}
void MembersController::rowActionClicked(

View file

@ -523,6 +523,10 @@ bool ChannelData::canRestrictUser(not_null<UserData*> user) const {
return adminRights() & AdminRight::f_ban_users;
}
bool ChannelData::canManageCall() const {
return amCreator() || (adminRights() & AdminRight::f_manage_call);
}
void ChannelData::setAdminRights(const MTPChatAdminRights &rights) {
if (rights.c_chatAdminRights().vflags().v == adminRights()) {
return;

View file

@ -306,6 +306,7 @@ public:
[[nodiscard]] bool canDelete() const;
[[nodiscard]] bool canEditAdmin(not_null<UserData*> user) const;
[[nodiscard]] bool canRestrictUser(not_null<UserData*> user) const;
[[nodiscard]] bool canManageCall() const;
void setInviteLink(const QString &newInviteLink);
[[nodiscard]] QString inviteLink() const;

View file

@ -44,7 +44,8 @@ auto ChatData::DefaultAdminRights() -> AdminRights {
| Flag::f_delete_messages
| Flag::f_ban_users
| Flag::f_invite_users
| Flag::f_pin_messages;
| Flag::f_pin_messages
| Flag::f_manage_call;
}
bool ChatData::canWrite() const {

View file

@ -212,8 +212,8 @@ void GroupCall::applyParticipantsSlice(
});
}
ranges::sort(_participants, std::greater<>(), [](const Participant &p) {
return p.lastActivePrecise
? p.lastActivePrecise
return p.lastSpoke
? p.lastSpoke
: p.lastActive
? p.lastActive
: p.date;

View file

@ -25,7 +25,7 @@ public:
not_null<UserData*> user;
TimeId date = 0;
TimeId lastActive = 0;
TimeId lastActivePrecise = 0;
TimeId lastSpoke = 0;
uint32 source = 0;
bool muted = false;
bool canSelfUnmute = false;

View file

@ -164,6 +164,7 @@ TextWithEntities GenerateAdminChangeText(
{ Flag::f_ban_users, tr::lng_admin_log_admin_ban_users },
{ Flag::f_invite_users, invitePhrase },
{ Flag::f_pin_messages, tr::lng_admin_log_admin_pin_messages },
{ Flag::f_manage_call, tr::lng_admin_log_admin_manage_calls },
{ Flag::f_add_admins, tr::lng_admin_log_admin_add_admins },
};
phraseMap[Flag::f_invite_users] = invitePhrase;
@ -197,7 +198,10 @@ QString GenerateBannedChangeText(
{ Flag::f_view_messages, tr::lng_admin_log_banned_view_messages },
{ Flag::f_send_messages, tr::lng_admin_log_banned_send_messages },
{ Flag::f_send_media, tr::lng_admin_log_banned_send_media },
{ Flag::f_send_stickers | Flag::f_send_gifs | Flag::f_send_inline | Flag::f_send_games, tr::lng_admin_log_banned_send_stickers },
{ Flag::f_send_stickers
| Flag::f_send_gifs
| Flag::f_send_inline
| Flag::f_send_games, tr::lng_admin_log_banned_send_stickers },
{ Flag::f_embed_links, tr::lng_admin_log_banned_embed_links },
{ Flag::f_send_polls, tr::lng_admin_log_banned_send_polls },
{ Flag::f_change_info, tr::lng_admin_log_admin_change_info },