network, citra_qt: Give moderation permission to community mods
Based on the `roles` payload in the JWT, the rooms will now give mod permission to Citra Community Moderators. To notify the client of its permissions, a new response, IdJoinSuccessAsMod is added, and there's now a new RoomMember::State called Moderator.
This commit is contained in:
@@ -89,7 +89,9 @@ void MultiplayerState::retranslateUi() {
|
||||
|
||||
if (current_state == Network::RoomMember::State::Uninitialized) {
|
||||
status_text->setText(tr("Not Connected. Click here to find a room!"));
|
||||
} else if (current_state == Network::RoomMember::State::Joined) {
|
||||
} else if (current_state == Network::RoomMember::State::Joined ||
|
||||
current_state == Network::RoomMember::State::Moderator) {
|
||||
|
||||
status_text->setText(tr("Connected"));
|
||||
} else {
|
||||
status_text->setText(tr("Not Connected"));
|
||||
@@ -107,7 +109,9 @@ void MultiplayerState::retranslateUi() {
|
||||
|
||||
void MultiplayerState::OnNetworkStateChanged(const Network::RoomMember::State& state) {
|
||||
LOG_DEBUG(Frontend, "Network State: {}", Network::GetStateStr(state));
|
||||
if (state == Network::RoomMember::State::Joined) {
|
||||
if (state == Network::RoomMember::State::Joined ||
|
||||
state == Network::RoomMember::State::Moderator) {
|
||||
|
||||
OnOpenNetworkRoom();
|
||||
status_icon->setPixmap(QIcon::fromTheme("connected").pixmap(16));
|
||||
status_text->setText(tr("Connected"));
|
||||
@@ -183,7 +187,9 @@ void MultiplayerState::OnAnnounceFailed(const Common::WebResult& result) {
|
||||
void MultiplayerState::UpdateThemedIcons() {
|
||||
if (show_notification) {
|
||||
status_icon->setPixmap(QIcon::fromTheme("connected_notification").pixmap(16));
|
||||
} else if (current_state == Network::RoomMember::State::Joined) {
|
||||
} else if (current_state == Network::RoomMember::State::Joined ||
|
||||
current_state == Network::RoomMember::State::Moderator) {
|
||||
|
||||
status_icon->setPixmap(QIcon::fromTheme("connected").pixmap(16));
|
||||
} else {
|
||||
status_icon->setPixmap(QIcon::fromTheme("disconnected").pixmap(16));
|
||||
@@ -258,12 +264,6 @@ void MultiplayerState::OnOpenNetworkRoom() {
|
||||
connect(client_room, &ClientRoomWindow::ShowNotification, this,
|
||||
&MultiplayerState::ShowNotification);
|
||||
}
|
||||
const std::string host_username = member->GetRoomInformation().host_username;
|
||||
if (host_username.empty()) {
|
||||
client_room->SetModPerms(false);
|
||||
} else {
|
||||
client_room->SetModPerms(member->GetUsername() == host_username);
|
||||
}
|
||||
BringWidgetToFront(client_room);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user