// // Copyright (c) 2018 Open Whisper Systems. All rights reserved. // #import "SignalAccount.h" #import "Contact.h" #import "NSString+SSK.h" #import "SignalRecipient.h" #import "TSStorageManager.h" NS_ASSUME_NONNULL_BEGIN @interface SignalAccount () @property (nonatomic) NSString *recipientId; @end #pragma mark - @implementation SignalAccount - (instancetype)initWithSignalRecipient:(SignalRecipient *)signalRecipient { OWSAssert(signalRecipient); return [self initWithRecipientId:signalRecipient.recipientId]; } - (instancetype)initWithRecipientId:(NSString *)recipientId { if (self = [super init]) { OWSAssert(recipientId.length > 0); _recipientId = recipientId; } return self; } - (nullable SignalRecipient *)signalRecipientWithTransaction:(YapDatabaseReadTransaction *)transaction { OWSAssertIsOnMainThread(); OWSAssert(transaction); OWSAssert(self.recipientId.length > 0); return [SignalRecipient recipientWithTextSecureIdentifier:self.recipientId withTransaction:transaction]; } - (nullable NSString *)uniqueId { return _recipientId; } - (NSString *)displayName { NSString *baseName = (self.contact.fullName.length > 0 ? self.contact.fullName : self.recipientId); OWSAssert(self.hasMultipleAccountContact == (self.multipleAccountLabelText != nil)); NSString *displayName = (self.multipleAccountLabelText ? [NSString stringWithFormat:@"%@ (%@)", baseName, self.multipleAccountLabelText] : baseName); return displayName.filterStringForDisplay; } - (NSString *)multipleAccountLabelText { return _multipleAccountLabelText.filterStringForDisplay; } @end NS_ASSUME_NONNULL_END