From 70b7d99f794bd4b9449b0d0743e4bb72dbd1e90d Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Thu, 23 May 2024 20:11:45 -0500 Subject: [PATCH] Allow muting a user, even when not connected --- .../java/eu/siacs/conversations/entities/MucOptions.java | 4 ++-- .../siacs/conversations/persistance/DatabaseBackend.java | 9 ++++++++- .../ui/util/MucDetailsContextMenuHelper.java | 4 ++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/MucOptions.java b/src/main/java/eu/siacs/conversations/entities/MucOptions.java index 27ab3624ae7a5e1091348dd3529bba5a472376eb..c89b3beab6d1316d7a567f0b0ee127158c57d5a8 100644 --- a/src/main/java/eu/siacs/conversations/entities/MucOptions.java +++ b/src/main/java/eu/siacs/conversations/entities/MucOptions.java @@ -353,7 +353,7 @@ public class MucOptions { } } } - return null; + return new User(this, null, id, null, new HashSet<>()); } public User findOrCreateUserByRealJid(Jid jid, Jid fullJid) { @@ -861,7 +861,7 @@ public class MucOptions { } public Jid getMuc() { - return fullJid == null ? null : fullJid.asBareJid(); + return fullJid == null ? (options.getConversation().getJid().asBareJid()) : fullJid.asBareJid(); } public String getOccupantId() { diff --git a/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java b/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java index 41b0f91f2a158ddacf79d3dcf0a3bef7c103594e..583c7088ab3c7dc3a4edc972ac3dfe4650b204f2 100644 --- a/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java @@ -343,6 +343,14 @@ public class DatabaseBackend extends SQLiteOpenHelper { db.execSQL("PRAGMA cheogram.user_version = 10"); } + if(cheogramVersion < 11) { + db.execSQL( + "ALTER TABLE cheogram.muted_participants " + + "DROP COLUMN nick" + ); + db.execSQL("PRAGMA cheogram.user_version = 11"); + } + db.setTransactionSuccessful(); } finally { db.endTransaction(); @@ -904,7 +912,6 @@ public class DatabaseBackend extends SQLiteOpenHelper { ContentValues cv = new ContentValues(); cv.put("muc_jid", user.getMuc().toString()); cv.put("occupant_id", user.getOccupantId()); - cv.put("nick", user.getNick()); db.insertWithOnConflict("cheogram.muted_participants", null, cv, SQLiteDatabase.CONFLICT_REPLACE); return true; diff --git a/src/main/java/eu/siacs/conversations/ui/util/MucDetailsContextMenuHelper.java b/src/main/java/eu/siacs/conversations/ui/util/MucDetailsContextMenuHelper.java index 7109324df18b811149da82f98b5e98c7d12b8e15..fe077a13610b081004bdb0792963f620d1ca0f2a 100644 --- a/src/main/java/eu/siacs/conversations/ui/util/MucDetailsContextMenuHelper.java +++ b/src/main/java/eu/siacs/conversations/ui/util/MucDetailsContextMenuHelper.java @@ -166,9 +166,9 @@ public final class MucDetailsContextMenuHelper { } } managePermissions.setVisible(managePermissionsVisible); - sendPrivateMessage.setVisible(!isGroupChat && mucOptions.allowPm() && user.getRole().ranks(MucOptions.Role.VISITOR)); + sendPrivateMessage.setVisible(user.getFullJid() != null && !isGroupChat && mucOptions.allowPm() && user.getRole().ranks(MucOptions.Role.VISITOR)); } else { - sendPrivateMessage.setVisible(true); + sendPrivateMessage.setVisible(user != null && user.getFullJid() != null); sendPrivateMessage.setEnabled(user != null && mucOptions.allowPm() && user.getRole().ranks(MucOptions.Role.VISITOR)); } }