|
|
@ -1,5 +1,6 @@
|
|
|
|
// Created by Michael Kirk on 9/22/16.
|
|
|
|
//
|
|
|
|
// Copyright © 2016 Open Whisper Systems. All rights reserved.
|
|
|
|
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
#import "OWSContactAvatarBuilder.h"
|
|
|
|
#import "OWSContactAvatarBuilder.h"
|
|
|
|
#import "OWSContactsManager.h"
|
|
|
|
#import "OWSContactsManager.h"
|
|
|
@ -17,6 +18,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
|
@property (nonatomic, readonly) OWSContactsManager *contactsManager;
|
|
|
|
@property (nonatomic, readonly) OWSContactsManager *contactsManager;
|
|
|
|
@property (nonatomic, readonly) NSString *signalId;
|
|
|
|
@property (nonatomic, readonly) NSString *signalId;
|
|
|
|
@property (nonatomic, readonly) NSString *contactName;
|
|
|
|
@property (nonatomic, readonly) NSString *contactName;
|
|
|
|
|
|
|
|
@property (nonatomic, readonly) NSUInteger diameter;
|
|
|
|
|
|
|
|
|
|
|
|
@end
|
|
|
|
@end
|
|
|
|
|
|
|
|
|
|
|
@ -25,23 +27,32 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
|
- (instancetype)initWithContactId:(NSString *)contactId
|
|
|
|
- (instancetype)initWithContactId:(NSString *)contactId
|
|
|
|
name:(NSString *)name
|
|
|
|
name:(NSString *)name
|
|
|
|
contactsManager:(OWSContactsManager *)contactsManager
|
|
|
|
contactsManager:(OWSContactsManager *)contactsManager
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
const CGFloat kDefaultAvatarDiamater = 100;
|
|
|
|
|
|
|
|
return [self initWithContactId:contactId name:name contactsManager:contactsManager diameter:kDefaultAvatarDiamater];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- (instancetype)initWithContactId:(NSString *)contactId
|
|
|
|
|
|
|
|
name:(NSString *)name
|
|
|
|
|
|
|
|
contactsManager:(OWSContactsManager *)contactsManager
|
|
|
|
|
|
|
|
diameter:(NSUInteger)diameter
|
|
|
|
{
|
|
|
|
{
|
|
|
|
self = [super init];
|
|
|
|
self = [super init];
|
|
|
|
if (!self) {
|
|
|
|
if (!self) {
|
|
|
|
return self;
|
|
|
|
return self;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
_signalId = contactId;
|
|
|
|
_signalId = contactId;
|
|
|
|
_contactName = name;
|
|
|
|
_contactName = name;
|
|
|
|
_contactsManager = contactsManager;
|
|
|
|
_contactsManager = contactsManager;
|
|
|
|
|
|
|
|
_diameter = diameter;
|
|
|
|
|
|
|
|
|
|
|
|
return self;
|
|
|
|
return self;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- (instancetype)initWithThread:(TSContactThread *)thread contactsManager:(OWSContactsManager *)contactsManager diameter:(CGFloat)diameter
|
|
|
|
- (instancetype)initWithThread:(TSContactThread *)thread contactsManager:(OWSContactsManager *)contactsManager
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return [self initWithContactId:thread.contactIdentifier name:thread.name contactsManager:contactsManager];
|
|
|
|
return [self initWithContactId:thread.contactIdentifier name:thread.name contactsManager:contactsManager diameter:diameter];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
- (nullable UIImage *)buildSavedImage
|
|
|
|
- (nullable UIImage *)buildSavedImage
|
|
|
@ -51,7 +62,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
|
|
|
|
|
|
|
|
|
- (UIImage *)buildDefaultImage
|
|
|
|
- (UIImage *)buildDefaultImage
|
|
|
|
{
|
|
|
|
{
|
|
|
|
UIImage *cachedAvatar = [self.contactsManager.avatarCache objectForKey:self.signalId];
|
|
|
|
NSString *cacheKey = [NSString stringWithFormat:@"signalId:%@:diamater:%lu", self.signalId, (unsigned long)self.diameter];
|
|
|
|
|
|
|
|
UIImage *cachedAvatar = [self.contactsManager.avatarCache objectForKey:cacheKey];
|
|
|
|
if (cachedAvatar) {
|
|
|
|
if (cachedAvatar) {
|
|
|
|
return cachedAvatar;
|
|
|
|
return cachedAvatar;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -82,12 +94,13 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
|
[initials appendString:@"#"];
|
|
|
|
[initials appendString:@"#"];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CGFloat fontSize = (CGFloat)self.diameter / 2.8;
|
|
|
|
UIColor *backgroundColor = [UIColor backgroundColorForContact:self.signalId];
|
|
|
|
UIColor *backgroundColor = [UIColor backgroundColorForContact:self.signalId];
|
|
|
|
UIImage *image = [[JSQMessagesAvatarImageFactory avatarImageWithUserInitials:initials
|
|
|
|
UIImage *image = [[JSQMessagesAvatarImageFactory avatarImageWithUserInitials:initials
|
|
|
|
backgroundColor:backgroundColor
|
|
|
|
backgroundColor:backgroundColor
|
|
|
|
textColor:[UIColor whiteColor]
|
|
|
|
textColor:[UIColor whiteColor]
|
|
|
|
font:[UIFont ows_boldFontWithSize:36.0]
|
|
|
|
font:[UIFont ows_boldFontWithSize:fontSize]
|
|
|
|
diameter:100] avatarImage];
|
|
|
|
diameter:self.diameter] avatarImage];
|
|
|
|
[self.contactsManager.avatarCache setObject:image forKey:self.signalId];
|
|
|
|
[self.contactsManager.avatarCache setObject:image forKey:self.signalId];
|
|
|
|
return image;
|
|
|
|
return image;
|
|
|
|
}
|
|
|
|
}
|
|
|
|