Improve handling of contact display names.

pull/1/head
Matthew Chen 8 years ago
parent 7e35a7e7d7
commit 708b44e3c5

@ -4,13 +4,11 @@
NS_ASSUME_NONNULL_BEGIN
@class OWSContactShare;
@class OWSContact;
@interface OWSContactShareView : UIView
- (instancetype)initWithContactShare:(OWSContactShare *)contactShare
contactShareName:(NSString *)contactShareName
isIncoming:(BOOL)isIncoming;
- (instancetype)initWithContactShare:(OWSContact *)contactShare isIncoming:(BOOL)isIncoming;
- (void)createContents;

@ -7,14 +7,13 @@
#import "UIColor+OWS.h"
#import "UIFont+OWS.h"
#import "UIView+OWS.h"
#import <SignalServiceKit/OWSContactShare.h>
#import <SignalServiceKit/OWSContact.h>
NS_ASSUME_NONNULL_BEGIN
@interface OWSContactShareView ()
@property (nonatomic) OWSContactShare *contactShare;
@property (nonatomic) NSString *contactShareName;
@property (nonatomic) OWSContact *contactShare;
@property (nonatomic) BOOL isIncoming;
@end
@ -23,15 +22,12 @@ NS_ASSUME_NONNULL_BEGIN
@implementation OWSContactShareView
- (instancetype)initWithContactShare:(OWSContactShare *)contactShare
contactShareName:(NSString *)contactShareName
isIncoming:(BOOL)isIncoming
- (instancetype)initWithContactShare:(OWSContact *)contactShare isIncoming:(BOOL)isIncoming
{
self = [super init];
if (self) {
_contactShare = contactShare;
_contactShareName = contactShareName;
_isIncoming = isIncoming;
}
@ -123,7 +119,7 @@ NS_ASSUME_NONNULL_BEGIN
[imageView autoCenterInSuperview];
UILabel *topLabel = [UILabel new];
topLabel.text = self.contactShareName;
topLabel.text = self.contactShare.displayName;
topLabel.textColor = [UIColor blackColor];
topLabel.lineBreakMode = NSLineBreakByTruncatingTail;
topLabel.font = [UIFont ows_dynamicTypeBodyFont];

@ -796,11 +796,9 @@ NS_ASSUME_NONNULL_BEGIN
- (UIView *)loadViewForShareContact
{
OWSAssert(self.viewItem.contactShare);
OWSAssert(self.viewItem.contactShareName.length > 0);
OWSContactShareView *contactShareView =
[[OWSContactShareView alloc] initWithContactShare:self.viewItem.contactShare
contactShareName:self.viewItem.contactShareName
isIncoming:self.isIncoming];
[contactShareView createContents];
// [self addAttachmentUploadViewIfNecessary:attachmentView];

@ -27,7 +27,7 @@ NSString *NSStringForOWSMessageCellType(OWSMessageCellType cellType);
@class ConversationViewCell;
@class DisplayableText;
@class OWSAudioMessageView;
@class OWSContactShare;
@class OWSContact;
@class OWSQuotedReplyModel;
@class TSAttachmentPointer;
@class TSAttachmentStream;
@ -103,8 +103,7 @@ NSString *NSStringForOWSMessageCellType(OWSMessageCellType cellType);
// if a load has previously failed.
@property (nonatomic) BOOL didCellMediaFailToLoad;
- (nullable OWSContactShare *)contactShare;
- (nullable NSString *)contactShareName;
- (nullable OWSContact *)contactShare;
#pragma mark - UIMenuController

@ -11,7 +11,7 @@
#import "Signal-Swift.h"
#import <AssetsLibrary/AssetsLibrary.h>
#import <SignalMessaging/NSString+OWS.h>
#import <SignalServiceKit/OWSContactShare.h>
#import <SignalServiceKit/OWSContact.h>
#import <SignalServiceKit/TSInteraction.h>
NS_ASSUME_NONNULL_BEGIN
@ -65,8 +65,7 @@ NSString *NSStringForOWSMessageCellType(OWSMessageCellType cellType)
@property (nonatomic, readonly, nullable) NSString *quotedRecipientId;
@property (nonatomic, nullable) TSAttachmentStream *attachmentStream;
@property (nonatomic, nullable) TSAttachmentPointer *attachmentPointer;
@property (nonatomic, nullable) OWSContactShare *contactShare;
@property (nonatomic, nullable) NSString *contactShareName;
@property (nonatomic, nullable) OWSContact *contactShare;
@property (nonatomic) CGSize mediaSize;
@end
@ -407,14 +406,9 @@ NSString *NSStringForOWSMessageCellType(OWSMessageCellType cellType)
TSMessage *message = (TSMessage *)self.interaction;
if (message.contactShare) {
// TODO: Format contact share name.
NSString *contactShareName = @"Alice";
if (contactShareName.length > 0) {
self.contactShare = message.contactShare;
self.contactShareName = contactShareName;
self.messageCellType = OWSMessageCellType_ShareContact;
return;
}
self.contactShare = message.contactShare;
self.messageCellType = OWSMessageCellType_ShareContact;
return;
}
TSAttachment *_Nullable attachment = [self firstAttachmentIfAnyOfMessage:message transaction:transaction];
if (attachment) {

@ -2942,6 +2942,7 @@ typedef OWSContact * (^OWSContactBlock)(void);
contactBlock:^{
OWSContact *contact = [OWSContact new];
contact.givenName = @"Alice";
contact.displayName = @"Alice";
OWSContactPhoneNumber *phoneNumber = [OWSContactPhoneNumber new];
phoneNumber.phoneType = OWSContactPhoneType_Home;
phoneNumber.phoneNumber = @"+13213214321";
@ -2955,6 +2956,7 @@ typedef OWSContact * (^OWSContactBlock)(void);
contactBlock:^{
OWSContact *contact = [OWSContact new];
contact.givenName = @"Bob";
contact.displayName = @"Bob";
OWSContactEmail *email = [OWSContactEmail new];
email.emailType = OWSContactEmailType_Home;
email.email = @"a@b.com";

@ -186,6 +186,28 @@ NS_ASSUME_NONNULL_BEGIN
return hasValue;
}
- (nullable NSString *)displayName
{
[self ensureDisplayName];
return _displayName;
}
- (void)ensureDisplayName
{
if (_displayName.length < 1) {
CNContact *_Nullable systemContact = [OWSContacts systemContactForContact:self];
_displayName = [CNContactFormatter stringFromContact:systemContact style:CNContactFormatterStyleFullName];
}
if (_displayName.length < 1) {
// Fall back to using the organization name.
_displayName = self.organizationName;
}
if (_displayName.length < 1) {
DDLogError(@"%@ could not derive a valid display name.", self.logTag);
}
}
@end
#pragma mark -
@ -318,6 +340,8 @@ NS_ASSUME_NONNULL_BEGIN
// @property (readonly, copy, nullable, NS_NONATOMIC_IOSONLY) NSData *imageData;
// @property (readonly, copy, nullable, NS_NONATOMIC_IOSONLY) NSData *thumbnailImageData;
[contact ensureDisplayName];
return contact;
}
@ -635,6 +659,8 @@ NS_ASSUME_NONNULL_BEGIN
// TODO: Avatar
[contact ensureDisplayName];
return contact;
}

Loading…
Cancel
Save