Detailed changes
@@ -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;
}
@@ -174,7 +174,7 @@ public class ConversationAdapter
}
final Pair<CharSequence, Boolean> preview =
UIHelper.getMessagePreview(
- activity,
+ activity.xmppConnectionService,
message,
viewHolder.binding.conversationLastmsg.getCurrentTextColor());
if (showPreviewText) {
@@ -1093,7 +1093,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
} 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) {
@@ -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<CharSequence, Boolean> getMessagePreview(final Context context, final Message message) {
+ public static Pair<CharSequence, Boolean> getMessagePreview(final XmppConnectionService context, final Message message) {
return getMessagePreview(context, message, 0);
}
- public static Pair<CharSequence, Boolean> getMessagePreview(final Context context, final Message message, @ColorInt int textColor) {
+ public static Pair<CharSequence, Boolean> 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,