From d9ab1a93f8843c157dbd27253ba67a84295daad2 Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Mon, 27 Nov 2017 12:13:57 -0800 Subject: [PATCH] Fix problem with creating group and empty avatar --- .../securesms/database/GroupDatabase.java | 11 ++++++++--- .../securesms/recipients/RecipientProvider.java | 8 +++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/org/thoughtcrime/securesms/database/GroupDatabase.java b/src/org/thoughtcrime/securesms/database/GroupDatabase.java index 3ef8ca55c6..059f4c51ac 100644 --- a/src/org/thoughtcrime/securesms/database/GroupDatabase.java +++ b/src/org/thoughtcrime/securesms/database/GroupDatabase.java @@ -221,15 +221,20 @@ public class GroupDatabase extends Database { } public void updateAvatar(String groupId, byte[] avatar) { - long avatarId = Math.abs(new SecureRandom().nextLong()); - ContentValues contentValues = new ContentValues(); + long avatarId; + + if (avatar != null) avatarId = Math.abs(new SecureRandom().nextLong()); + else avatarId = 0; + + + ContentValues contentValues = new ContentValues(2); contentValues.put(AVATAR, avatar); contentValues.put(AVATAR_ID, avatarId); databaseHelper.getWritableDatabase().update(TABLE_NAME, contentValues, GROUP_ID + " = ?", new String[] {groupId}); - Recipient.applyCached(Address.fromSerialized(groupId), recipient -> recipient.setGroupAvatarId(avatarId)); + Recipient.applyCached(Address.fromSerialized(groupId), recipient -> recipient.setGroupAvatarId(avatarId == 0 ? null : avatarId)); } public void updateMembers(String groupId, List
members) { diff --git a/src/org/thoughtcrime/securesms/recipients/RecipientProvider.java b/src/org/thoughtcrime/securesms/recipients/RecipientProvider.java index e34ecd8d1f..981ddac890 100644 --- a/src/org/thoughtcrime/securesms/recipients/RecipientProvider.java +++ b/src/org/thoughtcrime/securesms/recipients/RecipientProvider.java @@ -21,6 +21,7 @@ import android.net.Uri; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.TextUtils; +import android.util.Log; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.color.MaterialColor; @@ -130,6 +131,7 @@ class RecipientProvider { String title = groupRecord.get().getTitle(); List
memberAddresses = groupRecord.get().getMembers(); List members = new LinkedList<>(); + Long avatarId = null; for (Address memberAddress : memberAddresses) { members.add(getRecipient(context, memberAddress, Optional.absent(), Optional.absent(), asynchronous)); @@ -139,7 +141,11 @@ class RecipientProvider { title = context.getString(R.string.RecipientProvider_unnamed_group); } - return new RecipientDetails(title, groupRecord.get().getAvatarId(), false, settings.orNull(), members); + if (groupRecord.get().getAvatarId() != 0) { + avatarId = groupRecord.get().getAvatarId(); + } + + return new RecipientDetails(title, avatarId, false, settings.orNull(), members); } return new RecipientDetails(context.getString(R.string.RecipientProvider_unnamed_group), null, false, settings.orNull(), null);