aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/eu/siacs/conversations/parser/MessageParser.java27
-rw-r--r--src/eu/siacs/conversations/services/XmppConnectionService.java9
2 files changed, 17 insertions, 19 deletions
diff --git a/src/eu/siacs/conversations/parser/MessageParser.java b/src/eu/siacs/conversations/parser/MessageParser.java
index 2ccbe05c6..3b1bfb061 100644
--- a/src/eu/siacs/conversations/parser/MessageParser.java
+++ b/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;
diff --git a/src/eu/siacs/conversations/services/XmppConnectionService.java b/src/eu/siacs/conversations/services/XmppConnectionService.java
index 6cb5e6b08..7eb691386 100644
--- a/src/eu/siacs/conversations/services/XmppConnectionService.java
+++ b/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"))) {