From 0476398f91040d04dbdc34531944c275bfa31d95 Mon Sep 17 00:00:00 2001 From: Tobias Fella Date: Sat, 22 May 2021 13:09:52 +0200 Subject: [PATCH] Don't offer banning users that are already banned (cherry picked from commit 48d1fa27cf5ce1052e75622b48e897a119ef1906) --- imports/NeoChat/Dialog/UserDetailDialog.qml | 4 ++-- src/neochatroom.cpp | 5 +++++ src/neochatroom.h | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/imports/NeoChat/Dialog/UserDetailDialog.qml b/imports/NeoChat/Dialog/UserDetailDialog.qml index e0c98a775..176aaa0c5 100644 --- a/imports/NeoChat/Dialog/UserDetailDialog.qml +++ b/imports/NeoChat/Dialog/UserDetailDialog.qml @@ -104,7 +104,7 @@ Kirigami.OverlaySheet { } } Kirigami.BasicListItem { - visible: user !== room.localUser && room.canSendState("kick") && room.containsUser(user) + visible: user !== room.localUser && room.canSendState("kick") && room.containsUser(user.id) action: Kirigami.Action { text: i18n("Kick this user") @@ -116,7 +116,7 @@ Kirigami.OverlaySheet { } } Kirigami.BasicListItem { - visible: user !== room.localUser && room.canSendState("ban") + visible: user !== room.localUser && room.canSendState("ban") && !room.isUserBanned(user.id) action: Kirigami.Action { text: i18n("Ban this user") diff --git a/src/neochatroom.cpp b/src/neochatroom.cpp index 10e3e9ffd..84064f087 100644 --- a/src/neochatroom.cpp +++ b/src/neochatroom.cpp @@ -685,3 +685,8 @@ bool NeoChatRoom::isInvite() const { return joinState() == JoinState::Invite; } + +bool NeoChatRoom::isUserBanned(const QString &user) const +{ + return getCurrentState(user)->membership() == MembershipType::Ban; +} diff --git a/src/neochatroom.h b/src/neochatroom.h index 8faa50db9..1f8e99021 100644 --- a/src/neochatroom.h +++ b/src/neochatroom.h @@ -98,6 +98,7 @@ public: [[nodiscard]] QString eventToString(const RoomEvent &evt, Qt::TextFormat format = Qt::PlainText, bool removeReply = true) const; Q_INVOKABLE [[nodiscard]] bool containsUser(const QString &userID) const; + Q_INVOKABLE [[nodiscard]] bool isUserBanned(const QString &user) const; Q_INVOKABLE [[nodiscard]] bool canSendEvent(const QString &eventType) const; Q_INVOKABLE [[nodiscard]] bool canSendState(const QString &eventType) const;