diff --git a/SignalMessaging/contacts/ContactsManagerCache.swift b/SignalMessaging/contacts/ContactsManagerCache.swift index cab2112a878..325f2607206 100644 --- a/SignalMessaging/contacts/ContactsManagerCache.swift +++ b/SignalMessaging/contacts/ContactsManagerCache.swift @@ -87,23 +87,24 @@ public class ContactsMaps: NSObject { } fileprivate static func phoneNumbers(forContact contact: Contact, localNumber: String?) -> [String] { - return contact.parsedPhoneNumbers.compactMap { phoneNumber in + let phoneNumbers: [String] = contact.parsedPhoneNumbers.compactMap { phoneNumber in guard let phoneNumberE164 = phoneNumber.toE164().nilIfEmpty else { return nil } + return phoneNumberE164 + } + + if let localNumber = localNumber, phoneNumbers.contains(localNumber) { // Ignore any system contact records for the local contact. // For the local user we never want to show the avatar / // name that you have entered for yourself in your system // contacts. Instead, we always want to display your profile // name and avatar. - let isLocalContact = phoneNumberE164 == localNumber - guard !isLocalContact else { - return nil - } - - return phoneNumberE164 + return [] } + + return phoneNumbers } @objc diff --git a/SignalMessaging/contacts/OWSContactsManager.swift b/SignalMessaging/contacts/OWSContactsManager.swift index 947a0d3abbe..da3c59dc84f 100644 --- a/SignalMessaging/contacts/OWSContactsManager.swift +++ b/SignalMessaging/contacts/OWSContactsManager.swift @@ -566,6 +566,11 @@ extension OWSContactsManager { return nil } + guard !address.isLocalAddress else { + // Never use system contact or synced image data for the local user + return nil + } + if let phoneNumber = self.phoneNumber(for: address, transaction: transaction), let contact = contactsManagerCache.contact(forPhoneNumber: phoneNumber, transaction: transaction), let cnContactId = contact.cnContactId,