Fix problem with creating group and empty avatar

This commit is contained in:
Moxie Marlinspike 2017-11-27 12:13:57 -08:00
parent c2dbb34b25
commit d9ab1a93f8
2 changed files with 15 additions and 4 deletions

View File

@ -221,15 +221,20 @@ public class GroupDatabase extends Database {
} }
public void updateAvatar(String groupId, byte[] avatar) { public void updateAvatar(String groupId, byte[] avatar) {
long avatarId = Math.abs(new SecureRandom().nextLong()); long avatarId;
ContentValues contentValues = new ContentValues();
if (avatar != null) avatarId = Math.abs(new SecureRandom().nextLong());
else avatarId = 0;
ContentValues contentValues = new ContentValues(2);
contentValues.put(AVATAR, avatar); contentValues.put(AVATAR, avatar);
contentValues.put(AVATAR_ID, avatarId); contentValues.put(AVATAR_ID, avatarId);
databaseHelper.getWritableDatabase().update(TABLE_NAME, contentValues, GROUP_ID + " = ?", databaseHelper.getWritableDatabase().update(TABLE_NAME, contentValues, GROUP_ID + " = ?",
new String[] {groupId}); 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<Address> members) { public void updateMembers(String groupId, List<Address> members) {

View File

@ -21,6 +21,7 @@ import android.net.Uri;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.color.MaterialColor; import org.thoughtcrime.securesms.color.MaterialColor;
@ -130,6 +131,7 @@ class RecipientProvider {
String title = groupRecord.get().getTitle(); String title = groupRecord.get().getTitle();
List<Address> memberAddresses = groupRecord.get().getMembers(); List<Address> memberAddresses = groupRecord.get().getMembers();
List<Recipient> members = new LinkedList<>(); List<Recipient> members = new LinkedList<>();
Long avatarId = null;
for (Address memberAddress : memberAddresses) { for (Address memberAddress : memberAddresses) {
members.add(getRecipient(context, memberAddress, Optional.absent(), Optional.absent(), asynchronous)); members.add(getRecipient(context, memberAddress, Optional.absent(), Optional.absent(), asynchronous));
@ -139,7 +141,11 @@ class RecipientProvider {
title = context.getString(R.string.RecipientProvider_unnamed_group); 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); return new RecipientDetails(context.getString(R.string.RecipientProvider_unnamed_group), null, false, settings.orNull(), null);