aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/eu/siacs/conversations/entities
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel@gultsch.de>2016-07-28 22:58:37 +0200
committerDaniel Gultsch <daniel@gultsch.de>2016-07-28 22:58:37 +0200
commit0e96e0a796661aae1af133f24d010a4957f68af2 (patch)
tree07555ef3033750ee2f45ebb933898ef7eeeb7841 /src/main/java/eu/siacs/conversations/entities
parentc06aceaae9b77d8a1e161b97499f5b62bea55851 (diff)
show identity type for device selection
Diffstat (limited to 'src/main/java/eu/siacs/conversations/entities')
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Contact.java6
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Message.java6
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Presences.java29
3 files changed, 34 insertions, 7 deletions
diff --git a/src/main/java/eu/siacs/conversations/entities/Contact.java b/src/main/java/eu/siacs/conversations/entities/Contact.java
index f061413b..676c91d0 100644
--- a/src/main/java/eu/siacs/conversations/entities/Contact.java
+++ b/src/main/java/eu/siacs/conversations/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/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java
index 9ab1da96..1b38d349 100644
--- a/src/main/java/eu/siacs/conversations/entities/Message.java
+++ b/src/main/java/eu/siacs/conversations/entities/Message.java
@@ -5,10 +5,10 @@ import android.database.Cursor;
import java.net.MalformedURLException;
import java.net.URL;
-import java.util.Arrays;
import eu.siacs.conversations.Config;
import eu.siacs.conversations.crypto.axolotl.XmppAxolotlSession;
+import eu.siacs.conversations.utils.CryptoHelper;
import eu.siacs.conversations.utils.GeoHelper;
import eu.siacs.conversations.utils.MimeUtils;
import eu.siacs.conversations.utils.UIHelper;
@@ -396,7 +396,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())
@@ -550,7 +550,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/eu/siacs/conversations/entities/Presences.java b/src/main/java/eu/siacs/conversations/entities/Presences.java
index 6391f5bb..f9dfee36 100644
--- a/src/main/java/eu/siacs/conversations/entities/Presences.java
+++ b/src/main/java/eu/siacs/conversations/entities/Presences.java
@@ -1,7 +1,10 @@
package eu.siacs.conversations.entities;
+import android.util.Pair;
+
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
@@ -54,7 +57,7 @@ public class Presences {
}
}
- public String[] asStringArray() {
+ public String[] toResourceArray() {
synchronized (this.presences) {
final String[] presencesArray = new String[presences.size()];
presences.keySet().toArray(presencesArray);
@@ -104,4 +107,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);
+ }
}