From 779c9ec9433d1cd39388fb751f050adef03a890c Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Mon, 19 Feb 2024 11:40:44 -0500 Subject: [PATCH] Suppress notify and preview from muted also --- .../conversations/services/NotificationService.java | 2 ++ .../conversations/ui/adapter/ConversationAdapter.java | 2 +- .../siacs/conversations/ui/adapter/MessageAdapter.java | 2 +- .../java/eu/siacs/conversations/utils/UIHelper.java | 10 +++++++--- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/services/NotificationService.java b/src/main/java/eu/siacs/conversations/services/NotificationService.java index a86e0add3fdaebb6a2b0ea116fa0e03b3f0c11a4..1a7e759252462640d898ad1a8bf40aac5efb3bd1 100644 --- a/src/main/java/eu/siacs/conversations/services/NotificationService.java +++ b/src/main/java/eu/siacs/conversations/services/NotificationService.java @@ -1824,6 +1824,8 @@ public class NotificationService { if (message.getConversation() instanceof Conversation) { Conversation conversation = (Conversation) message.getConversation(); final MucOptions.User sender = conversation.getMucOptions().findUserByFullJid(message.getCounterpart()); + final boolean muted = message.getStatus() == Message.STATUS_RECEIVED && mXmppConnectionService.isMucUserMuted(new MucOptions.User(null, conversation.getJid(), message.getOccupantId(), null, null)); + if (muted) return false; if (sender != null && sender.getAffiliation().ranks(MucOptions.Affiliation.MEMBER) && message.isAttention()) { return true; } diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java index cccad499aa80616b1d2fda5ccd217c1d42281cfa..f7e6ba4d2b0761c7195d15985e4f56633d60ee1d 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java @@ -174,7 +174,7 @@ public class ConversationAdapter } final Pair preview = UIHelper.getMessagePreview( - activity, + activity.xmppConnectionService, message, viewHolder.binding.conversationLastmsg.getCurrentTextColor()); if (showPreviewText) { diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index b24b5d1f45c9ead154fa4e53af172b9cd3e34048..b18b09d9b5ed44a0f12244c36beb4026345021b8 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -1093,7 +1093,7 @@ public class MessageAdapter extends ArrayAdapter { } else if (transferable != null && transferable.getStatus() == Transferable.STATUS_OFFER_CHECK_FILESIZE) { displayDownloadableMessage(viewHolder, message, activity.getString(R.string.check_x_filesize, UIHelper.getFileDescriptionString(activity, message)), darkBackground, type); } else { - displayInfoMessage(viewHolder, UIHelper.getMessagePreview(activity, message).first, darkBackground, message, type); + displayInfoMessage(viewHolder, UIHelper.getMessagePreview(activity.xmppConnectionService, message).first, darkBackground, message, type); } } else if (message.isFileOrImage() && message.getEncryption() != Message.ENCRYPTION_PGP && message.getEncryption() != Message.ENCRYPTION_DECRYPTION_FAILED) { if (message.getFileParams().width > 0 && message.getFileParams().height > 0) { diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index b0995a70187f79654187e0b5545b04475551d95b..08c858a6e0a192f9117a7cf90d9d561482504aa0 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -36,6 +36,7 @@ import eu.siacs.conversations.entities.Presence; import eu.siacs.conversations.entities.RtpSessionStatus; import eu.siacs.conversations.entities.Transferable; import eu.siacs.conversations.services.ExportBackupService; +import eu.siacs.conversations.services.XmppConnectionService; import eu.siacs.conversations.ui.util.MyLinkify; import eu.siacs.conversations.ui.util.QuoteHelper; import eu.siacs.conversations.xmpp.Jid; @@ -268,14 +269,17 @@ public class UIHelper { } } - public static Pair getMessagePreview(final Context context, final Message message) { + public static Pair getMessagePreview(final XmppConnectionService context, final Message message) { return getMessagePreview(context, message, 0); } - public static Pair getMessagePreview(final Context context, final Message message, @ColorInt int textColor) { + public static Pair getMessagePreview(final XmppConnectionService context, final Message message, @ColorInt int textColor) { final Transferable d = message.getTransferable(); final boolean moderated = message.getModerated() != null; - if (d != null && !moderated) { + final boolean muted = message.getStatus() == Message.STATUS_RECEIVED && message.getConversation().getMode() == Conversation.MODE_MULTI && context.isMucUserMuted(new MucOptions.User(null, message.getConversation().getJid(), message.getOccupantId(), null, null)); + if (muted) { + return new Pair<>("Muted", false); + } else if (d != null && !moderated) { switch (d.getStatus()) { case Transferable.STATUS_CHECKING: return new Pair<>(context.getString(R.string.checking_x,