From 87ea1dcae12da1d1e13c0d1d185e7007e226f3f3 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 20 Jun 2018 13:14:21 -0400 Subject: [PATCH] Clean up ahead of PR. --- Signal/src/ViewControllers/ContactsPicker.swift | 4 ++-- SignalMessaging/contacts/OWSContactsManager.m | 4 ++-- SignalServiceKit/src/Contacts/Contact.h | 1 + SignalServiceKit/src/Contacts/Contact.m | 5 +++++ 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Signal/src/ViewControllers/ContactsPicker.swift b/Signal/src/ViewControllers/ContactsPicker.swift index c42f071a2..fbd920cbb 100644 --- a/Signal/src/ViewControllers/ContactsPicker.swift +++ b/Signal/src/ViewControllers/ContactsPicker.swift @@ -237,7 +237,7 @@ public class ContactsPicker: OWSViewController, UITableViewDelegate, UITableView let contact = Contact(systemContact: cnContact) cell.configure(contact: contact, subtitleType: subtitleCellType, showsWhenSelected: self.allowsMultipleSelection, contactsManager: self.contactsManager) - let isSelected = selectedContacts.contains(where: { $0.cnContactId == contact.cnContactId }) + let isSelected = selectedContacts.contains(where: { $0.uniqueId == contact.uniqueId }) cell.isSelected = isSelected // Make sure we preserve selection across tableView.reloadData which happens when toggling between @@ -256,7 +256,7 @@ public class ContactsPicker: OWSViewController, UITableViewDelegate, UITableView let deselectedContact = cell.contact! selectedContacts = selectedContacts.filter { - return $0.cnContactId != deselectedContact.cnContactId + return $0.uniqueId != deselectedContact.uniqueId } } diff --git a/SignalMessaging/contacts/OWSContactsManager.m b/SignalMessaging/contacts/OWSContactsManager.m index 95859de7a..ab1a734f6 100644 --- a/SignalMessaging/contacts/OWSContactsManager.m +++ b/SignalMessaging/contacts/OWSContactsManager.m @@ -318,13 +318,13 @@ NSString *const OWSContactsManagerSignalAccountsDidChangeNotification [self.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) { for (Contact *contact in contacts) { NSArray *signalRecipients = [contact signalRecipientsWithTransaction:transaction]; - contactIdToSignalRecipientsMap[contact.cnContactId] = signalRecipients; + contactIdToSignalRecipientsMap[contact.uniqueId] = signalRecipients; } }]; NSMutableSet *seenRecipientIds = [NSMutableSet new]; for (Contact *contact in contacts) { - NSArray *signalRecipients = contactIdToSignalRecipientsMap[contact.cnContactId]; + NSArray *signalRecipients = contactIdToSignalRecipientsMap[contact.uniqueId]; for (SignalRecipient *signalRecipient in [signalRecipients sortedArrayUsingSelector:@selector(compare:)]) { if ([seenRecipientIds containsObject:signalRecipient.recipientId]) { DDLogDebug(@"Ignoring duplicate contact: %@, %@", signalRecipient.recipientId, contact.fullName); diff --git a/SignalServiceKit/src/Contacts/Contact.h b/SignalServiceKit/src/Contacts/Contact.h index 1663fd8ee..ff7455f8d 100644 --- a/SignalServiceKit/src/Contacts/Contact.h +++ b/SignalServiceKit/src/Contacts/Contact.h @@ -26,6 +26,7 @@ NS_ASSUME_NONNULL_BEGIN @property (readonly, nonatomic) NSArray *parsedPhoneNumbers; @property (readonly, nonatomic) NSArray *userTextPhoneNumbers; @property (readonly, nonatomic) NSArray *emails; +@property (readonly, nonatomic) NSString *uniqueId; @property (nonatomic, readonly) BOOL isSignalContact; @property (nonatomic, readonly) NSString *cnContactId; diff --git a/SignalServiceKit/src/Contacts/Contact.m b/SignalServiceKit/src/Contacts/Contact.m index e079d2afa..2853ab2a7 100644 --- a/SignalServiceKit/src/Contacts/Contact.m +++ b/SignalServiceKit/src/Contacts/Contact.m @@ -117,6 +117,11 @@ NS_ASSUME_NONNULL_BEGIN return self; } +- (nullable NSString *)uniqueId +{ + return self.cnContactId; +} + + (nullable Contact *)contactWithVCardData:(NSData *)data { CNContact *_Nullable cnContact = [self cnContactWithVCardData:data];