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 | 56 |
1 files changed, 25 insertions, 31 deletions
diff --git a/src/main/java/de/pixart/messenger/entities/Account.java b/src/main/java/de/pixart/messenger/entities/Account.java index 8b2eef3eb..4dcd028ba 100644 --- a/src/main/java/de/pixart/messenger/entities/Account.java +++ b/src/main/java/de/pixart/messenger/entities/Account.java @@ -3,6 +3,7 @@ package de.pixart.messenger.entities; import android.content.ContentValues; import android.database.Cursor; import android.os.SystemClock; +import android.util.Log; import android.util.Pair; import net.java.otr4j.crypto.OtrCryptoEngineImpl; @@ -30,8 +31,7 @@ import de.pixart.messenger.crypto.axolotl.XmppAxolotlSession; import de.pixart.messenger.services.XmppConnectionService; import de.pixart.messenger.utils.XmppUri; import de.pixart.messenger.xmpp.XmppConnection; -import de.pixart.messenger.xmpp.jid.InvalidJidException; -import de.pixart.messenger.xmpp.jid.Jid; +import rocks.xmpp.addr.Jid; public class Account extends AbstractEntity { @@ -287,13 +287,16 @@ public class Account extends AbstractEntity { } public static Account fromCursor(final Cursor cursor) { - Jid jid = null; + final Jid jid; try { - jid = Jid.fromParts( + String resource = cursor.getString(cursor.getColumnIndex(RESOURCE)); + jid = Jid.of( cursor.getString(cursor.getColumnIndex(USERNAME)), cursor.getString(cursor.getColumnIndex(SERVER)), - cursor.getString(cursor.getColumnIndex(RESOURCE))); - } catch (final InvalidJidException ignored) { + resource == null || resource.trim().isEmpty() ? null : resource); + } catch (final IllegalArgumentException ignored) { + Log.d(Config.LOGTAG, cursor.getString(cursor.getColumnIndex(USERNAME)) + "@" + cursor.getString(cursor.getColumnIndex(SERVER))); + throw new AssertionError(ignored); } return new Account(cursor.getString(cursor.getColumnIndex(UUID)), jid, @@ -324,13 +327,13 @@ public class Account extends AbstractEntity { } public String getUsername() { - return jid.getLocalpart(); + return jid.getLocal(); } 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())); + final Jid prev = this.jid != null ? this.jid.asBareJid() : null; + final boolean changed = prev == null || (next != null && !prev.equals(next.asBareJid())); if (changed) { final AxolotlService oldAxolotlService = this.axolotlService; if (oldAxolotlService != null) { @@ -340,11 +343,11 @@ public class Account extends AbstractEntity { } } this.jid = next; - return next != null && next.equals(previousFull); + return next != null && !next.equals(previousFull); } public Jid getServer() { - return jid.toDomainJid(); + return Jid.ofDomain(jid.getDomain()); } public String getPassword() { @@ -419,20 +422,11 @@ public class Account extends AbstractEntity { } public String getResource() { - return jid.getResourcepart(); + return jid.getResource(); } - public boolean setResource(final String resource) { - final String oldResource = jid.getResourcepart(); - if (oldResource == null || !oldResource.equals(resource)) { - try { - jid = Jid.fromParts(jid.getLocalpart(), jid.getDomainpart(), resource); - return true; - } catch (final InvalidJidException ignored) { - return true; - } - } - return false; + public void setResource(final String resource) { + this.jid = this.jid.withResource(resource); } public Jid getJid() { @@ -481,8 +475,8 @@ public class Account extends AbstractEntity { public ContentValues getContentValues() { final ContentValues values = new ContentValues(); values.put(UUID, uuid); - values.put(USERNAME, jid.getLocalpart()); - values.put(SERVER, jid.getDomainpart()); + values.put(USERNAME, jid.getLocal()); + values.put(SERVER, jid.getDomain()); values.put(PASSWORD, password); values.put(OPTIONS, options); synchronized (this.keys) { @@ -495,7 +489,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()); + values.put(RESOURCE, jid.getResource()); return values; } @@ -625,7 +619,7 @@ public class Account extends AbstractEntity { public Bookmark getBookmark(final Jid jid) { for (final Bookmark bookmark : this.bookmarks) { - if (bookmark.getJid() != null && jid.toBareJid().equals(bookmark.getJid().toBareJid())) { + if (bookmark.getJid() != null && jid.asBareJid().equals(bookmark.getJid().asBareJid())) { return bookmark; } } @@ -659,7 +653,7 @@ public class Account extends AbstractEntity { public String getShareableUri() { List<XmppUri.Fingerprint> fingerprints = this.getFingerprints(); - String uri = "xmpp:" + this.getJid().toBareJid().toString(); + String uri = "xmpp:" + this.getJid().asBareJid().toString(); if (fingerprints.size() > 0) { return XmppUri.getFingerprintUri(uri,fingerprints,';'); } else { @@ -668,7 +662,7 @@ public class Account extends AbstractEntity { } public String getShareableLink() { List<XmppUri.Fingerprint> fingerprints = this.getFingerprints(); - String uri = Config.inviteUserURL+this.getJid().toBareJid().toString(); + String uri = Config.inviteUserURL+this.getJid().asBareJid().toString(); if (fingerprints.size() > 0) { return XmppUri.getFingerprintUri(uri,fingerprints,'&'); } else { @@ -696,11 +690,11 @@ public class Account extends AbstractEntity { public boolean isBlocked(final ListItem contact) { final Jid jid = contact.getJid(); - return jid != null && (blocklist.contains(jid.toBareJid()) || blocklist.contains(jid.toDomainJid())); + return jid != null && (blocklist.contains(jid.asBareJid()) || blocklist.contains(Jid.ofDomain(jid.getDomain()))); } public boolean isBlocked(final Jid jid) { - return jid != null && blocklist.contains(jid.toBareJid()); + return jid != null && blocklist.contains(jid.asBareJid()); } public Collection<Jid> getBlocklist() { |