diff options
author | Daniel Gultsch <daniel.gultsch@rwth-aachen.de> | 2014-04-18 21:26:01 +0200 |
---|---|---|
committer | Daniel Gultsch <daniel.gultsch@rwth-aachen.de> | 2014-04-18 21:26:01 +0200 |
commit | 7ccbf0008a600cd00e3dea1b95890d7454509af3 (patch) | |
tree | 097cb37392b14dfe0d97ec17a4e5a0ebe3c9b7b0 /src/eu/siacs/conversations/persistance/DatabaseBackend.java | |
parent | 1e5f916b2a61b90c610614178bcd4c971817c83d (diff) |
fixed concurrent modification of contacts which led to missing presences
Diffstat (limited to 'src/eu/siacs/conversations/persistance/DatabaseBackend.java')
-rw-r--r-- | src/eu/siacs/conversations/persistance/DatabaseBackend.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/eu/siacs/conversations/persistance/DatabaseBackend.java b/src/eu/siacs/conversations/persistance/DatabaseBackend.java index 852a9315..68fc56cd 100644 --- a/src/eu/siacs/conversations/persistance/DatabaseBackend.java +++ b/src/eu/siacs/conversations/persistance/DatabaseBackend.java @@ -201,9 +201,13 @@ public class DatabaseBackend extends SQLiteOpenHelper { + "=?", args); } - public void updateContact(Contact contact) { + public void updateContact(Contact contact, boolean updatePresences) { SQLiteDatabase db = this.getWritableDatabase(); String[] args = { contact.getUuid() }; + ContentValues values = contact.getContentValues(); + if (!updatePresences) { + values.remove(Contact.PRESENCES); + } db.update(Contact.TABLENAME, contact.getContentValues(), Contact.UUID + "=?", args); } @@ -227,8 +231,8 @@ public class DatabaseBackend extends SQLiteOpenHelper { if (cursor.getCount()>=1) { cursor.moveToFirst(); contact.setUuid(cursor.getString(0)); - contact.setPresences(Presences.fromJsonString(cursor.getString(1))); - updateContact(contact); + //contact.setPresences(Presences.fromJsonString(cursor.getString(1))); + updateContact(contact,false); } else { contact.setUuid(UUID.randomUUID().toString()); createContact(contact); |