From ccd2d30f6132176837b0a1742ecc60efc69525f6 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Fri, 31 Jan 2020 09:42:36 +1100 Subject: [PATCH] Refactor --- Signal/Signal-Info.plist | 2 +- .../Loki/Components/ConversationCell.swift | 4 +- .../Components/ConversationTitleView.swift | 4 +- .../Loki/Components/FriendRequestView.swift | 4 +- .../Components/SessionRestorationView.swift | 2 +- .../src/Loki/Utilities/MentionUtilities.swift | 4 +- .../View Controllers/GroupMembersVC.swift | 4 +- .../View Controllers/NewClosedGroupVC.swift | 4 +- .../Cells/OWSQuotedMessageView.m | 4 +- .../MediaPageViewController.swift | 4 +- .../OWSConversationSettingsViewController.m | 2 +- .../src/Devices/OWSContactsOutputStream.m | 2 +- SignalServiceKit/src/Loki/API/LokiAPI.swift | 4 +- .../Public Chat/LokiPublicChatPoller.swift | 2 +- .../Loki/Utilities/DisplayNameUtilities.swift | 38 +++++++++++-------- 15 files changed, 46 insertions(+), 38 deletions(-) diff --git a/Signal/Signal-Info.plist b/Signal/Signal-Info.plist index 4a8f35485..daba681ed 100644 --- a/Signal/Signal-Info.plist +++ b/Signal/Signal-Info.plist @@ -5,7 +5,7 @@ BuildDetails CarthageVersion - 0.33.0 + 0.34.0 OSXVersion 10.15.2 WebRTCCommit diff --git a/Signal/src/Loki/Components/ConversationCell.swift b/Signal/src/Loki/Components/ConversationCell.swift index 34928ef87..e4f49b1f9 100644 --- a/Signal/src/Loki/Components/ConversationCell.swift +++ b/Signal/src/Loki/Components/ConversationCell.swift @@ -182,7 +182,7 @@ final class ConversationCell : UITableViewCell { private func getDisplayName() -> String { if threadViewModel.isGroupThread { if threadViewModel.name.isEmpty { - return DisplayNameUtilities.getDisplayName(for: threadViewModel.threadRecord as! TSGroupThread) + return GroupDisplayNameUtilities.getDefaultDisplayName(for: threadViewModel.threadRecord as! TSGroupThread) } else { return threadViewModel.name } @@ -191,7 +191,7 @@ final class ConversationCell : UITableViewCell { return NSLocalizedString("Note to Self", comment: "") } else { let hexEncodedPublicKey = threadViewModel.contactIdentifier! - return DisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) ?? hexEncodedPublicKey + return UserDisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) ?? hexEncodedPublicKey } } } diff --git a/Signal/src/Loki/Components/ConversationTitleView.swift b/Signal/src/Loki/Components/ConversationTitleView.swift index 7df0bbe84..411b19b79 100644 --- a/Signal/src/Loki/Components/ConversationTitleView.swift +++ b/Signal/src/Loki/Components/ConversationTitleView.swift @@ -73,7 +73,7 @@ final class ConversationTitleView : UIView { let title: String if thread.isGroupThread() { if thread.name().isEmpty { - title = DisplayNameUtilities.getDisplayName(for: thread as! TSGroupThread) + title = GroupDisplayNameUtilities.getDefaultDisplayName(for: thread as! TSGroupThread) } else { title = thread.name() } @@ -82,7 +82,7 @@ final class ConversationTitleView : UIView { title = NSLocalizedString("Note to Self", comment: "") } else { let hexEncodedPublicKey = thread.contactIdentifier()! - title = DisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) ?? hexEncodedPublicKey + title = UserDisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) ?? hexEncodedPublicKey } } titleLabel.text = title diff --git a/Signal/src/Loki/Components/FriendRequestView.swift b/Signal/src/Loki/Components/FriendRequestView.swift index 905bd6a4c..2bf9ea596 100644 --- a/Signal/src/Loki/Components/FriendRequestView.swift +++ b/Signal/src/Loki/Components/FriendRequestView.swift @@ -122,7 +122,7 @@ final class FriendRequestView : UIView { } }() let contactID = message.authorId - let displayName = DisplayNameUtilities.getPrivateChatDisplayName(for: contactID) ?? contactID + let displayName = UserDisplayNameUtilities.getPrivateChatDisplayName(for: contactID) ?? contactID label.text = String(format: format, displayName) case .outgoing: guard let message = message as? TSOutgoingMessage else { preconditionFailure() } @@ -139,7 +139,7 @@ final class FriendRequestView : UIView { }() if let format = format { let contactID = message.thread.contactIdentifier()! - let displayName = DisplayNameUtilities.getPrivateChatDisplayName(for: contactID) ?? contactID + let displayName = UserDisplayNameUtilities.getPrivateChatDisplayName(for: contactID) ?? contactID label.text = String(format: format, displayName) } label.isHidden = (format == nil) diff --git a/Signal/src/Loki/Components/SessionRestorationView.swift b/Signal/src/Loki/Components/SessionRestorationView.swift index bac9d4737..12d79842a 100644 --- a/Signal/src/Loki/Components/SessionRestorationView.swift +++ b/Signal/src/Loki/Components/SessionRestorationView.swift @@ -72,7 +72,7 @@ final class SessionRestorationView : UIView { mainStackView.pin(to: self, withInset: Values.mediumSpacing) // Update explanation label if possible if let contactID = thread.contactIdentifier() { - let displayName = DisplayNameUtilities.getPrivateChatDisplayName(for: contactID) ?? contactID + let displayName = UserDisplayNameUtilities.getPrivateChatDisplayName(for: contactID) ?? contactID explanationLabel.text = String(format: NSLocalizedString("Would you like to restore your session with %@?", comment: ""), displayName) } } diff --git a/Signal/src/Loki/Utilities/MentionUtilities.swift b/Signal/src/Loki/Utilities/MentionUtilities.swift index 96c8b7a5b..886e06af6 100644 --- a/Signal/src/Loki/Utilities/MentionUtilities.swift +++ b/Signal/src/Loki/Utilities/MentionUtilities.swift @@ -30,9 +30,9 @@ public final class MentionUtilities : NSObject { displayName = OWSProfileManager.shared().localProfileName() } else { if let publicChat = publicChat { - displayName = DisplayNameUtilities.getPublicChatDisplayName(for: hexEncodedPublicKey, in: publicChat.channel, on: publicChat.server) + displayName = UserDisplayNameUtilities.getPublicChatDisplayName(for: hexEncodedPublicKey, in: publicChat.channel, on: publicChat.server) } else { - displayName = DisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) + displayName = UserDisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) } } if let displayName = displayName { diff --git a/Signal/src/Loki/View Controllers/GroupMembersVC.swift b/Signal/src/Loki/View Controllers/GroupMembersVC.swift index abd24df01..9fd5269d8 100644 --- a/Signal/src/Loki/View Controllers/GroupMembersVC.swift +++ b/Signal/src/Loki/View Controllers/GroupMembersVC.swift @@ -5,7 +5,7 @@ final class GroupMembersVC : UIViewController, UITableViewDataSource { private lazy var members: [String] = { func getDisplayName(for hexEncodedPublicKey: String) -> String { - return DisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) ?? "Unknown Contact" + return UserDisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) ?? "Unknown Contact" } return GroupUtilities.getClosedGroupMembers(thread).sorted { getDisplayName(for: $0) < getDisplayName(for: $1) } }() @@ -139,7 +139,7 @@ private extension GroupMembersVC { private func update() { profilePictureView.hexEncodedPublicKey = hexEncodedPublicKey profilePictureView.update() - displayNameLabel.text = DisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) ?? "Unknown Contact" + displayNameLabel.text = UserDisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) ?? "Unknown Contact" } } } diff --git a/Signal/src/Loki/View Controllers/NewClosedGroupVC.swift b/Signal/src/Loki/View Controllers/NewClosedGroupVC.swift index 64ffa261b..3aa8e7e64 100644 --- a/Signal/src/Loki/View Controllers/NewClosedGroupVC.swift +++ b/Signal/src/Loki/View Controllers/NewClosedGroupVC.swift @@ -10,7 +10,7 @@ final class NewClosedGroupVC : UIViewController, UITableViewDataSource, UITableV result.append(hexEncodedPublicKey) } func getDisplayName(for hexEncodedPublicKey: String) -> String { - return DisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) ?? "Unknown Contact" + return UserDisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) ?? "Unknown Contact" } let userHexEncodedPublicKey = getUserHexEncodedPublicKey() var linkedDeviceHexEncodedPublicKeys: Set = [ userHexEncodedPublicKey ] @@ -261,7 +261,7 @@ private extension NewClosedGroupVC { private func update() { profilePictureView.hexEncodedPublicKey = hexEncodedPublicKey profilePictureView.update() - displayNameLabel.text = DisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) ?? "Unknown Contact" + displayNameLabel.text = UserDisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) ?? "Unknown Contact" tickImageView.image = hasTick ? #imageLiteral(resourceName: "CircleCheck") : #imageLiteral(resourceName: "Circle") } } diff --git a/Signal/src/ViewControllers/ConversationView/Cells/OWSQuotedMessageView.m b/Signal/src/ViewControllers/ConversationView/Cells/OWSQuotedMessageView.m index 42f260004..5dbbded66 100644 --- a/Signal/src/ViewControllers/ConversationView/Cells/OWSQuotedMessageView.m +++ b/Signal/src/ViewControllers/ConversationView/Cells/OWSQuotedMessageView.m @@ -554,9 +554,9 @@ const CGFloat kRemotelySourcedContentRowSpacing = 4; [OWSPrimaryStorage.sharedManager.dbReadConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) { LKPublicChat *publicChat = [LKDatabaseUtilities getPublicChatForThreadID:self.quotedMessage.threadId transaction:transaction]; if (publicChat != nil) { - quotedAuthor = [LKDisplayNameUtilities getPublicChatDisplayNameFor:self.quotedMessage.authorId in:publicChat.channel on:publicChat.server using:transaction]; + quotedAuthor = [LKUserDisplayNameUtilities getPublicChatDisplayNameFor:self.quotedMessage.authorId in:publicChat.channel on:publicChat.server using:transaction]; } else { - quotedAuthor = [LKDisplayNameUtilities getPrivateChatDisplayNameFor:self.quotedMessage.authorId]; + quotedAuthor = [LKUserDisplayNameUtilities getPrivateChatDisplayNameFor:self.quotedMessage.authorId]; } }]; } diff --git a/Signal/src/ViewControllers/MediaPageViewController.swift b/Signal/src/ViewControllers/MediaPageViewController.swift index 351060cdf..8c1a91f4a 100644 --- a/Signal/src/ViewControllers/MediaPageViewController.swift +++ b/Signal/src/ViewControllers/MediaPageViewController.swift @@ -684,12 +684,12 @@ class MediaPageViewController: UIPageViewController, UIPageViewControllerDataSou publicChat = LokiDatabaseUtilities.getPublicChat(for: incomingMessage.thread.uniqueId!, in: transaction) } if let publicChat = publicChat { - return DisplayNameUtilities.getPublicChatDisplayName(for: hexEncodedPublicKey, in: publicChat.channel, on: publicChat.server) ?? hexEncodedPublicKey + return UserDisplayNameUtilities.getPublicChatDisplayName(for: hexEncodedPublicKey, in: publicChat.channel, on: publicChat.server) ?? hexEncodedPublicKey } else { return hexEncodedPublicKey } } else { - return DisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) ?? hexEncodedPublicKey + return UserDisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) ?? hexEncodedPublicKey } case is TSOutgoingMessage: return NSLocalizedString("MEDIA_GALLERY_SENDER_NAME_YOU", comment: "Short sender label for media sent by you") diff --git a/Signal/src/ViewControllers/ThreadSettings/OWSConversationSettingsViewController.m b/Signal/src/ViewControllers/ThreadSettings/OWSConversationSettingsViewController.m index 9eda00d3d..8f3480efb 100644 --- a/Signal/src/ViewControllers/ThreadSettings/OWSConversationSettingsViewController.m +++ b/Signal/src/ViewControllers/ThreadSettings/OWSConversationSettingsViewController.m @@ -530,7 +530,7 @@ const CGFloat kIconViewLength = 24; [topRow autoPinEdgesToSuperviewMarginsExcludingEdge:ALEdgeBottom]; UILabel *subtitleLabel = [UILabel new]; - subtitleLabel.text = [NSString stringWithFormat:NSLocalizedString(@"When enabled, messages between you and %@ will disappear after they have been seen.", ""), [LKDisplayNameUtilities getPrivateChatDisplayNameFor:self.thread.contactIdentifier]]; + subtitleLabel.text = [NSString stringWithFormat:NSLocalizedString(@"When enabled, messages between you and %@ will disappear after they have been seen.", ""), [LKUserDisplayNameUtilities getPrivateChatDisplayNameFor:self.thread.contactIdentifier]]; subtitleLabel.textColor = LKColors.text; subtitleLabel.font = [UIFont systemFontOfSize:LKValues.smallFontSize]; subtitleLabel.numberOfLines = 0; diff --git a/SignalServiceKit/src/Devices/OWSContactsOutputStream.m b/SignalServiceKit/src/Devices/OWSContactsOutputStream.m index c4211a873..82889da4f 100644 --- a/SignalServiceKit/src/Devices/OWSContactsOutputStream.m +++ b/SignalServiceKit/src/Devices/OWSContactsOutputStream.m @@ -32,7 +32,7 @@ disappearingMessagesConfiguration:(nullable OWSDisappearingMessagesConfiguration SSKProtoContactDetailsBuilder *contactBuilder = [SSKProtoContactDetails builderWithNumber:signalAccount.recipientId]; - [contactBuilder setName:[LKDisplayNameUtilities getPrivateChatDisplayNameFor:signalAccount.recipientId] ?: signalAccount.recipientId]; + [contactBuilder setName:[LKUserDisplayNameUtilities getPrivateChatDisplayNameFor:signalAccount.recipientId] ?: signalAccount.recipientId]; [contactBuilder setColor:conversationColorName]; if (recipientIdentity != nil) { diff --git a/SignalServiceKit/src/Loki/API/LokiAPI.swift b/SignalServiceKit/src/Loki/API/LokiAPI.swift index 24d059124..1a98fdc76 100644 --- a/SignalServiceKit/src/Loki/API/LokiAPI.swift +++ b/SignalServiceKit/src/Loki/API/LokiAPI.swift @@ -333,9 +333,9 @@ public final class LokiAPI : NSObject { candidates = cache.flatMap { hexEncodedPublicKey in let uncheckedDisplayName: String? if let publicChat = publicChat { - uncheckedDisplayName = DisplayNameUtilities.getPublicChatDisplayName(for: hexEncodedPublicKey, in: publicChat.channel, on: publicChat.server) + uncheckedDisplayName = UserDisplayNameUtilities.getPublicChatDisplayName(for: hexEncodedPublicKey, in: publicChat.channel, on: publicChat.server) } else { - uncheckedDisplayName = DisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) + uncheckedDisplayName = UserDisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) } guard let displayName = uncheckedDisplayName else { return nil } guard !displayName.hasPrefix("Anonymous") else { return nil } diff --git a/SignalServiceKit/src/Loki/API/Public Chat/LokiPublicChatPoller.swift b/SignalServiceKit/src/Loki/API/Public Chat/LokiPublicChatPoller.swift index f5316774d..c2054c4e7 100644 --- a/SignalServiceKit/src/Loki/API/Public Chat/LokiPublicChatPoller.swift +++ b/SignalServiceKit/src/Loki/API/Public Chat/LokiPublicChatPoller.swift @@ -86,7 +86,7 @@ public final class LokiPublicChatPoller : NSObject { } var senderDisplayName = "" if let masterHexEncodedPublicKey = masterHexEncodedPublicKey { - senderDisplayName = DisplayNameUtilities.getPublicChatDisplayName(for: senderHexEncodedPublicKey, in: publicChat.channel, on: publicChat.server) ?? generateDisplayName(from: NSLocalizedString("Anonymous", comment: "")) + senderDisplayName = UserDisplayNameUtilities.getPublicChatDisplayName(for: senderHexEncodedPublicKey, in: publicChat.channel, on: publicChat.server) ?? generateDisplayName(from: NSLocalizedString("Anonymous", comment: "")) } else { senderDisplayName = generateDisplayName(from: message.displayName) } diff --git a/SignalServiceKit/src/Loki/Utilities/DisplayNameUtilities.swift b/SignalServiceKit/src/Loki/Utilities/DisplayNameUtilities.swift index 4ab122f3b..50ecd878e 100644 --- a/SignalServiceKit/src/Loki/Utilities/DisplayNameUtilities.swift +++ b/SignalServiceKit/src/Loki/Utilities/DisplayNameUtilities.swift @@ -1,8 +1,8 @@ -// TODO: Rename some of these functions to make the distinctions between them clearer. +// MARK: - User Display Name Utilities -@objc(LKDisplayNameUtilities) -public final class DisplayNameUtilities : NSObject { +@objc(LKUserDisplayNameUtilities) +public final class UserDisplayNameUtilities : NSObject { override private init() { } @@ -23,18 +23,6 @@ public final class DisplayNameUtilities : NSObject { } } - // MARK: Closed Groups - @objc public static func getDisplayName(for group: TSGroupThread) -> String { - let members = group.groupModel.groupMemberIds - let displayNames = members.map { hexEncodedPublicKey -> String in - guard let displayName = DisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) else { return hexEncodedPublicKey } - let regex = try! NSRegularExpression(pattern: ".* \\(\\.\\.\\.[0-9a-fA-F]*\\)") - guard regex.hasMatch(input: displayName) else { return displayName } - return String(displayName[displayName.startIndex..<(displayName.index(displayName.endIndex, offsetBy: -14))]) - }.sorted() - return displayNames.joined(separator: ", ") - } - // MARK: Open Groups @objc public static func getPublicChatDisplayName(for hexEncodedPublicKey: String, in channel: UInt64, on server: String) -> String? { var result: String? @@ -53,3 +41,23 @@ public final class DisplayNameUtilities : NSObject { } } } + +// MARK: - Group Display Name Utilities + +@objc(LKGroupDisplayNameUtilities) +public final class GroupDisplayNameUtilities : NSObject { + + override private init() { } + + // MARK: Closed Groups + @objc public static func getDefaultDisplayName(for group: TSGroupThread) -> String { + let members = group.groupModel.groupMemberIds + let displayNames = members.map { hexEncodedPublicKey -> String in + guard let displayName = UserDisplayNameUtilities.getPrivateChatDisplayName(for: hexEncodedPublicKey) else { return hexEncodedPublicKey } + let regex = try! NSRegularExpression(pattern: ".* \\(\\.\\.\\.[0-9a-fA-F]*\\)") + guard regex.hasMatch(input: displayName) else { return displayName } + return String(displayName[displayName.startIndex..<(displayName.index(displayName.endIndex, offsetBy: -14))]) + }.sorted() + return displayNames.joined(separator: ", ") + } +}