improve call message showing contact name

pull/560/head
Ryan Zhao 3 years ago
parent d2b95c6c31
commit 4b38f8b3b6

@ -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)

@ -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)
}
}

@ -3,6 +3,7 @@
//
#import "TSInfoMessage.h"
#import "TSContactThread.h"
#import "SSKEnvironment.h"
#import <YapDatabase/YapDatabaseConnection.h>
#import <SessionUtilitiesKit/SessionUtilitiesKit.h>
@ -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;
}

Loading…
Cancel
Save