diff options
Diffstat (limited to 'src/main/java/de/pixart/messenger/entities/Account.java')
-rw-r--r-- | src/main/java/de/pixart/messenger/entities/Account.java | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/main/java/de/pixart/messenger/entities/Account.java b/src/main/java/de/pixart/messenger/entities/Account.java index c641902a3..8b2eef3eb 100644 --- a/src/main/java/de/pixart/messenger/entities/Account.java +++ b/src/main/java/de/pixart/messenger/entities/Account.java @@ -49,6 +49,7 @@ public class Account extends AbstractEntity { public static final String PORT = "port"; public static final String STATUS = "status"; public static final String STATUS_MESSAGE = "status_message"; + public static final String RESOURCE = "resource"; public static final String PINNED_MECHANISM_KEY = "pinned_mechanism"; @@ -238,6 +239,7 @@ public class Account extends AbstractEntity { protected String rosterVersion; protected State status = State.OFFLINE; protected final JSONObject keys; + protected String resource; protected String avatar; protected String displayName = null; protected String hostname = null; @@ -266,9 +268,6 @@ public class Account extends AbstractEntity { final Presence.Status status, String statusMessage) { this.uuid = uuid; this.jid = jid; - if (jid.isBareJid()) { - this.setResource("mobile"); - } this.password = password; this.options = options; this.rosterVersion = rosterVersion; @@ -290,8 +289,10 @@ public class Account extends AbstractEntity { public static Account fromCursor(final Cursor cursor) { Jid jid = null; try { - jid = Jid.fromParts(cursor.getString(cursor.getColumnIndex(USERNAME)), - cursor.getString(cursor.getColumnIndex(SERVER)), "mobile"); + jid = Jid.fromParts( + cursor.getString(cursor.getColumnIndex(USERNAME)), + cursor.getString(cursor.getColumnIndex(SERVER)), + cursor.getString(cursor.getColumnIndex(RESOURCE))); } catch (final InvalidJidException ignored) { } return new Account(cursor.getString(cursor.getColumnIndex(UUID)), @@ -327,6 +328,7 @@ public class Account extends AbstractEntity { } public boolean setJid(final Jid next) { + final Jid previousFull = this.jid; final Jid prev = this.jid != null ? this.jid.toBareJid() : null; final boolean changed = prev == null || (next != null && !prev.equals(next.toBareJid())); if (changed) { @@ -338,7 +340,7 @@ public class Account extends AbstractEntity { } } this.jid = next; - return changed; + return next != null && next.equals(previousFull); } public Jid getServer() { @@ -493,6 +495,7 @@ public class Account extends AbstractEntity { values.put(PORT, port); values.put(STATUS, presenceStatus.toShowString()); values.put(STATUS_MESSAGE, presenceStatusMessage); + values.put(RESOURCE, jid.getResourcepart()); return values; } |