diff options
author | Christian Schneppe <christian@pix-art.de> | 2018-11-23 08:30:12 +0100 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2018-11-23 08:51:39 +0100 |
commit | 35d5d97544cd6abc45809a19324898dfbf457467 (patch) | |
tree | 0d358bcb048a3de2aa99f18d1baa71d71b0c29de /src/main/java/de/pixart/messenger/entities/Contact.java | |
parent | 9ec0a87cc28d134c974e8ca0e0b3fda3d89bca7a (diff) |
refactored phone contact loading in preperation for sync
Diffstat (limited to 'src/main/java/de/pixart/messenger/entities/Contact.java')
-rw-r--r-- | src/main/java/de/pixart/messenger/entities/Contact.java | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/src/main/java/de/pixart/messenger/entities/Contact.java b/src/main/java/de/pixart/messenger/entities/Contact.java index a74b09dff..fad4806de 100644 --- a/src/main/java/de/pixart/messenger/entities/Contact.java +++ b/src/main/java/de/pixart/messenger/entities/Contact.java @@ -48,7 +48,7 @@ public class Contact implements ListItem, Blockable { private String commonName; protected Jid jid; private int subscription = 0; - private String systemAccount; + private Uri systemAccount; private String photoUri; private final JSONObject keys; private JSONArray groups = new JSONArray(); @@ -62,7 +62,7 @@ public class Contact implements ListItem, Blockable { public Contact(final String account, final String systemName, final String serverName, final Jid jid, final int subscription, final String photoUri, - final String systemAccount, final String keys, final String avatar, final long lastseen, + final Uri systemAccount, final String keys, final String avatar, final long lastseen, final String presence, final String groups) { this.accountUuid = account; this.systemName = systemName; @@ -105,13 +105,19 @@ public class Contact implements ListItem, Blockable { // TODO: Borked DB... handle this somehow? return null; } + Uri systemAccount; + try { + systemAccount = Uri.parse(cursor.getString(cursor.getColumnIndex(SYSTEMACCOUNT))); + } catch (Exception e) { + systemAccount = null; + } return new Contact(cursor.getString(cursor.getColumnIndex(ACCOUNT)), cursor.getString(cursor.getColumnIndex(SYSTEMNAME)), cursor.getString(cursor.getColumnIndex(SERVERNAME)), jid, cursor.getInt(cursor.getColumnIndex(OPTIONS)), cursor.getString(cursor.getColumnIndex(PHOTOURI)), - cursor.getString(cursor.getColumnIndex(SYSTEMACCOUNT)), + systemAccount, cursor.getString(cursor.getColumnIndex(KEYS)), cursor.getString(cursor.getColumnIndex(AVATAR)), cursor.getLong(cursor.getColumnIndex(LAST_TIME)), @@ -203,7 +209,7 @@ public class Contact implements ListItem, Blockable { values.put(SERVERNAME, serverName); values.put(JID, jid.toString()); values.put(OPTIONS, subscription); - values.put(SYSTEMACCOUNT, systemAccount); + values.put(SYSTEMACCOUNT, systemAccount != null ? systemAccount.toString() : null); values.put(PHOTOURI, photoUri); values.put(KEYS, keys.toString()); values.put(AVATAR, avatar == null ? null : avatar.getFilename()); @@ -277,21 +283,11 @@ public class Contact implements ListItem, Blockable { } public Uri getSystemAccount() { - if (systemAccount == null) { - return null; - } else { - String[] parts = systemAccount.split("#"); - if (parts.length != 2) { - return null; - } else { - long id = Long.parseLong(parts[0]); - return ContactsContract.Contacts.getLookupUri(id, parts[1]); - } - } + return systemAccount; } - public void setSystemAccount(String account) { - this.systemAccount = account; + public void setSystemAccount(Uri lookupUri) { + this.systemAccount = lookupUri; } private Collection<String> getGroups(final boolean unique) { @@ -391,7 +387,7 @@ public class Contact implements ListItem, Blockable { } public boolean showInPhoneBook() { - return systemAccount != null && !systemAccount.trim().isEmpty(); + return systemAccount != null; } public void parseSubscriptionFromElement(Element item) { |