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: ", ")
+ }
+}