diff options
author | Christian Schneppe <christian@pix-art.de> | 2018-01-27 21:43:09 +0100 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2018-01-27 21:43:09 +0100 |
commit | 97504840d176c2b2dbd51e23d3c2b47c61d1331c (patch) | |
tree | 4008545eb4bb76e85d707674b8e9486c0696d0ab /src/main/java/de/pixart/messenger/entities | |
parent | 3d18291b6ef0df2f693efb872bc9bfddec9a864a (diff) |
make chat markers opportunistic in private mucs
Diffstat (limited to 'src/main/java/de/pixart/messenger/entities')
-rw-r--r-- | src/main/java/de/pixart/messenger/entities/Conversation.java | 28 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/entities/MucOptions.java | 4 |
2 files changed, 19 insertions, 13 deletions
diff --git a/src/main/java/de/pixart/messenger/entities/Conversation.java b/src/main/java/de/pixart/messenger/entities/Conversation.java index 1bfb50034..5c5f5634c 100644 --- a/src/main/java/de/pixart/messenger/entities/Conversation.java +++ b/src/main/java/de/pixart/messenger/entities/Conversation.java @@ -208,15 +208,13 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl } public boolean setOutgoingChatState(ChatState state) { - if (mode == MODE_MULTI && (getNextCounterpart() != null || !isPnNA())) { - return false; - } - if (this.mOutgoingChatState != state) { - this.mOutgoingChatState = state; - return true; - } else { - return false; + if (mode == MODE_SINGLE || (isPrivateAndNonAnonymous() && getNextCounterpart() == null)) { + if (this.mOutgoingChatState != state) { + this.mOutgoingChatState = state; + return true; + } } + return false; } public ChatState getOutgoingChatState() { @@ -480,12 +478,12 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl return unread; } - public Message getLatestMarkableMessage() { + public Message getLatestMarkableMessage(boolean isPrivateAndNonAnonymousMuc) { synchronized (this.messages) { for (int i = this.messages.size() - 1; i >= 0; --i) { final Message message = this.messages.get(i); if (message.getStatus() <= Message.STATUS_RECEIVED - && message.markable + && (message.markable || isPrivateAndNonAnonymousMuc) && message.getType() != Message.TYPE_PRIVATE) { return message.isRead() ? null : message; } @@ -733,8 +731,12 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl /** * short for is Private and Non-anonymous */ - private boolean isPnNA() { - return mode == MODE_SINGLE || (getMucOptions().membersOnly() && getMucOptions().nonanonymous()); + public boolean isSingleOrPrivateAndNonAnonymous() { + return mode == MODE_SINGLE || isPrivateAndNonAnonymous(); + } + + public boolean isPrivateAndNonAnonymous() { + return getMucOptions().isPrivateAndNonAnonymous(); } public synchronized MucOptions getMucOptions() { @@ -902,7 +904,7 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl } public boolean alwaysNotify() { - return mode == MODE_SINGLE || getBooleanAttribute(ATTRIBUTE_ALWAYS_NOTIFY, Config.ALWAYS_NOTIFY_BY_DEFAULT || isPnNA()); + return mode == MODE_SINGLE || getBooleanAttribute(ATTRIBUTE_ALWAYS_NOTIFY, Config.ALWAYS_NOTIFY_BY_DEFAULT || isPrivateAndNonAnonymous()); } public boolean setAttribute(String key, String value) { diff --git a/src/main/java/de/pixart/messenger/entities/MucOptions.java b/src/main/java/de/pixart/messenger/entities/MucOptions.java index 12987cfc9..d4ba4e9f8 100644 --- a/src/main/java/de/pixart/messenger/entities/MucOptions.java +++ b/src/main/java/de/pixart/messenger/entities/MucOptions.java @@ -424,6 +424,10 @@ public class MucOptions { return hasFeature("muc_nonanonymous"); } + public boolean isPrivateAndNonAnonymous() { + return membersOnly() && nonanonymous(); + } + public boolean persistent() { return hasFeature("muc_persistent"); } |