From b4266b85750f8e2959c4ec1f7aaa8ebea5116148 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Sat, 13 Mar 2021 11:29:57 -0500 Subject: [PATCH] Fix contact sync issues where structured names are absent. --- .../contacts/sync/ContactHolder.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactHolder.java b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactHolder.java index 4a84052523..298326d815 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactHolder.java +++ b/app/src/main/java/org/thoughtcrime/securesms/contacts/sync/ContactHolder.java @@ -1,15 +1,22 @@ package org.thoughtcrime.securesms.contacts.sync; -import androidx.annotation.NonNull; +import android.net.Uri; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.database.RecipientDatabase; import org.thoughtcrime.securesms.profiles.ProfileName; +import org.whispersystems.libsignal.util.guava.Optional; import java.util.LinkedList; import java.util.List; final class ContactHolder { + private static final String TAG = Log.tag(ContactHolder.class); + private final String lookupKey; private final List phoneNumberRecords = new LinkedList<>(); @@ -38,16 +45,18 @@ final class ContactHolder { phoneNumberRecord.getContactPhotoUri(), phoneNumberRecord.getContactLabel(), phoneNumberRecord.getPhoneType(), - phoneNumberRecord.getContactUri().toString()); + Optional.fromNullable(phoneNumberRecord.getContactUri()).transform(Uri::toString).orNull()); } } - private @NonNull ProfileName getProfileName(@NonNull String displayName) { - if (structuredNameRecord.hasGivenName()) { + private @NonNull ProfileName getProfileName(@Nullable String displayName) { + if (structuredNameRecord != null && structuredNameRecord.hasGivenName()) { return structuredNameRecord.asProfileName(); - } else { + } else if (displayName != null) { return ProfileName.asGiven(displayName); + } else { + Log.w(TAG, "Failed to find a suitable display name!"); + return ProfileName.EMPTY; } } - }