try to make in-valid-session detection work for pgp

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/entities/Message.java | 13 ++++++-
1 file changed, 10 insertions(+), 3 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/entities/Message.java 🔗

@@ -743,13 +743,20 @@ public class Message extends AbstractEntity {
 	}
 
 	public boolean isValidInSession() {
-		int pastEncryption = this.getPreviousEncryption();
-		int futureEncryption = this.getNextEncryption();
+		int pastEncryption = getCleanedEncryption(this.getPreviousEncryption());
+		int futureEncryption = getCleanedEncryption(this.getNextEncryption());
 
 		boolean inUnencryptedSession = pastEncryption == ENCRYPTION_NONE
 				|| futureEncryption == ENCRYPTION_NONE
 				|| pastEncryption != futureEncryption;
 
-		return inUnencryptedSession || this.getEncryption() == pastEncryption;
+		return inUnencryptedSession || getCleanedEncryption(this.getEncryption()) == pastEncryption;
+	}
+
+	private static int getCleanedEncryption(int encryption) {
+		if (encryption == ENCRYPTION_DECRYPTED || encryption == ENCRYPTION_DECRYPTION_FAILED) {
+			return ENCRYPTION_PGP;
+		}
+		return encryption;
 	}
 }