diff options
Diffstat (limited to 'src/main/java/de/pixart/messenger/entities/Conversation.java')
-rw-r--r-- | src/main/java/de/pixart/messenger/entities/Conversation.java | 21 |
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)) { |