From 45f91ead44af25e317858f7768350efc75699bc2 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Fri, 4 May 2018 22:52:43 -0400 Subject: [PATCH] Use actual avatar in ContactViewController // FREEBIE --- .../ContactViewController.swift | 11 ++--------- .../Cells/OWSContactShareView.m | 19 +++++++------------ .../ViewModels/ContactShareViewModel.swift | 13 +++++++++++++ 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/Signal/src/ViewControllers/ContactViewController.swift b/Signal/src/ViewControllers/ContactViewController.swift index 4c8765f0e..b8d51e1a8 100644 --- a/Signal/src/ViewControllers/ContactViewController.swift +++ b/Signal/src/ViewControllers/ContactViewController.swift @@ -249,16 +249,9 @@ class ContactViewController: OWSViewController, CNContactViewControllerDelegate backButton.addSubview(backIconView) backIconView.autoCenterInSuperview() - // TODO: Use actual avatar. - let avatarSize = CGFloat(100) - + let avatarSize: CGFloat = 100 let avatarView = AvatarImageView() - // TODO: What's the best colorSeed value to use? - let avatarBuilder = OWSContactAvatarBuilder(nonSignalName: contactShare.displayName, - colorSeed: contactShare.displayName, - diameter: UInt(avatarSize), - contactsManager: contactsManager) - avatarView.image = avatarBuilder.build() + avatarView.image = contactShare.getAvatarImage(diameter: avatarSize, contactsManager: contactsManager) topView.addSubview(avatarView) avatarView.autoPin(toTopLayoutGuideOf: self, withInset: 20) avatarView.autoHCenterInSuperview() diff --git a/Signal/src/ViewControllers/ConversationView/Cells/OWSContactShareView.m b/Signal/src/ViewControllers/ConversationView/Cells/OWSContactShareView.m index 73f2a9a99..3170054b9 100644 --- a/Signal/src/ViewControllers/ConversationView/Cells/OWSContactShareView.m +++ b/Signal/src/ViewControllers/ConversationView/Cells/OWSContactShareView.m @@ -38,6 +38,11 @@ NS_ASSUME_NONNULL_BEGIN return self; } +- (OWSContactsManager *)contactsManager +{ + return [Environment current].contactsManager; +} + #pragma mark - - (CGFloat)iconHMargin @@ -107,18 +112,8 @@ NS_ASSUME_NONNULL_BEGIN // TODO: Use the contact's avatar if present and downloaded. AvatarImageView *avatarView = [AvatarImageView new]; - // TODO: What's the best colorSeed value to use? - - UIImage *_Nullable avatarImage = self.contactShare.avatarImage; - if (!avatarImage) { - OWSAvatarBuilder *avatarBuilder = - [[OWSContactAvatarBuilder alloc] initWithNonSignalName:self.contactShare.displayName - colorSeed:self.contactShare.displayName - diameter:(NSUInteger)self.iconSize - contactsManager:[Environment current].contactsManager]; - avatarImage = [avatarBuilder build]; - } - avatarView.image = avatarImage; + avatarView.image = + [self.contactShare getAvatarImageWithDiameter:self.iconSize contactsManager:self.contactsManager]; [avatarView autoSetDimension:ALDimensionWidth toSize:self.iconSize]; [avatarView autoSetDimension:ALDimensionHeight toSize:self.iconSize]; diff --git a/SignalMessaging/ViewModels/ContactShareViewModel.swift b/SignalMessaging/ViewModels/ContactShareViewModel.swift index 5cd0235d1..5ba847148 100644 --- a/SignalMessaging/ViewModels/ContactShareViewModel.swift +++ b/SignalMessaging/ViewModels/ContactShareViewModel.swift @@ -23,6 +23,19 @@ public class ContactShareViewModel: NSObject { } } + public func getAvatarImage(diameter: CGFloat, contactsManager: OWSContactsManager) -> UIImage { + if let avatarImage = avatarImage { + return avatarImage + } + + // TODO: What's the best colorSeed value to use? + let avatarBuilder = OWSContactAvatarBuilder(nonSignalName: displayName, + colorSeed: displayName, + diameter: UInt(diameter), + contactsManager: contactsManager) + return avatarBuilder.build() + } + // MARK: Delegated -> dbRecord public var addresses: [OWSContactAddress] {