// // Copyright (c) 2018 Open Whisper Systems. All rights reserved. // #import NS_ASSUME_NONNULL_BEGIN /** * An adapter for the system contacts */ @class CNContact; @class PhoneNumber; @class SignalRecipient; @class UIImage; @class YapDatabaseReadTransaction; @interface Contact : MTLModel @property (nullable, readonly, nonatomic) NSString *firstName; @property (nullable, readonly, nonatomic) NSString *lastName; @property (readonly, nonatomic) NSString *fullName; @property (readonly, nonatomic) NSString *comparableNameFirstLast; @property (readonly, nonatomic) NSString *comparableNameLastFirst; @property (readonly, nonatomic) NSArray *parsedPhoneNumbers; @property (readonly, nonatomic) NSArray *userTextPhoneNumbers; @property (readonly, nonatomic) NSArray *emails; @property (readonly, nonatomic) NSString *uniqueId; @property (nonatomic, readonly) BOOL isSignalContact; @property (nonatomic, readonly) NSString *cnContactId; - (NSArray *)signalRecipientsWithTransaction:(YapDatabaseReadTransaction *)transaction; // TODO: Remove this method. - (NSArray *)textSecureIdentifiers; #if TARGET_OS_IOS - (instancetype)initWithSystemContact:(CNContact *)cnContact NS_AVAILABLE_IOS(9_0); + (nullable Contact *)contactWithVCardData:(NSData *)data; + (nullable CNContact *)cnContactWithVCardData:(NSData *)data; - (NSString *)nameForPhoneNumber:(NSString *)recipientId; #endif // TARGET_OS_IOS + (NSComparator)comparatorSortingNamesByFirstThenLast:(BOOL)firstNameOrdering; + (NSString *)formattedFullNameWithCNContact:(CNContact *)cnContact NS_SWIFT_NAME(formattedFullName(cnContact:)); + (nullable NSString *)localizedStringForCNLabel:(nullable NSString *)cnLabel; + (CNContact *)mergeCNContact:(CNContact *)oldCNContact newCNContact:(CNContact *)newCNContact NS_SWIFT_NAME(merge(cnContact:newCNContact:)); + (nullable NSData *)avatarDataForCNContact:(nullable CNContact *)cnContact; @end NS_ASSUME_NONNULL_END