Merge pull request #397 from GZep/development

Daniel Gultsch created

XEP-0172

Change summary

src/eu/siacs/conversations/entities/Contact.java      | 7 +++++++
src/eu/siacs/conversations/parser/PresenceParser.java | 7 +++++--
2 files changed, 12 insertions(+), 2 deletions(-)

Detailed changes

src/eu/siacs/conversations/entities/Contact.java 🔗

@@ -32,6 +32,7 @@ public class Contact implements ListItem {
 	protected String accountUuid;
 	protected String systemName;
 	protected String serverName;
+	protected String presenceName;
 	protected String jid;
 	protected int subscription = 0;
 	protected String systemAccount;
@@ -76,6 +77,8 @@ public class Contact implements ListItem {
 			return this.systemName;
 		} else if (this.serverName != null) {
 			return this.serverName;
+		} else if (this.presenceName != null) {
+			return this.presenceName;
 		} else {
 			return this.jid.split("@")[0];
 		}
@@ -175,6 +178,10 @@ public class Contact implements ListItem {
 		this.systemName = systemName;
 	}
 
+	public void setPresenceName(String presenceName) {
+		this.presenceName = presenceName;
+	}
+
 	public String getSystemAccount() {
 		return systemAccount;
 	}

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

@@ -49,7 +49,7 @@ public class PresenceParser extends AbstractParser implements
 		if (packet.getFrom() == null) {
 			return;
 		}
-		String[] fromParts = packet.getFrom().split("/");
+		String[] fromParts = packet.getFrom().split("/", 2);
 		String type = packet.getAttribute("type");
 		if (fromParts[0].equals(account.getJid())) {
 			if (fromParts.length == 2) {
@@ -60,7 +60,6 @@ public class PresenceParser extends AbstractParser implements
 					account.removePresence(fromParts[1]);
 				}
 			}
-
 		} else {
 			Contact contact = account.getRoster().getContact(packet.getFrom());
 			if (type == null) {
@@ -108,6 +107,10 @@ public class PresenceParser extends AbstractParser implements
 					contact.setOption(Contact.Options.PENDING_SUBSCRIPTION_REQUEST);
 				}
 			}
+			Element nick = packet.findChild("nick", "http://jabber.org/protocol/nick");
+			if (nick != null) {
+				contact.setPresenceName(nick.getContent());
+			}
 		}
 		mXmppConnectionService.updateRosterUi();
 	}