From 4b38f8b3b638f654b1a2a31dd6552131dc49df76 Mon Sep 17 00:00:00 2001 From: Ryan Zhao Date: Thu, 2 Dec 2021 11:24:07 +1100 Subject: [PATCH] improve call message showing contact name --- .../Message Cells/CallMessageCell.swift | 4 ++- .../Messages/Signal/TSInfoMessage+Calls.swift | 16 +---------- .../Messages/Signal/TSInfoMessage.m | 28 ++++++++++++++++++- 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/Session/Conversations/Message Cells/CallMessageCell.swift b/Session/Conversations/Message Cells/CallMessageCell.swift index 65e1c28dc..c598920a0 100644 --- a/Session/Conversations/Message Cells/CallMessageCell.swift +++ b/Session/Conversations/Message Cells/CallMessageCell.swift @@ -81,7 +81,9 @@ final class CallMessageCell : MessageCell { } iconImageViewWidthConstraint.constant = (icon != nil) ? CallMessageCell.iconSize : 0 iconImageViewHeightConstraint.constant = (icon != nil) ? CallMessageCell.iconSize : 0 - self.label.text = message.customMessage + Storage.read { transaction in + self.label.text = message.previewText(with: transaction) + } let date = message.dateForUI() let description = DateUtil.formatDate(forDisplay: date) diff --git a/SessionMessagingKit/Messages/Signal/TSInfoMessage+Calls.swift b/SessionMessagingKit/Messages/Signal/TSInfoMessage+Calls.swift index 284fc298c..05cb4184d 100644 --- a/SessionMessagingKit/Messages/Signal/TSInfoMessage+Calls.swift +++ b/SessionMessagingKit/Messages/Signal/TSInfoMessage+Calls.swift @@ -7,20 +7,12 @@ static func callInfoMessage(from caller: String, timestamp: UInt64, in thread: TSThread) -> TSInfoMessage { let callState: TSInfoMessageCallState - let messageBody: String - var contactName: String = "" - if let contactThread = thread as? TSContactThread { - let sessionID = contactThread.contactSessionID() - contactName = Storage.shared.getContact(with: sessionID)?.displayName(for: Contact.Context.regular) ?? "\(sessionID.prefix(4))...\(sessionID.suffix(4))" - } if caller == getUserHexEncodedPublicKey() { callState = .outgoing - messageBody = String(format: NSLocalizedString("call_outgoing", comment: ""), contactName) } else { callState = .incoming - messageBody = String(format: NSLocalizedString("call_incoming", comment: ""), contactName) } - let infoMessage = TSInfoMessage.init(timestamp: timestamp, in: thread, messageType: .call, customMessage: messageBody) + let infoMessage = TSInfoMessage.init(timestamp: timestamp, in: thread, messageType: .call) infoMessage.callState = callState return infoMessage } @@ -29,12 +21,6 @@ func updateCallInfoMessage(_ newCallState: TSInfoMessageCallState, using transaction: YapDatabaseReadWriteTransaction) { guard self.messageType == .call else { return } self.callState = newCallState - var contactName: String = "" - if let contactThread = self.thread(with: transaction) as? TSContactThread { - let sessionID = contactThread.contactSessionID() - contactName = Storage.shared.getContact(with: sessionID)?.displayName(for: Contact.Context.regular) ?? sessionID - } - self.customMessage = String(format: NSLocalizedString("call_missed", comment: ""), contactName) self.save(with: transaction) } } diff --git a/SessionMessagingKit/Messages/Signal/TSInfoMessage.m b/SessionMessagingKit/Messages/Signal/TSInfoMessage.m index 1b43a535a..f6d221ee1 100644 --- a/SessionMessagingKit/Messages/Signal/TSInfoMessage.m +++ b/SessionMessagingKit/Messages/Signal/TSInfoMessage.m @@ -3,6 +3,7 @@ // #import "TSInfoMessage.h" +#import "TSContactThread.h" #import "SSKEnvironment.h" #import #import @@ -104,8 +105,33 @@ NSUInteger TSInfoMessageSchemaVersion = 1; return OWSInteractionType_Info; } +- (NSString *)getCallMessagePreviewTextWithTransaction:(YapDatabaseReadTransaction *)transaction +{ + TSThread *thread = [self threadWithTransaction:transaction]; + if ([thread isKindOfClass: [TSContactThread class]]) { + TSContactThread *contactThread = (TSContactThread *)thread; + NSString *sessionID = contactThread.contactSessionID; + NSString *name = contactThread.name; + if ([name isEqual:sessionID]) { + name = [NSString stringWithFormat:@"%@...%@", [sessionID substringToIndex:4], [sessionID substringFromIndex:sessionID.length - 4]]; + } + switch (_callState) { + case TSInfoMessageCallStateIncoming: + return [NSString stringWithFormat:NSLocalizedString(@"call_incoming", @""), name]; + case TSInfoMessageCallStateOutgoing: + return [NSString stringWithFormat:NSLocalizedString(@"call_outgoing", @""), name]; + case TSInfoMessageCallStateMissed: + return [NSString stringWithFormat:NSLocalizedString(@"call_missed", @""), name]; + default: + break; + } + } + return _customMessage; +} + - (NSString *)previewTextWithTransaction:(YapDatabaseReadTransaction *)transaction { + switch (_messageType) { case TSInfoMessageTypeGroupCreated: return NSLocalizedString(@"GROUP_CREATED", @""); @@ -114,7 +140,7 @@ NSUInteger TSInfoMessageSchemaVersion = 1; case TSInfoMessageTypeGroupUpdated: return _customMessage != nil ? _customMessage : NSLocalizedString(@"GROUP_UPDATED", @""); case TSInfoMessageTypeCall: - return _customMessage; + return [self getCallMessagePreviewTextWithTransaction:transaction]; default: break; }