fixed pgp on incoming carbon messages

iNPUTmice created

Change summary

src/eu/siacs/conversations/parser/MessageParser.java           | 27 ++-
src/eu/siacs/conversations/services/XmppConnectionService.java |  9 -
2 files changed, 17 insertions(+), 19 deletions(-)

Detailed changes

src/eu/siacs/conversations/parser/MessageParser.java 🔗

@@ -21,19 +21,17 @@ public class MessageParser {
 		this.mXmppConnectionService = service;
 	}
 	
-	public Message parsePlainTextChat(MessagePacket packet, Account account) {
+	public Message parseChat(MessagePacket packet, Account account) {
 		String[] fromParts = packet.getFrom().split("/");
 		Conversation conversation = mXmppConnectionService.findOrCreateConversation(account, fromParts[0],false);
-		String body = packet.getBody();
-		return new Message(conversation, packet.getFrom(), body, Message.ENCRYPTION_NONE, Message.STATUS_RECIEVED);
-	}
-	
-	public Message parsePgpChat(String pgpBody, MessagePacket packet, Account account) {
-		String[] fromParts = packet.getFrom().split("/");
-		Conversation conversation = mXmppConnectionService.findOrCreateConversation(account, fromParts[0],false);
-		return new Message(conversation, packet.getFrom(), pgpBody, Message.ENCRYPTION_PGP, Message.STATUS_RECIEVED);
+		String pgpBody = getPgpBody(packet);
+		if (pgpBody!=null) {
+			return new Message(conversation, packet.getFrom(), pgpBody, Message.ENCRYPTION_PGP, Message.STATUS_RECIEVED);
+		} else {
+			return new Message(conversation, packet.getFrom(), packet.getBody(), Message.ENCRYPTION_NONE, Message.STATUS_RECIEVED);
+		}
 	}
-	
+
 	public Message parseOtrChat(MessagePacket packet, Account account) {
 		boolean properlyAddressed = (packet.getTo().split("/").length == 2) || (account.countPresences() == 1);
 		String[] fromParts = packet.getFrom().split("/");
@@ -156,7 +154,12 @@ public class MessageParser {
 		}
 		String[] parts = fullJid.split("/");
 		Conversation conversation = mXmppConnectionService.findOrCreateConversation(account, parts[0],false);
-		return new Message(conversation,fullJid, message.findChild("body").getContent(), Message.ENCRYPTION_NONE,status);
+		String pgpBody = getPgpBody(packet);
+		if (pgpBody!=null) {
+			return new Message(conversation,fullJid, pgpBody,Message.ENCRYPTION_PGP,status);
+		} else {
+			return new Message(conversation,fullJid,packet.getBody(),Message.ENCRYPTION_NONE,status);
+		}
 	}
 
 	public void parseError(MessagePacket packet, Account account) {
@@ -164,7 +167,7 @@ public class MessageParser {
 		mXmppConnectionService.markMessage(account, fromParts[0], packet.getId(), Message.STATUS_SEND_FAILED);
 	}
 
-	public String getPgpBody(MessagePacket packet) {
+	private String getPgpBody(MessagePacket packet) {
 		Element child = packet.findChild("x", "jabber:x:encrypted");
 		if (child==null) {
 			return null;

src/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -142,12 +142,7 @@ public class XmppConnectionService extends Service {
 			
 
 			if ((packet.getType() == MessagePacket.TYPE_CHAT)) {
-				String pgpBody = mMessageParser.getPgpBody(packet);
-				if (pgpBody != null) {
-					message = mMessageParser.parsePgpChat(pgpBody, packet,
-							account);
-					message.markUnread();
-				} else if ((packet.getBody() != null)
+				if ((packet.getBody() != null)
 						&& (packet.getBody().startsWith("?OTR"))) {
 					message = mMessageParser.parseOtrChat(packet, account);
 					if (message != null) {
@@ -155,7 +150,7 @@ public class XmppConnectionService extends Service {
 					}
 				} else if (packet.hasChild("body")) {
 					message = mMessageParser
-							.parsePlainTextChat(packet, account);
+							.parseChat(packet, account);
 					message.markUnread();
 				} else if (packet.hasChild("received")
 						|| (packet.hasChild("sent"))) {