diff options
Diffstat (limited to 'src/main/java/de/pixart/messenger/entities')
3 files changed, 34 insertions, 6 deletions
diff --git a/src/main/java/de/pixart/messenger/entities/Contact.java b/src/main/java/de/pixart/messenger/entities/Contact.java index b4908d08c..06fd4592c 100644 --- a/src/main/java/de/pixart/messenger/entities/Contact.java +++ b/src/main/java/de/pixart/messenger/entities/Contact.java @@ -526,11 +526,11 @@ public class Contact implements ListItem, Blockable { return this.mLastseen; } - public void setLastPresence(String presence) { - this.mLastPresence = presence; + public void setLastResource(String resource) { + this.mLastPresence = resource; } - public String getLastPresence() { + public String getLastResource() { return this.mLastPresence; } diff --git a/src/main/java/de/pixart/messenger/entities/Message.java b/src/main/java/de/pixart/messenger/entities/Message.java index 3145cdccf..e95781335 100644 --- a/src/main/java/de/pixart/messenger/entities/Message.java +++ b/src/main/java/de/pixart/messenger/entities/Message.java @@ -395,7 +395,7 @@ public class Message extends AbstractEntity { && this.counterpart.equals(message.getCounterpart()) && (body.equals(otherBody) ||(message.getEncryption() == Message.ENCRYPTION_PGP - && message.getRemoteMsgId().matches("[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}"))) ; + && CryptoHelper.UUID_PATTERN.matcher(message.getRemoteMsgId()).matches())); } else { return this.remoteMsgId == null && this.counterpart.equals(message.getCounterpart()) @@ -549,7 +549,7 @@ public class Message extends AbstractEntity { try { counterpart = Jid.fromParts(conversation.getJid().getLocalpart(), conversation.getJid().getDomainpart(), - presences.asStringArray()[0]); + presences.toResourceArray()[0]); return true; } catch (InvalidJidException e) { counterpart = null; diff --git a/src/main/java/de/pixart/messenger/entities/Presences.java b/src/main/java/de/pixart/messenger/entities/Presences.java index ecd826d41..2bf718faf 100644 --- a/src/main/java/de/pixart/messenger/entities/Presences.java +++ b/src/main/java/de/pixart/messenger/entities/Presences.java @@ -1,6 +1,10 @@ package de.pixart.messenger.entities; +import android.util.Pair; + import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; import java.util.Hashtable; import java.util.List; @@ -49,7 +53,7 @@ public class Presences { } } - public String[] asStringArray() { + public String[] toResourceArray() { synchronized (this.presences) { final String[] presencesArray = new String[presences.size()]; presences.keySet().toArray(presencesArray); @@ -99,4 +103,28 @@ public class Presences { } return true; } + + public Pair<Map<String, String>,Map<String,String>> toTypeAndNameMap() { + Map<String,String> typeMap = new HashMap<>(); + Map<String,String> nameMap = new HashMap<>(); + synchronized (this.presences) { + for(Map.Entry<String,Presence> presenceEntry : this.presences.entrySet()) { + String resource = presenceEntry.getKey(); + Presence presence = presenceEntry.getValue(); + ServiceDiscoveryResult serviceDiscoveryResult = presence == null ? null : presence.getServiceDiscoveryResult(); + if (serviceDiscoveryResult != null && serviceDiscoveryResult.getIdentities().size() > 0) { + ServiceDiscoveryResult.Identity identity = serviceDiscoveryResult.getIdentities().get(0); + String type = identity.getType(); + String name = identity.getName(); + if (type != null) { + typeMap.put(resource,type); + } + if (name != null) { + nameMap.put(resource, name); + } + } + } + } + return new Pair(typeMap,nameMap); + } } |