diff options
Diffstat (limited to 'src/main/java/eu/siacs/conversations/entities')
3 files changed, 27 insertions, 13 deletions
diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java index 33f3443b..eae08f31 100644 --- a/src/main/java/eu/siacs/conversations/entities/Message.java +++ b/src/main/java/eu/siacs/conversations/entities/Message.java @@ -49,7 +49,7 @@ public class Message extends AbstractEntity { public boolean markable = false; protected String conversationUuid; protected Jid counterpart; - protected String trueCounterpart; + protected Jid trueCounterpart; protected String body; protected String encryptedBody; protected long timeSent; @@ -81,7 +81,7 @@ public class Message extends AbstractEntity { } public Message(final String uuid, final String conversationUUid, final Jid counterpart, - final String trueCounterpart, final String body, final long timeSent, + final Jid trueCounterpart, final String body, final long timeSent, final int encryption, final int status, final int type, final String remoteMsgId, final String relativeFilePath) { this.uuid = uuid; this.conversationUuid = conversationUUid; @@ -108,10 +108,21 @@ public class Message extends AbstractEntity { } catch (InvalidJidException e) { jid = null; } + Jid trueCounterpart; + try { + String value = cursor.getString(cursor.getColumnIndex(TRUE_COUNTERPART)); + if (value!=null) { + trueCounterpart = Jid.fromString(value); + } else { + trueCounterpart = null; + } + } catch (InvalidJidException e) { + trueCounterpart = null; + } return new Message(cursor.getString(cursor.getColumnIndex(UUID)), cursor.getString(cursor.getColumnIndex(CONVERSATION)), jid, - cursor.getString(cursor.getColumnIndex(TRUE_COUNTERPART)), + trueCounterpart, cursor.getString(cursor.getColumnIndex(BODY)), cursor.getLong(cursor.getColumnIndex(TIME_SENT)), cursor.getInt(cursor.getColumnIndex(ENCRYPTION)), @@ -138,7 +149,11 @@ public class Message extends AbstractEntity { } else { values.put(COUNTERPART, counterpart.toString()); } - values.put(TRUE_COUNTERPART, trueCounterpart); + if (trueCounterpart == null ) { + values.putNull(TRUE_COUNTERPART); + } else { + values.put(TRUE_COUNTERPART, trueCounterpart.toString()); + } values.put(BODY, body); values.put(TIME_SENT, timeSent); values.put(ENCRYPTION, encryption); @@ -258,7 +273,7 @@ public class Message extends AbstractEntity { this.type = type; } - public void setTrueCounterpart(String trueCounterpart) { + public void setTrueCounterpart(Jid trueCounterpart) { this.trueCounterpart = trueCounterpart; } diff --git a/src/main/java/eu/siacs/conversations/entities/MucOptions.java b/src/main/java/eu/siacs/conversations/entities/MucOptions.java index 6eb1d43c..4725bffa 100644 --- a/src/main/java/eu/siacs/conversations/entities/MucOptions.java +++ b/src/main/java/eu/siacs/conversations/entities/MucOptions.java @@ -43,7 +43,7 @@ public class MucOptions { private int role; private int affiliation; private String name; - private String jid; + private Jid jid; private long pgpKeyId = 0; public String getName() { @@ -54,11 +54,11 @@ public class MucOptions { this.name = user; } - public void setJid(String jid) { + public void setJid(Jid jid) { this.jid = jid; } - public String getJid() { + public Jid getJid() { return this.jid; } @@ -165,7 +165,7 @@ public class MucOptions { user.setName(name); user.setAffiliation(item.getAttribute("affiliation")); user.setRole(item.getAttribute("role")); - user.setJid(item.getAttribute("jid")); + user.setJid(item.getAttributeAsJid("jid")); user.setName(name); if (name.equals(this.joinnick)) { this.isOnline = true; @@ -346,7 +346,7 @@ public class MucOptions { } } - public String getTrueCounterpart(String counterpart) { + public Jid getTrueCounterpart(String counterpart) { for (User user : this.getUsers()) { if (user.getName().equals(counterpart)) { return user.getJid(); diff --git a/src/main/java/eu/siacs/conversations/entities/Roster.java b/src/main/java/eu/siacs/conversations/entities/Roster.java index 27d4deb0..12a89cec 100644 --- a/src/main/java/eu/siacs/conversations/entities/Roster.java +++ b/src/main/java/eu/siacs/conversations/entities/Roster.java @@ -15,12 +15,11 @@ public class Roster { this.account = account; } - public Contact getContactFromRoster(String jid) { + public Contact getContactFromRoster(Jid jid) { if (jid == null) { return null; } - String cleanJid = jid.split("/", 2)[0]; - Contact contact = contacts.get(cleanJid); + Contact contact = contacts.get(jid.toBareJid().toString()); if (contact != null && contact.showInRoster()) { return contact; } else { |