From 39709c8d64decd5e8324c6af94ffe48c3fa9897f Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 19 Jul 2021 12:40:11 -0400 Subject: [PATCH] Fix some timing issues around recipient events. --- .../securesms/contacts/ContactSelectionListItem.java | 10 ++++++++-- .../securesms/recipients/LiveRecipient.java | 8 +++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java index c62971f0bd..16ec754984 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java @@ -16,6 +16,7 @@ import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.components.AvatarImageView; import org.thoughtcrime.securesms.components.FromTextView; import org.thoughtcrime.securesms.mms.GlideRequests; +import org.thoughtcrime.securesms.phonenumbers.PhoneNumberFormatter; import org.thoughtcrime.securesms.recipients.LiveRecipient; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientForeverObserver; @@ -95,8 +96,9 @@ public class ContactSelectionListItem extends LinearLayout implements RecipientF Recipient recipientSnapshot = recipient != null ? recipient.get() : null; if (recipientSnapshot != null && !recipientSnapshot.isResolving()) { - name = recipientSnapshot.getDisplayName(getContext()); - } else { + contactName = recipientSnapshot.getDisplayName(getContext()); + name = contactName; + } else if (recipient != null) { name = ""; } @@ -212,6 +214,10 @@ public class ContactSelectionListItem extends LinearLayout implements RecipientF @Override public void onRecipientChanged(@NonNull Recipient recipient) { if (this.recipient != null && this.recipient.getId().equals(recipient.getId())) { + contactName = recipient.getDisplayName(getContext()); + contactAbout = recipient.getCombinedAboutAndEmoji(); + contactNumber = PhoneNumberFormatter.prettyPrint(recipient.getE164().or("")); + contactPhotoImage.setAvatar(glideRequests, recipient, false); setText(recipient, contactType, contactName, contactNumber, contactLabel, contactAbout); smsTag.setVisibility(recipient.isRegistered() ? GONE : VISIBLE); diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipient.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipient.java index 1ae1da8851..504cd1b4db 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipient.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/LiveRecipient.java @@ -50,9 +50,11 @@ public final class LiveRecipient { this.groupDatabase = DatabaseFactory.getGroupDatabase(context); this.observers = new CopyOnWriteArraySet<>(); this.foreverObserver = recipient -> { - for (RecipientForeverObserver o : observers) { - o.onRecipientChanged(recipient); - } + ThreadUtil.postToMain(() -> { + for (RecipientForeverObserver o : observers) { + o.onRecipientChanged(recipient); + } + }); }; this.refreshForceNotify = new MutableLiveData<>(new Object()); this.observableLiveData = LiveDataUtil.combineLatest(LiveDataUtil.distinctUntilChanged(liveData, Recipient::hasSameContent),