diff --git a/Signal/src/ViewControllers/ConversationView/Cells/OWSQuotedMessageView.m b/Signal/src/ViewControllers/ConversationView/Cells/OWSQuotedMessageView.m index 7e8405bf5e..e39584f686 100644 --- a/Signal/src/ViewControllers/ConversationView/Cells/OWSQuotedMessageView.m +++ b/Signal/src/ViewControllers/ConversationView/Cells/OWSQuotedMessageView.m @@ -553,7 +553,7 @@ const CGFloat kRemotelySourcedContentRowSpacing = 3; if (SSKFeatureFlags.profileDisplayChanges) { quotedAuthor = [contactsManager displayNameForAddress:self.quotedMessage.authorAddress]; } else { - quotedAuthor = [contactsManager contactOrProfileNameForAddress:self.quotedMessage.authorAddress]; + quotedAuthor = [contactsManager legacyDisplayNameForAddress:self.quotedMessage.authorAddress]; } quotedAuthorText = [NSString stringWithFormat: diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m index c1111a8a0c..9204a10296 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m @@ -1368,9 +1368,9 @@ typedef enum : NSUInteger { name = [self.contactsManager displayNameForAddress:thread.contactAddress]; } else { attributedName = - [self.contactsManager attributedContactOrProfileNameForAddress:thread.contactAddress - primaryFont:self.headerView.titlePrimaryFont - secondaryFont:self.headerView.titleSecondaryFont]; + [self.contactsManager attributedLegacyDisplayNameForAddress:thread.contactAddress + primaryFont:self.headerView.titlePrimaryFont + secondaryFont:self.headerView.titleSecondaryFont]; } // If the user is in the system contacts, show a badge diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m b/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m index 617846b003..768592c95b 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m @@ -1649,10 +1649,9 @@ static const int kYapDatabaseRangeMaxLength = 25000; senderName = [[NSAttributedString alloc] initWithString:accessibilityAuthorName]; } else { senderName = [self.contactsManager - attributedContactOrProfileNameForAddress:incomingSenderAddress - primaryAttributes:[OWSMessageBubbleView senderNamePrimaryAttributes] - secondaryAttributes:[OWSMessageBubbleView - senderNameSecondaryAttributes]]; + attributedLegacyDisplayNameForAddress:incomingSenderAddress + primaryAttributes:[OWSMessageBubbleView senderNamePrimaryAttributes] + secondaryAttributes:[OWSMessageBubbleView senderNameSecondaryAttributes]]; } } diff --git a/Signal/src/ViewControllers/HomeView/HomeViewCell.m b/Signal/src/ViewControllers/HomeView/HomeViewCell.m index af09ac4225..520ddd4989 100644 --- a/Signal/src/ViewControllers/HomeView/HomeViewCell.m +++ b/Signal/src/ViewControllers/HomeView/HomeViewCell.m @@ -525,9 +525,9 @@ NS_ASSUME_NONNULL_BEGIN } else if (SSKFeatureFlags.profileDisplayChanges) { name = [self.contactsManager displayNameForAddress:thread.contactAddress]; } else { - attributedName = [self.contactsManager attributedContactOrProfileNameForAddress:thread.contactAddress - primaryFont:self.nameFont - secondaryFont:self.nameSecondaryFont]; + attributedName = [self.contactsManager attributedLegacyDisplayNameForAddress:thread.contactAddress + primaryFont:self.nameFont + secondaryFont:self.nameSecondaryFont]; } } diff --git a/Signal/src/ViewControllers/MessageDetailViewController.swift b/Signal/src/ViewControllers/MessageDetailViewController.swift index 2764546dce..bbe656996d 100644 --- a/Signal/src/ViewControllers/MessageDetailViewController.swift +++ b/Signal/src/ViewControllers/MessageDetailViewController.swift @@ -239,7 +239,7 @@ class MessageDetailViewController: OWSViewController { if FeatureFlags.profileDisplayChanges { senderName = contactsManager.displayName(for: incomingMessage.authorAddress) } else { - senderName = contactsManager.contactOrProfileName(for: incomingMessage.authorAddress) + senderName = contactsManager.legacyDisplayName(for: incomingMessage.authorAddress) } rows.append(valueRow(name: NSLocalizedString("MESSAGE_METADATA_VIEW_SENDER", comment: "Label for the 'sender' field of the 'message metadata' view."), diff --git a/SignalMessaging/contacts/OWSContactsManager.h b/SignalMessaging/contacts/OWSContactsManager.h index 1b382d258c..9dc1976a9a 100644 --- a/SignalMessaging/contacts/OWSContactsManager.h +++ b/SignalMessaging/contacts/OWSContactsManager.h @@ -84,15 +84,17 @@ extern NSString *const OWSContactsManagerSignalAccountsDidChangeNotification; - (nullable UIImage *)imageForAddressWithSneakyTransaction:(nullable SignalServiceAddress *)address; // Legacy display name helpers, once the `profileDisplayChanges` feature is enabled these can go away. -- (NSString *)contactOrProfileNameForAddress:(SignalServiceAddress *)address; -- (NSAttributedString *)attributedContactOrProfileNameForAddress:(SignalServiceAddress *)address - primaryFont:(UIFont *)primaryFont - secondaryFont:(UIFont *)secondaryFont; -- (NSAttributedString *)attributedContactOrProfileNameForAddress:(SignalServiceAddress *)address - primaryAttributes:(NSDictionary *)primaryAttributes - secondaryAttributes:(NSDictionary *)secondaryAttributes; +- (NSString *)legacyDisplayNameForAddress:(SignalServiceAddress *)address; +- (NSAttributedString *)attributedLegacyDisplayNameForAddress:(SignalServiceAddress *)address + primaryFont:(UIFont *)primaryFont + secondaryFont:(UIFont *)secondaryFont; +- (NSAttributedString *)attributedLegacyDisplayNameForAddress:(SignalServiceAddress *)address + primaryAttributes:(NSDictionary *)primaryAttributes + secondaryAttributes:(NSDictionary *)secondaryAttributes; - (nullable NSString *)formattedProfileNameForAddress:(SignalServiceAddress *)address; +- (nullable NSString *)contactOrProfileNameForAddress:(SignalServiceAddress *)address; + @end NS_ASSUME_NONNULL_END diff --git a/SignalMessaging/contacts/OWSContactsManager.m b/SignalMessaging/contacts/OWSContactsManager.m index 1a5e17d8cf..d5c1fe4f74 100644 --- a/SignalMessaging/contacts/OWSContactsManager.m +++ b/SignalMessaging/contacts/OWSContactsManager.m @@ -1049,7 +1049,7 @@ NSString *const OWSContactsManagerKeyNextFullIntersectionDate = @"OWSContactsMan #pragma mark - -- (NSString *)contactOrProfileNameForAddress:(SignalServiceAddress *)address +- (NSString *)legacyDisplayNameForAddress:(SignalServiceAddress *)address { OWSAssertDebug(address.isValid); @@ -1072,25 +1072,25 @@ NSString *const OWSContactsManagerKeyNextFullIntersectionDate = @"OWSContactsMan return address.stringForDisplay; } -- (NSAttributedString *)attributedContactOrProfileNameForAddress:(SignalServiceAddress *)address - primaryFont:(UIFont *)primaryFont - secondaryFont:(UIFont *)secondaryFont +- (NSAttributedString *)attributedLegacyDisplayNameForAddress:(SignalServiceAddress *)address + primaryFont:(UIFont *)primaryFont + secondaryFont:(UIFont *)secondaryFont { OWSAssertDebug(primaryFont); OWSAssertDebug(secondaryFont); - return [self attributedContactOrProfileNameForAddress:address - primaryAttributes:@{ - NSFontAttributeName : primaryFont, - } - secondaryAttributes:@{ - NSFontAttributeName : secondaryFont, - }]; + return [self attributedLegacyDisplayNameForAddress:address + primaryAttributes:@{ + NSFontAttributeName : primaryFont, + } + secondaryAttributes:@{ + NSFontAttributeName : secondaryFont, + }]; } -- (NSAttributedString *)attributedContactOrProfileNameForAddress:(SignalServiceAddress *)address - primaryAttributes:(NSDictionary *)primaryAttributes - secondaryAttributes:(NSDictionary *)secondaryAttributes +- (NSAttributedString *)attributedLegacyDisplayNameForAddress:(SignalServiceAddress *)address + primaryAttributes:(NSDictionary *)primaryAttributes + secondaryAttributes:(NSDictionary *)secondaryAttributes { OWSAssertDebug(address.isValid); OWSAssertDebug(primaryAttributes.count > 0); @@ -1122,13 +1122,26 @@ NSString *const OWSContactsManagerKeyNextFullIntersectionDate = @"OWSContactsMan return [[NSAttributedString alloc] initWithString:address.stringForDisplay attributes:primaryAttributes]; } -- (nullable NSString *)formattedProfileNameForAddress:(SignalServiceAddress *)address +- (nullable NSString *)profileNameForAddress:(SignalServiceAddress *)address { + OWSAssertDebug(address.isValid); + __block NSString *_Nullable profileName; [self.databaseStorage readWithBlock:^(SDSAnyReadTransaction *transaction) { profileName = [self.profileManager profileNameForAddress:address transaction:transaction]; }]; + if (profileName.length > 0) { + return profileName; + } + + return nil; +} + +- (nullable NSString *)formattedProfileNameForAddress:(SignalServiceAddress *)address +{ + NSString *_Nullable profileName = [self profileNameForAddress:address]; + if (profileName.length > 0) { return [@"~" stringByAppendingString:profileName]; } @@ -1136,6 +1149,19 @@ NSString *const OWSContactsManagerKeyNextFullIntersectionDate = @"OWSContactsMan return nil; } +- (nullable NSString *)contactOrProfileNameForAddress:(SignalServiceAddress *)address +{ + OWSAssertDebug(address.isValid); + + NSString *_Nullable name = [self cachedLastNameForAddress:address]; + + if (name.length == 0) { + name = [self profileNameForAddress:address]; + } + + return name; +} + NS_ASSUME_NONNULL_END @end diff --git a/SignalMessaging/utils/OWSContactAvatarBuilder.m b/SignalMessaging/utils/OWSContactAvatarBuilder.m index 051366416f..be1be1901f 100644 --- a/SignalMessaging/utils/OWSContactAvatarBuilder.m +++ b/SignalMessaging/utils/OWSContactAvatarBuilder.m @@ -51,11 +51,19 @@ NS_ASSUME_NONNULL_BEGIN colorName:(ConversationColorName)colorName diameter:(NSUInteger)diameter { - // Name for avatar initials. - NSString *_Nullable name = [OWSContactAvatarBuilder.contactsManager displayNameForAddress:address]; - if (name.length == 0) { - name = address.stringForDisplay; + + // Name for avatar initials. + NSString *_Nullable name; + + if (SSKFeatureFlags.profileDisplayChanges) { + name = [OWSContactAvatarBuilder.contactsManager displayNameForAddress:address]; + } else { + name = [OWSContactAvatarBuilder.contactsManager contactOrProfileNameForAddress:address]; + + if (name.length == 0) { + name = address.stringForDisplay; + } } return [self initWithAddress:address name:name colorName:colorName diameter:diameter];