diff --git a/Signal/src/Jobs/ConversationConfigurationSyncOperation.swift b/Signal/src/Jobs/ConversationConfigurationSyncOperation.swift index 94bfd06f6..6c7681073 100644 --- a/Signal/src/Jobs/ConversationConfigurationSyncOperation.swift +++ b/Signal/src/Jobs/ConversationConfigurationSyncOperation.swift @@ -55,7 +55,7 @@ class ConversationConfigurationSyncOperation: OWSOperation { } private func sync(contactThread: TSContactThread) { - guard let signalAccount: SignalAccount = self.contactsManager.signalAccount(forRecipientId: contactThread.contactIdentifier()) else { + guard let signalAccount: SignalAccount = self.contactsManager.fetchSignalAccount(forRecipientId: contactThread.contactIdentifier()) else { reportAssertionError(description: "unable to find signalAccount") return } diff --git a/Signal/src/ViewControllers/AppSettings/BlockListViewController.m b/Signal/src/ViewControllers/AppSettings/BlockListViewController.m index c2bdb4c75..ae0869e2f 100644 --- a/Signal/src/ViewControllers/AppSettings/BlockListViewController.m +++ b/Signal/src/ViewControllers/AppSettings/BlockListViewController.m @@ -83,16 +83,8 @@ NS_ASSUME_NONNULL_BEGIN [blocklistSection addItem:[OWSTableItem itemWithCustomCellBlock:^{ ContactTableViewCell *cell = [ContactTableViewCell new]; - SignalAccount *signalAccount = - [helper signalAccountForRecipientId:phoneNumber]; - if (signalAccount) { - [cell configureWithSignalAccount:signalAccount - contactsManager:helper.contactsManager]; - } else { - [cell configureWithRecipientId:phoneNumber - contactsManager:helper.contactsManager]; - } - + [cell configureWithRecipientId:phoneNumber + contactsManager:helper.contactsManager]; return cell; } customRowHeight:UITableViewAutomaticDimension diff --git a/Signal/src/ViewControllers/HomeView/ConversationSearchViewController.swift b/Signal/src/ViewControllers/HomeView/ConversationSearchViewController.swift index 1c24fe4a5..b0d1941d9 100644 --- a/Signal/src/ViewControllers/HomeView/ConversationSearchViewController.swift +++ b/Signal/src/ViewControllers/HomeView/ConversationSearchViewController.swift @@ -226,7 +226,7 @@ class ConversationSearchViewController: UITableViewController { owsFail("searchResult was unexpectedly nil") return UITableViewCell() } - cell.configure(with: searchResult.signalAccount, contactsManager: contactsManager) + cell.configure(withRecipientId: searchResult.signalAccount.recipientId, contactsManager: contactsManager) return cell case .messages: guard let cell = tableView.dequeueReusableCell(withIdentifier: HomeViewCell.cellReuseIdentifier()) as? HomeViewCell else { diff --git a/Signal/src/ViewControllers/NewContactThreadViewController.m b/Signal/src/ViewControllers/NewContactThreadViewController.m index ab3e77a23..a00921d43 100644 --- a/Signal/src/ViewControllers/NewContactThreadViewController.m +++ b/Signal/src/ViewControllers/NewContactThreadViewController.m @@ -462,8 +462,8 @@ NS_ASSUME_NONNULL_BEGIN @"An indicator that a contact has been blocked."); } - [cell configureWithSignalAccount:signalAccount - contactsManager:self.contactsViewHelper.contactsManager]; + [cell configureWithRecipientId:signalAccount.recipientId + contactsManager:self.contactsViewHelper.contactsManager]; return cell; } @@ -510,15 +510,7 @@ NS_ASSUME_NONNULL_BEGIN cell.accessoryMessage = NSLocalizedString( @"CONTACT_CELL_IS_BLOCKED", @"An indicator that a contact has been blocked."); } - - SignalAccount *signalAccount = [helper signalAccountForRecipientId:phoneNumber]; - if (signalAccount) { - [cell configureWithSignalAccount:signalAccount - contactsManager:helper.contactsManager]; - } else { - [cell configureWithRecipientId:phoneNumber contactsManager:helper.contactsManager]; - } - + [cell configureWithRecipientId:phoneNumber contactsManager:helper.contactsManager]; return cell; } customRowHeight:UITableViewAutomaticDimension @@ -566,7 +558,8 @@ NS_ASSUME_NONNULL_BEGIN @"CONTACT_CELL_IS_BLOCKED", @"An indicator that a contact has been blocked."); } - [cell configureWithSignalAccount:signalAccount contactsManager:helper.contactsManager]; + [cell configureWithRecipientId:signalAccount.recipientId + contactsManager:helper.contactsManager]; return cell; } diff --git a/Signal/src/ViewControllers/NewGroupViewController.m b/Signal/src/ViewControllers/NewGroupViewController.m index f08b72cc0..901ea951e 100644 --- a/Signal/src/ViewControllers/NewGroupViewController.m +++ b/Signal/src/ViewControllers/NewGroupViewController.m @@ -226,8 +226,6 @@ const NSUInteger kNewGroupViewControllerAvatarWidth = 68; OWSCAssert(strongSelf); ContactTableViewCell *cell = [ContactTableViewCell new]; - SignalAccount *signalAccount = - [contactsViewHelper signalAccountForRecipientId:recipientId]; BOOL isCurrentMember = [strongSelf.memberRecipientIds containsObject:recipientId]; BOOL isBlocked = [contactsViewHelper isRecipientIdBlocked:recipientId]; if (isCurrentMember) { @@ -239,15 +237,8 @@ const NSUInteger kNewGroupViewControllerAvatarWidth = 68; cell.accessoryMessage = NSLocalizedString( @"CONTACT_CELL_IS_BLOCKED", @"An indicator that a contact has been blocked."); } - - if (signalAccount) { - [cell configureWithSignalAccount:signalAccount - contactsManager:contactsViewHelper.contactsManager]; - } else { - [cell configureWithRecipientId:recipientId - contactsManager:contactsViewHelper.contactsManager]; - } - + [cell configureWithRecipientId:recipientId + contactsManager:contactsViewHelper.contactsManager]; return cell; } customRowHeight:UITableViewAutomaticDimension @@ -335,9 +326,8 @@ const NSUInteger kNewGroupViewControllerAvatarWidth = 68; @"CONTACT_CELL_IS_BLOCKED", @"An indicator that a contact has been blocked."); } - [cell configureWithSignalAccount:signalAccount - contactsManager:contactsViewHelper.contactsManager]; - + [cell configureWithRecipientId:signalAccount.recipientId + contactsManager:contactsViewHelper.contactsManager]; return cell; } customRowHeight:UITableViewAutomaticDimension diff --git a/Signal/src/ViewControllers/ThreadSettings/ShowGroupMembersViewController.m b/Signal/src/ViewControllers/ThreadSettings/ShowGroupMembersViewController.m index 717a67624..d9a7960ed 100644 --- a/Signal/src/ViewControllers/ThreadSettings/ShowGroupMembersViewController.m +++ b/Signal/src/ViewControllers/ThreadSettings/ShowGroupMembersViewController.m @@ -162,12 +162,12 @@ NS_ASSUME_NONNULL_BEGIN __weak ShowGroupMembersViewController *weakSelf = self; ContactsViewHelper *helper = self.contactsViewHelper; // Sort the group members using contacts manager. - NSArray *sortedRecipientIds = - [recipientIds sortedArrayUsingComparator:^NSComparisonResult(NSString *recipientIdA, NSString *recipientIdB) { - SignalAccount *signalAccountA = [helper.contactsManager signalAccountForRecipientId:recipientIdA]; - SignalAccount *signalAccountB = [helper.contactsManager signalAccountForRecipientId:recipientIdB]; - return [helper.contactsManager compareSignalAccount:signalAccountA withSignalAccount:signalAccountB]; - }]; + NSArray *sortedRecipientIds = [recipientIds sortedArrayUsingComparator:^NSComparisonResult( + NSString *recipientIdA, NSString *recipientIdB) { + SignalAccount *signalAccountA = [helper.contactsManager fetchOrBuildSignalAccountForRecipientId:recipientIdA]; + SignalAccount *signalAccountB = [helper.contactsManager fetchOrBuildSignalAccountForRecipientId:recipientIdB]; + return [helper.contactsManager compareSignalAccount:signalAccountA withSignalAccount:signalAccountB]; + }]; for (NSString *recipientId in sortedRecipientIds) { [section addItem:[OWSTableItem itemWithCustomCellBlock:^{ @@ -175,7 +175,6 @@ NS_ASSUME_NONNULL_BEGIN OWSCAssert(strongSelf); ContactTableViewCell *cell = [ContactTableViewCell new]; - SignalAccount *signalAccount = [helper signalAccountForRecipientId:recipientId]; OWSVerificationState verificationState = [[OWSIdentityManager sharedManager] verificationStateForRecipientId:recipientId]; BOOL isVerified = verificationState == OWSVerificationStateVerified; @@ -189,12 +188,7 @@ NS_ASSUME_NONNULL_BEGIN @"CONTACT_CELL_IS_BLOCKED", @"An indicator that a contact has been blocked."); } - if (signalAccount) { - [cell configureWithSignalAccount:signalAccount - contactsManager:helper.contactsManager]; - } else { - [cell configureWithRecipientId:recipientId contactsManager:helper.contactsManager]; - } + [cell configureWithRecipientId:recipientId contactsManager:helper.contactsManager]; if (isVerified) { [cell setAttributedSubtitle:cell.verifiedSubtitle]; @@ -279,7 +273,7 @@ NS_ASSUME_NONNULL_BEGIN OWSAssert(recipientId.length > 0); ContactsViewHelper *helper = self.contactsViewHelper; - SignalAccount *signalAccount = [helper signalAccountForRecipientId:recipientId]; + SignalAccount *_Nullable signalAccount = [helper fetchSignalAccountForRecipientId:recipientId]; UIAlertController *actionSheetController = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet]; diff --git a/Signal/src/ViewControllers/ThreadSettings/UpdateGroupViewController.m b/Signal/src/ViewControllers/ThreadSettings/UpdateGroupViewController.m index 9b7b7cd2d..bf4d8341e 100644 --- a/Signal/src/ViewControllers/ThreadSettings/UpdateGroupViewController.m +++ b/Signal/src/ViewControllers/ThreadSettings/UpdateGroupViewController.m @@ -266,7 +266,6 @@ NS_ASSUME_NONNULL_BEGIN OWSCAssert(strongSelf); ContactTableViewCell *cell = [ContactTableViewCell new]; - SignalAccount *signalAccount = [contactsViewHelper signalAccountForRecipientId:recipientId]; BOOL isPreviousMember = [strongSelf.previousMemberRecipientIds containsObject:recipientId]; BOOL isBlocked = [contactsViewHelper isRecipientIdBlocked:recipientId]; if (isPreviousMember) { @@ -286,19 +285,14 @@ NS_ASSUME_NONNULL_BEGIN @"An indicator that a user is a new member of the group."); } - if (signalAccount) { - [cell configureWithSignalAccount:signalAccount - contactsManager:contactsViewHelper.contactsManager]; - } else { - [cell configureWithRecipientId:recipientId - contactsManager:contactsViewHelper.contactsManager]; - } - + [cell configureWithRecipientId:recipientId + contactsManager:contactsViewHelper.contactsManager]; return cell; } customRowHeight:UITableViewAutomaticDimension actionBlock:^{ - SignalAccount *signalAccount = [contactsViewHelper signalAccountForRecipientId:recipientId]; + SignalAccount *_Nullable signalAccount = + [contactsViewHelper fetchSignalAccountForRecipientId:recipientId]; BOOL isPreviousMember = [weakSelf.previousMemberRecipientIds containsObject:recipientId]; BOOL isBlocked = [contactsViewHelper isRecipientIdBlocked:recipientId]; if (isPreviousMember) { diff --git a/Signal/src/call/CallService.swift b/Signal/src/call/CallService.swift index b991847ba..90ab4d0b3 100644 --- a/Signal/src/call/CallService.swift +++ b/Signal/src/call/CallService.swift @@ -682,9 +682,9 @@ private class SignalCallData: NSObject { // For contacts not stored in our system contacts, we assume they are an unknown caller, and we force // a TURN connection, so as not to reveal any connectivity information (IP/port) to the caller. - let unknownCaller = self.contactsManager.signalAccount(forRecipientId: thread.contactIdentifier()) == nil + let isUnknownCaller = !self.contactsManager.hasSignalAccount(forRecipientId: thread.contactIdentifier()) - let useTurnOnly = unknownCaller || Environment.current().preferences.doCallsHideIPAddress() + let useTurnOnly = isUnknownCaller || Environment.current().preferences.doCallsHideIPAddress() Logger.debug("\(self.logTag) setting peerConnectionClient in \(#function) for: \(newCall.identifiersForLogs)") let peerConnectionClient = PeerConnectionClient(iceServers: iceServers, delegate: self, callDirection: .incoming, useTurnOnly: useTurnOnly) diff --git a/SignalMessaging/Views/ContactCellView.h b/SignalMessaging/Views/ContactCellView.h index 93c1b4675..86ede9d9b 100644 --- a/SignalMessaging/Views/ContactCellView.h +++ b/SignalMessaging/Views/ContactCellView.h @@ -8,15 +8,12 @@ extern const NSUInteger kContactCellAvatarSize; extern const CGFloat kContactCellAvatarTextMargin; @class OWSContactsManager; -@class SignalAccount; @class TSThread; @interface ContactCellView : UIStackView @property (nonatomic, nullable) NSString *accessoryMessage; -- (void)configureWithSignalAccount:(SignalAccount *)signalAccount contactsManager:(OWSContactsManager *)contactsManager; - - (void)configureWithRecipientId:(NSString *)recipientId contactsManager:(OWSContactsManager *)contactsManager; - (void)configureWithThread:(TSThread *)thread contactsManager:(OWSContactsManager *)contactsManager; diff --git a/SignalMessaging/Views/ContactCellView.m b/SignalMessaging/Views/ContactCellView.m index 9bf165f33..ec9b58441 100644 --- a/SignalMessaging/Views/ContactCellView.m +++ b/SignalMessaging/Views/ContactCellView.m @@ -103,11 +103,6 @@ const CGFloat kContactCellAvatarTextMargin = 12; self.accessoryLabel.textColor = [UIColor colorWithWhite:0.5f alpha:1.f]; } -- (void)configureWithSignalAccount:(SignalAccount *)signalAccount contactsManager:(OWSContactsManager *)contactsManager -{ - [self configureWithRecipientId:signalAccount.recipientId contactsManager:contactsManager]; -} - - (void)configureWithRecipientId:(NSString *)recipientId contactsManager:(OWSContactsManager *)contactsManager { OWSAssert(recipientId.length > 0); diff --git a/SignalMessaging/Views/ContactTableViewCell.h b/SignalMessaging/Views/ContactTableViewCell.h index 0554b6521..778f8a6c1 100644 --- a/SignalMessaging/Views/ContactTableViewCell.h +++ b/SignalMessaging/Views/ContactTableViewCell.h @@ -7,15 +7,12 @@ NS_ASSUME_NONNULL_BEGIN @class OWSContactsManager; -@class SignalAccount; @class TSThread; @interface ContactTableViewCell : UITableViewCell + (NSString *)reuseIdentifier; -- (void)configureWithSignalAccount:(SignalAccount *)signalAccount contactsManager:(OWSContactsManager *)contactsManager; - - (void)configureWithRecipientId:(NSString *)recipientId contactsManager:(OWSContactsManager *)contactsManager; - (void)configureWithThread:(TSThread *)thread contactsManager:(OWSContactsManager *)contactsManager; diff --git a/SignalMessaging/Views/ContactTableViewCell.m b/SignalMessaging/Views/ContactTableViewCell.m index 64d407f39..2283474f3 100644 --- a/SignalMessaging/Views/ContactTableViewCell.m +++ b/SignalMessaging/Views/ContactTableViewCell.m @@ -53,11 +53,6 @@ NS_ASSUME_NONNULL_BEGIN self.cellView.userInteractionEnabled = NO; } -- (void)configureWithSignalAccount:(SignalAccount *)signalAccount contactsManager:(OWSContactsManager *)contactsManager -{ - [self configureWithRecipientId:signalAccount.recipientId contactsManager:contactsManager]; -} - - (void)configureWithRecipientId:(NSString *)recipientId contactsManager:(OWSContactsManager *)contactsManager { [OWSTableItem configureCell:self]; diff --git a/SignalMessaging/Views/ContactsViewHelper.h b/SignalMessaging/Views/ContactsViewHelper.h index b367e6fa2..6c109dbe7 100644 --- a/SignalMessaging/Views/ContactsViewHelper.h +++ b/SignalMessaging/Views/ContactsViewHelper.h @@ -55,7 +55,8 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithDelegate:(id)delegate; -- (nullable SignalAccount *)signalAccountForRecipientId:(NSString *)recipientId; +- (nullable SignalAccount *)fetchSignalAccountForRecipientId:(NSString *)recipientId; +- (SignalAccount *)fetchOrBuildSignalAccountForRecipientId:(NSString *)recipientId; // This method is faster than OWSBlockingManager but // is only safe to be called on the main thread. diff --git a/SignalMessaging/Views/ContactsViewHelper.m b/SignalMessaging/Views/ContactsViewHelper.m index 581c16a4a..50fb4cf65 100644 --- a/SignalMessaging/Views/ContactsViewHelper.m +++ b/SignalMessaging/Views/ContactsViewHelper.m @@ -102,7 +102,7 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - Contacts -- (nullable SignalAccount *)signalAccountForRecipientId:(NSString *)recipientId +- (nullable SignalAccount *)fetchSignalAccountForRecipientId:(NSString *)recipientId { OWSAssertIsOnMainThread(); OWSAssert(recipientId.length > 0); @@ -110,6 +110,14 @@ NS_ASSUME_NONNULL_BEGIN return self.signalAccountMap[recipientId]; } +- (SignalAccount *)fetchOrBuildSignalAccountForRecipientId:(NSString *)recipientId +{ + OWSAssert(recipientId.length > 0); + + SignalAccount *_Nullable signalAccount = [self fetchSignalAccountForRecipientId:recipientId]; + return (signalAccount ?: [[SignalAccount alloc] initWithRecipientId:recipientId]); +} + - (BOOL)isSignalAccountHidden:(SignalAccount *)signalAccount { OWSAssertIsOnMainThread(); @@ -310,7 +318,7 @@ NS_ASSUME_NONNULL_BEGIN editImmediately:(BOOL)shouldEditImmediately addToExistingCnContact:(CNContact *_Nullable)existingContact { - SignalAccount *signalAccount = [self signalAccountForRecipientId:recipientId]; + SignalAccount *signalAccount = [self fetchSignalAccountForRecipientId:recipientId]; if (!self.contactsManager.supportsContactEditing) { // Should not expose UI that lets the user get here. diff --git a/SignalMessaging/contacts/OWSContactsManager.h b/SignalMessaging/contacts/OWSContactsManager.h index b1b5f06a4..456cdac2b 100644 --- a/SignalMessaging/contacts/OWSContactsManager.h +++ b/SignalMessaging/contacts/OWSContactsManager.h @@ -32,7 +32,11 @@ extern NSString *const OWSContactsManagerSignalAccountsDidChangeNotification; // order of the signalAccounts array respects the systems contact sorting preference @property (atomic, readonly) NSArray *signalAccounts; -- (nullable SignalAccount *)signalAccountForRecipientId:(NSString *)recipientId; + +// This will return an instance of SignalAccount for _known_ signal accounts. +- (nullable SignalAccount *)fetchSignalAccountForRecipientId:(NSString *)recipientId; +// This will always return an instance of SignalAccount. +- (SignalAccount *)fetchOrBuildSignalAccountForRecipientId:(NSString *)recipientId; - (BOOL)hasSignalAccountForRecipientId:(NSString *)recipientId; - (void)loadSignalAccountsFromCache; diff --git a/SignalMessaging/contacts/OWSContactsManager.m b/SignalMessaging/contacts/OWSContactsManager.m index cb62e1726..880b0e6e9 100644 --- a/SignalMessaging/contacts/OWSContactsManager.m +++ b/SignalMessaging/contacts/OWSContactsManager.m @@ -588,7 +588,7 @@ NSString *const OWSContactsManagerKeyNextFullIntersectionDate = @"OWSContactsMan { OWSAssert(recipientId.length > 0); - SignalAccount *_Nullable signalAccount = [self signalAccountForRecipientId:recipientId]; + SignalAccount *_Nullable signalAccount = [self fetchSignalAccountForRecipientId:recipientId]; if (!signalAccount) { // search system contacts for no-longer-registered signal users, for which there will be no SignalAccount DDLogDebug(@"%@ no signal account", self.logTag); @@ -616,7 +616,7 @@ NSString *const OWSContactsManagerKeyNextFullIntersectionDate = @"OWSContactsMan { OWSAssert(recipientId.length > 0); - SignalAccount *_Nullable signalAccount = [self signalAccountForRecipientId:recipientId]; + SignalAccount *_Nullable signalAccount = [self fetchSignalAccountForRecipientId:recipientId]; return signalAccount.contact.firstName.filterStringForDisplay; } @@ -624,7 +624,7 @@ NSString *const OWSContactsManagerKeyNextFullIntersectionDate = @"OWSContactsMan { OWSAssert(recipientId.length > 0); - SignalAccount *_Nullable signalAccount = [self signalAccountForRecipientId:recipientId]; + SignalAccount *_Nullable signalAccount = [self fetchSignalAccountForRecipientId:recipientId]; return signalAccount.contact.lastName.filterStringForDisplay; } @@ -821,7 +821,7 @@ NSString *const OWSContactsManagerKeyNextFullIntersectionDate = @"OWSContactsMan } // Append unique label for contacts with multiple Signal accounts - SignalAccount *signalAccount = [self signalAccountForRecipientId:recipientId]; + SignalAccount *_Nullable signalAccount = [self fetchSignalAccountForRecipientId:recipientId]; if (signalAccount && signalAccount.multipleAccountLabelText) { OWSAssert(signalAccount.multipleAccountLabelText.length > 0); @@ -938,7 +938,7 @@ NSString *const OWSContactsManagerKeyNextFullIntersectionDate = @"OWSContactsMan return formattedPhoneNumber; } -- (nullable SignalAccount *)signalAccountForRecipientId:(NSString *)recipientId +- (nullable SignalAccount *)fetchSignalAccountForRecipientId:(NSString *)recipientId { OWSAssert(recipientId.length > 0); @@ -955,11 +955,18 @@ NSString *const OWSContactsManagerKeyNextFullIntersectionDate = @"OWSContactsMan return signalAccount; } -- (BOOL)hasSignalAccountForRecipientId:(NSString *)recipientId +- (SignalAccount *)fetchOrBuildSignalAccountForRecipientId:(NSString *)recipientId { - return [self signalAccountForRecipientId:recipientId] != nil; + OWSAssert(recipientId.length > 0); + + SignalAccount *_Nullable signalAccount = [self fetchSignalAccountForRecipientId:recipientId]; + return (signalAccount ?: [[SignalAccount alloc] initWithRecipientId:recipientId]); } +- (BOOL)hasSignalAccountForRecipientId:(NSString *)recipientId +{ + return [self fetchSignalAccountForRecipientId:recipientId] != nil; +} - (UIImage *_Nullable)systemContactImageForPhoneIdentifier:(NSString *_Nullable)identifier { @@ -971,7 +978,7 @@ NSString *const OWSContactsManagerKeyNextFullIntersectionDate = @"OWSContactsMan if (!contact) { // If we haven't loaded system contacts yet, we may have a cached // copy in the db - contact = [self signalAccountForRecipientId:identifier].contact; + contact = [self fetchSignalAccountForRecipientId:identifier].contact; } return [self avatarImageForCNContactId:contact.cnContactId]; diff --git a/SignalMessaging/contacts/SelectRecipientViewController.m b/SignalMessaging/contacts/SelectRecipientViewController.m index c1c19c4c6..17a2b8d2c 100644 --- a/SignalMessaging/contacts/SelectRecipientViewController.m +++ b/SignalMessaging/contacts/SelectRecipientViewController.m @@ -550,8 +550,8 @@ NSString *const kSelectRecipientViewControllerCellIdentifier = @"kSelectRecipien cell.accessoryMessage = [weakSelf.delegate accessoryMessageForSignalAccount:signalAccount]; } - [cell configureWithSignalAccount:signalAccount - contactsManager:helper.contactsManager]; + [cell configureWithRecipientId:signalAccount.recipientId + contactsManager:helper.contactsManager]; if (![weakSelf.delegate canSignalAccountBeSelected:signalAccount]) { cell.selectionStyle = UITableViewCellSelectionStyleNone; diff --git a/SignalMessaging/contacts/SelectThreadViewController.m b/SignalMessaging/contacts/SelectThreadViewController.m index 41b6e0a7f..22ce20bcd 100644 --- a/SignalMessaging/contacts/SelectThreadViewController.m +++ b/SignalMessaging/contacts/SelectThreadViewController.m @@ -283,7 +283,8 @@ NS_ASSUME_NONNULL_BEGIN cell.accessoryMessage = NSLocalizedString( @"CONTACT_CELL_IS_BLOCKED", @"An indicator that a contact has been blocked."); } - [cell configureWithSignalAccount:signalAccount contactsManager:helper.contactsManager]; + [cell configureWithRecipientId:signalAccount.recipientId + contactsManager:helper.contactsManager]; return cell; } customRowHeight:UITableViewAutomaticDimension @@ -411,10 +412,7 @@ NS_ASSUME_NONNULL_BEGIN - (void)recipientIdWasSelected:(NSString *)recipientId { - SignalAccount *_Nullable signalAccount = [self.contactsViewHelper signalAccountForRecipientId:recipientId]; - if (!signalAccount) { - signalAccount = [[SignalAccount alloc] initWithRecipientId:recipientId]; - } + SignalAccount *signalAccount = [self.contactsViewHelper fetchOrBuildSignalAccountForRecipientId:recipientId]; [self signalAccountWasSelected:signalAccount]; }