Change summary
src/main/java/eu/siacs/conversations/entities/Message.java | 12
src/main/java/eu/siacs/conversations/parser/MessageParser.java | 3
src/main/java/eu/siacs/conversations/services/NotificationService.java | 6
3 files changed, 21 insertions(+)
Detailed changes
@@ -449,6 +449,18 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable
return null;
}
+ public boolean isAttention() {
+ if (this.payloads == null) return false;
+
+ for (Element el : this.payloads) {
+ if (el.getName().equals("attention") && el.getNamespace().equals("urn:xmpp:attention:0")) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
public String getConversationUuid() {
return conversationUuid;
}
@@ -671,6 +671,9 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
if (el.getName().equals("reply") && el.getNamespace() != null && el.getNamespace().equals("urn:xmpp:reply:0")) {
message.addPayload(el);
}
+ if (el.getName().equals("attention") && el.getNamespace() != null && el.getNamespace().equals("urn:xmpp:attention:0")) {
+ message.addPayload(el);
+ }
}
if (conversationMultiMode) {
message.setMucUser(conversation.getMucOptions().findUserByFullJid(counterpart));
@@ -72,6 +72,7 @@ import eu.siacs.conversations.entities.Contact;
import eu.siacs.conversations.entities.Conversation;
import eu.siacs.conversations.entities.Conversational;
import eu.siacs.conversations.entities.Message;
+import eu.siacs.conversations.entities.MucOptions;
import eu.siacs.conversations.persistance.FileBackend;
import eu.siacs.conversations.ui.ConversationsActivity;
import eu.siacs.conversations.ui.EditAccountActivity;
@@ -1744,6 +1745,11 @@ public class NotificationService {
private boolean wasHighlightedOrPrivate(final Message message) {
if (message.getConversation() instanceof Conversation) {
Conversation conversation = (Conversation) message.getConversation();
+ final MucOptions.User sender = conversation.getMucOptions().findUserByFullJid(message.getCounterpart());
+ if (sender != null && sender.getAffiliation().ranks(MucOptions.Affiliation.MEMBER) && message.isAttention()) {
+ return true;
+ }
+
final String nick = conversation.getMucOptions().getActualNick();
final Pattern highlight = generateNickHighlightPattern(nick);
if (message.getBody() == null || nick == null) {