diff --git a/src/citra_qt/multiplayer/chat_room.cpp b/src/citra_qt/multiplayer/chat_room.cpp
index 5fae89045..7329bf86b 100644
--- a/src/citra_qt/multiplayer/chat_room.cpp
+++ b/src/citra_qt/multiplayer/chat_room.cpp
@@ -459,12 +459,15 @@ void ChatRoom::PopupContextMenu(const QPoint& menu_location) {
});
}
- if (has_mod_perms && nickname != cur_nickname) { // You can't kick or ban yourself
+ if (nickname != cur_nickname) { // You can't kick or ban yourself
context_menu.addSeparator();
QAction* kick_action = context_menu.addAction(tr("Kick"));
QAction* ban_action = context_menu.addAction(tr("Ban"));
+ kick_action->setEnabled(has_mod_perms);
+ ban_action->setEnabled(has_mod_perms);
+
connect(kick_action, &QAction::triggered, [this, nickname] {
QMessageBox::StandardButton result =
QMessageBox::question(this, tr("Kick Player"),
diff --git a/src/citra_qt/multiplayer/client_room.cpp b/src/citra_qt/multiplayer/client_room.cpp
index 312090cbe..1806b0511 100644
--- a/src/citra_qt/multiplayer/client_room.cpp
+++ b/src/citra_qt/multiplayer/client_room.cpp
@@ -47,8 +47,6 @@ ClientRoomWindow::ClientRoomWindow(QWidget* parent)
ModerationDialog dialog(this);
dialog.exec();
});
- ui->moderation->setDefault(false);
- ui->moderation->setAutoDefault(false);
connect(ui->chat, &ChatRoom::UserPinged, this, &ClientRoomWindow::ShowNotification);
UpdateView();
}
@@ -57,9 +55,7 @@ ClientRoomWindow::~ClientRoomWindow() = default;
void ClientRoomWindow::SetModPerms(bool is_mod) {
ui->chat->SetModPerms(is_mod);
- ui->moderation->setVisible(is_mod);
- ui->moderation->setDefault(false);
- ui->moderation->setAutoDefault(false);
+ ui->moderation->setEnabled(is_mod);
}
void ClientRoomWindow::RetranslateUi() {
diff --git a/src/citra_qt/multiplayer/client_room.ui b/src/citra_qt/multiplayer/client_room.ui
index 97e88b502..76118d6e4 100644
--- a/src/citra_qt/multiplayer/client_room.ui
+++ b/src/citra_qt/multiplayer/client_room.ui
@@ -47,7 +47,7 @@
Moderation...
- false
+ true
diff --git a/src/citra_qt/multiplayer/host_room.cpp b/src/citra_qt/multiplayer/host_room.cpp
index 339e7155a..5f29eed2d 100644
--- a/src/citra_qt/multiplayer/host_room.cpp
+++ b/src/citra_qt/multiplayer/host_room.cpp
@@ -144,7 +144,7 @@ void HostRoomWindow::Host() {
bool created = room->Create(ui->room_name->text().toStdString(),
ui->room_description->toPlainText().toStdString(), "",
static_cast(port), password, ui->max_player->value(),
- NetSettings::values.citra_username, game_name.toStdString(),
+ ui->username->text().toStdString(), game_name.toStdString(),
game_id, CreateVerifyBackend(is_public), ban_list);
if (!created) {
NetworkMessage::ErrorManager::ShowError(
diff --git a/src/citra_room/citra_room.cpp b/src/citra_room/citra_room.cpp
index defd4d956..40866c008 100644
--- a/src/citra_room/citra_room.cpp
+++ b/src/citra_room/citra_room.cpp
@@ -178,7 +178,6 @@ int main(int argc, char** argv) {
u64 preferred_game_id = 0;
u16 port = Network::DefaultRoomPort;
u32 max_members = 16;
- bool enable_citra_mods = false;
static struct option long_options[] = {
{"room-name", required_argument, 0, 'n'},
@@ -243,9 +242,6 @@ int main(int argc, char** argv) {
case 'l':
log_file.assign(optarg);
break;
- case 'e':
- enable_citra_mods = true;
- break;
case 'h':
PrintHelp(argv[0]);
return 0;
@@ -317,10 +313,6 @@ int main(int argc, char** argv) {
NetSettings::values.citra_token = token;
}
}
- if (!announce && enable_citra_mods) {
- enable_citra_mods = false;
- std::cout << "Can not enable Citra Moderators for private rooms\n\n";
- }
InitializeLogging(log_file);
@@ -347,8 +339,7 @@ int main(int argc, char** argv) {
Network::Init();
if (std::shared_ptr room = Network::GetRoom().lock()) {
if (!room->Create(room_name, room_description, "", port, password, max_members, username,
- preferred_game, preferred_game_id, std::move(verify_backend), ban_list,
- enable_citra_mods)) {
+ preferred_game, preferred_game_id, std::move(verify_backend), ban_list)) {
std::cout << "Failed to create room: \n\n";
return -1;
}
diff --git a/src/network/room.cpp b/src/network/room.cpp
index 4623b31d4..2830bd287 100644
--- a/src/network/room.cpp
+++ b/src/network/room.cpp
@@ -371,7 +371,14 @@ void Room::RoomImpl::HandleJoinRequest(const ENetEvent* event) {
std::lock_guard lock(verify_UID_mutex);
uid = verify_UID;
}
- member.user_data = verify_backend->LoadUserData(uid, token);
+
+ if (verify_backend != nullptr)
+ member.user_data = verify_backend->LoadUserData(uid, token);
+
+ if (nickname == room_information.host_username) {
+ member.user_data.moderator = true;
+ LOG_INFO(Network, "User {} is a moderator", std::string(room_information.host_username));
+ }
std::string ip;
{
@@ -598,8 +605,7 @@ bool Room::RoomImpl::HasModPermission(const ENetPeer* client) const {
if (sending_member == members.end()) {
return false;
}
- if (room_information.enable_citra_mods &&
- sending_member->user_data.moderator) { // Community moderator
+ if (sending_member->user_data.moderator) { // Community moderator
return true;
}
@@ -1013,7 +1019,7 @@ bool Room::Create(const std::string& name, const std::string& description,
const u32 max_connections, const std::string& host_username,
const std::string& preferred_game, u64 preferred_game_id,
std::unique_ptr verify_backend,
- const Room::BanList& ban_list, bool enable_citra_mods) {
+ const Room::BanList& ban_list) {
ENetAddress address;
address.host = ENET_HOST_ANY;
if (!server_address.empty()) {
@@ -1036,7 +1042,6 @@ bool Room::Create(const std::string& name, const std::string& description,
room_impl->room_information.preferred_game = preferred_game;
room_impl->room_information.preferred_game_id = preferred_game_id;
room_impl->room_information.host_username = host_username;
- room_impl->room_information.enable_citra_mods = enable_citra_mods;
room_impl->password = password;
room_impl->verify_backend = std::move(verify_backend);
room_impl->username_ban_list = ban_list.first;
diff --git a/src/network/room.h b/src/network/room.h
index a67984837..5781631d7 100644
--- a/src/network/room.h
+++ b/src/network/room.h
@@ -32,7 +32,6 @@ struct RoomInformation {
std::string preferred_game; ///< Game to advertise that you want to play
u64 preferred_game_id; ///< Title ID for the advertised game
std::string host_username; ///< Forum username of the host
- bool enable_citra_mods; ///< Allow Citra Moderators to moderate on this room
};
struct GameInfo {
@@ -148,7 +147,7 @@ public:
const std::string& host_username = "", const std::string& preferred_game = "",
u64 preferred_game_id = 0,
std::unique_ptr verify_backend = nullptr,
- const BanList& ban_list = {}, bool enable_citra_mods = false);
+ const BanList& ban_list = {});
/**
* Sets the verification GUID of the room.