aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/entities/Conversation.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2018-04-13 22:34:52 +0200
committerChristian Schneppe <christian@pix-art.de>2018-04-13 22:49:42 +0200
commitdf45a1153db622511cab205395c2dc7fd33a25f5 (patch)
tree0292b864ee1f2244ea71771c482e18c3efa8e107 /src/main/java/de/pixart/messenger/entities/Conversation.java
parent0f7f4bf5ed4bc8d07c333daf2c5c519dd0c7fdc9 (diff)
introduced tri state omemo setting (off by default, on by default, always)
Diffstat (limited to '')
-rw-r--r--src/main/java/de/pixart/messenger/entities/Conversation.java21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/main/java/de/pixart/messenger/entities/Conversation.java b/src/main/java/de/pixart/messenger/entities/Conversation.java
index 266e06e10..a010a3799 100644
--- a/src/main/java/de/pixart/messenger/entities/Conversation.java
+++ b/src/main/java/de/pixart/messenger/entities/Conversation.java
@@ -26,6 +26,7 @@ import java.util.Locale;
import java.util.concurrent.atomic.AtomicBoolean;
import de.pixart.messenger.Config;
+import de.pixart.messenger.crypto.OmemoSetting;
import de.pixart.messenger.crypto.PgpDecryptionService;
import de.pixart.messenger.crypto.axolotl.AxolotlService;
import de.pixart.messenger.xmpp.chatstate.ChatState;
@@ -749,29 +750,31 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
}
public int getNextEncryption() {
- final int defaultEncryption;
if (!Config.supportOmemo() && !Config.supportOpenPgp() && !Config.supportOtr()) {
return Message.ENCRYPTION_NONE;
}
- if (contactJid.asBareJid().equals(Config.BUG_REPORTS)) {
- defaultEncryption = Message.ENCRYPTION_NONE;
- } else if (suitableForOmemoByDefault(this)) {
- defaultEncryption = Message.ENCRYPTION_AXOLOTL;
+ if (OmemoSetting.isAlways()) {
+ return suitableForOmemoByDefault(this) ? Message.ENCRYPTION_AXOLOTL : Message.ENCRYPTION_NONE;
+ }
+ final int defaultEncryption;
+ if (suitableForOmemoByDefault(this)) {
+ defaultEncryption = OmemoSetting.getEncryption();
} else {
defaultEncryption = Message.ENCRYPTION_NONE;
}
int encryption = this.getIntAttribute(ATTRIBUTE_NEXT_ENCRYPTION, defaultEncryption);
-
- if (encryption == Message.ENCRYPTION_OTR) {
- return encryption;
- } else if (encryption < 0) {
+ if (encryption == Message.ENCRYPTION_OTR || encryption < 0) {
return defaultEncryption;
} else {
return encryption;
}
}
+
private static boolean suitableForOmemoByDefault(final Conversation conversation) {
+ if (conversation.getJid().asBareJid().equals(Config.BUG_REPORTS)) {
+ return false;
+ }
final String contact = conversation.getJid().getDomain();
final String account = conversation.getAccount().getServer();
if (Config.OMEMO_EXCEPTIONS.CONTACT_DOMAINS.contains(contact) || Config.OMEMO_EXCEPTIONS.ACCOUNT_DOMAINS.contains(account)) {