mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
Make contact share "bubble/card" reflect share contents.
This commit is contained in:
parent
3cdce13b44
commit
f436fc19c2
9 changed files with 56 additions and 36 deletions
|
@ -48,7 +48,7 @@
|
|||
34330A5C1E787A9800DF2FB9 /* dripicons-v2.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 34330A5B1E787A9800DF2FB9 /* dripicons-v2.ttf */; };
|
||||
34330A5E1E787BD800DF2FB9 /* ElegantIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 34330A5D1E787BD800DF2FB9 /* ElegantIcons.ttf */; };
|
||||
34330AA31E79686200DF2FB9 /* OWSProgressView.m in Sources */ = {isa = PBXBuildFile; fileRef = 34330AA21E79686200DF2FB9 /* OWSProgressView.m */; };
|
||||
34382266209A4E400094FEB7 /* ApproveContactShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34382265209A4E3F0094FEB7 /* ApproveContactShareViewController.swift */; };
|
||||
34382266209A4E400094FEB7 /* ContactShareApprovalViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34382265209A4E3F0094FEB7 /* ContactShareApprovalViewController.swift */; };
|
||||
3438226A209B63500094FEB7 /* EditContactShareNameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34382269209B63500094FEB7 /* EditContactShareNameViewController.swift */; };
|
||||
34386A51207D0C01009F5D9C /* HomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34386A4D207D0C01009F5D9C /* HomeViewController.m */; };
|
||||
34386A52207D0C01009F5D9C /* HomeViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34386A50207D0C01009F5D9C /* HomeViewCell.m */; };
|
||||
|
@ -638,7 +638,7 @@
|
|||
34330A5D1E787BD800DF2FB9 /* ElegantIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = ElegantIcons.ttf; sourceTree = "<group>"; };
|
||||
34330AA11E79686200DF2FB9 /* OWSProgressView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSProgressView.h; sourceTree = "<group>"; };
|
||||
34330AA21E79686200DF2FB9 /* OWSProgressView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSProgressView.m; sourceTree = "<group>"; };
|
||||
34382265209A4E3F0094FEB7 /* ApproveContactShareViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ApproveContactShareViewController.swift; path = SignalMessaging/attachments/ApproveContactShareViewController.swift; sourceTree = SOURCE_ROOT; };
|
||||
34382265209A4E3F0094FEB7 /* ContactShareApprovalViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ContactShareApprovalViewController.swift; path = SignalMessaging/attachments/ContactShareApprovalViewController.swift; sourceTree = SOURCE_ROOT; };
|
||||
34382269209B63500094FEB7 /* EditContactShareNameViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = EditContactShareNameViewController.swift; path = SignalMessaging/attachments/EditContactShareNameViewController.swift; sourceTree = SOURCE_ROOT; };
|
||||
34386A4D207D0C01009F5D9C /* HomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeViewController.m; sourceTree = "<group>"; };
|
||||
34386A4E207D0C01009F5D9C /* HomeViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HomeViewCell.h; sourceTree = "<group>"; };
|
||||
|
@ -1614,9 +1614,9 @@
|
|||
346129DB1FD5C02900532771 /* viewControllers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
34382265209A4E3F0094FEB7 /* ApproveContactShareViewController.swift */,
|
||||
344F2498200FD03200CFB4F4 /* AttachmentApprovalViewController.swift */,
|
||||
348BB253209CD4B80047AEC2 /* ContactFieldView.swift */,
|
||||
34382265209A4E3F0094FEB7 /* ContactShareApprovalViewController.swift */,
|
||||
344F248220069E9B00CFB4F4 /* CountryCodeViewController.h */,
|
||||
344F248320069E9B00CFB4F4 /* CountryCodeViewController.m */,
|
||||
34382269209B63500094FEB7 /* EditContactShareNameViewController.swift */,
|
||||
|
@ -3136,7 +3136,7 @@
|
|||
451F8A3F1FD71455005CB9DA /* OWSTableViewController.m in Sources */,
|
||||
451F8A351FD710DE005CB9DA /* Searcher.swift in Sources */,
|
||||
451F8A481FD715BA005CB9DA /* OWSContactAvatarBuilder.m in Sources */,
|
||||
34382266209A4E400094FEB7 /* ApproveContactShareViewController.swift in Sources */,
|
||||
34382266209A4E400094FEB7 /* ContactShareApprovalViewController.swift in Sources */,
|
||||
4503F1C3204711D300CEE724 /* OWS107LegacySounds.m in Sources */,
|
||||
3438226A209B63500094FEB7 /* EditContactShareNameViewController.swift in Sources */,
|
||||
346129A61FD1F09100532771 /* OWSContactsManager.m in Sources */,
|
||||
|
|
|
@ -188,8 +188,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
[contentView autoPinEdgeToSuperviewEdge:ALEdgeTop withInset:self.vMargin];
|
||||
|
||||
AvatarImageView *avatarView = [AvatarImageView new];
|
||||
avatarView.image =
|
||||
[self.contactShare getAvatarImageWithDiameter:self.iconSize contactsManager:self.contactsManager];
|
||||
avatarView.image = [self.contactShare getAvatarImageWithDiameter:self.iconSize
|
||||
contactsManager:self.contactsManager
|
||||
ignoreContactAndProfile:YES];
|
||||
|
||||
[avatarView autoSetDimension:ALDimensionWidth toSize:self.iconSize];
|
||||
[avatarView autoSetDimension:ALDimensionHeight toSize:self.iconSize];
|
||||
|
|
|
@ -118,7 +118,7 @@ typedef enum : NSUInteger {
|
|||
#pragma mark -
|
||||
|
||||
@interface ConversationViewController () <AttachmentApprovalViewControllerDelegate,
|
||||
ApproveContactShareViewControllerDelegate,
|
||||
ContactShareApprovalViewControllerDelegate,
|
||||
AVAudioPlayerDelegate,
|
||||
CNContactViewControllerDelegate,
|
||||
ContactEditingDelegate,
|
||||
|
@ -3005,7 +3005,7 @@ typedef enum : NSUInteger {
|
|||
|
||||
BOOL didAddToProfileWhitelist = [ThreadUtil addThreadToProfileWhitelistIfEmptyContactThread:self.thread];
|
||||
|
||||
[self.editingDatabaseConnection asyncReadWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
||||
[self.editingDatabaseConnection asyncReadWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||
if (contactShare.avatarImage) {
|
||||
[contactShare.dbRecord saveAvatarImage:contactShare.avatarImage transaction:transaction];
|
||||
}
|
||||
|
@ -5030,10 +5030,10 @@ interactionControllerForAnimationController:(id<UIViewControllerAnimatedTransiti
|
|||
[[ContactShareViewModel alloc] initWithContactShareRecord:contactShareRecord avatarImageData:avatarImageData];
|
||||
|
||||
// TODO: We should probably show this in the same navigation view controller.
|
||||
ApproveContactShareViewController *approveContactShare =
|
||||
[[ApproveContactShareViewController alloc] initWithContactShare:contactShare
|
||||
contactsManager:self.contactsManager
|
||||
delegate:self];
|
||||
ContactShareApprovalViewController *approveContactShare =
|
||||
[[ContactShareApprovalViewController alloc] initWithContactShare:contactShare
|
||||
contactsManager:self.contactsManager
|
||||
delegate:self];
|
||||
OWSAssert(contactsPicker.navigationController);
|
||||
[contactsPicker.navigationController pushViewController:approveContactShare animated:YES];
|
||||
}
|
||||
|
@ -5050,9 +5050,9 @@ interactionControllerForAnimationController:(id<UIViewControllerAnimatedTransiti
|
|||
return YES;
|
||||
}
|
||||
|
||||
#pragma mark - ApproveContactShareViewControllerDelegate
|
||||
#pragma mark - ContactShareApprovalViewControllerDelegate
|
||||
|
||||
- (void)approveContactShare:(ApproveContactShareViewController *)approveContactShare
|
||||
- (void)approveContactShare:(ContactShareApprovalViewController *)approveContactShare
|
||||
didApproveContactShare:(ContactShareViewModel *)contactShare
|
||||
{
|
||||
DDLogInfo(@"%@ in %s", self.logTag, __PRETTY_FUNCTION__);
|
||||
|
@ -5063,7 +5063,7 @@ interactionControllerForAnimationController:(id<UIViewControllerAnimatedTransiti
|
|||
}];
|
||||
}
|
||||
|
||||
- (void)approveContactShare:(ApproveContactShareViewController *)approveContactShare
|
||||
- (void)approveContactShare:(ContactShareApprovalViewController *)approveContactShare
|
||||
didCancelContactShare:(ContactShareViewModel *)contactShare
|
||||
{
|
||||
DDLogInfo(@"%@ in %s", self.logTag, __PRETTY_FUNCTION__);
|
||||
|
|
|
@ -90,6 +90,7 @@ class ContactCell: UITableViewCell {
|
|||
let avatarBuilder = OWSContactAvatarBuilder(nonSignalName: contact.fullName,
|
||||
colorSeed: contactIdForDeterminingBackgroundColor,
|
||||
diameter: ContactCell.kAvatarDiameter,
|
||||
ignoreContactAndProfile: false,
|
||||
contactsManager: contactsManager)
|
||||
|
||||
contactImageView.image = avatarBuilder.buildDefaultImage()
|
||||
|
@ -135,7 +136,7 @@ fileprivate extension CNContact {
|
|||
|
||||
if let attributedName = CNContactFormatter.attributedString(from: self, style: .fullName, defaultAttributes: nil) {
|
||||
let highlightedName = attributedName.mutableCopy() as! NSMutableAttributedString
|
||||
highlightedName.enumerateAttributes(in: NSMakeRange(0, highlightedName.length), options: [], using: { (attrs, range, _) in
|
||||
highlightedName.enumerateAttributes(in: NSRange(location: 0, length: highlightedName.length), options: [], using: { (attrs, range, _) in
|
||||
if let property = attrs[CNContactPropertyAttribute] as? String, property == keyToHighlight {
|
||||
highlightedName.addAttributes(boldAttributes, range: range)
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ public class ContactShareViewModel: NSObject {
|
|||
}
|
||||
}
|
||||
|
||||
public func getAvatarImage(diameter: CGFloat, contactsManager: OWSContactsManager) -> UIImage {
|
||||
public func getAvatarImage(diameter: CGFloat, contactsManager: OWSContactsManager, ignoreContactAndProfile: Bool = false) -> UIImage {
|
||||
if let avatarImage = avatarImage {
|
||||
return avatarImage
|
||||
}
|
||||
|
@ -59,6 +59,7 @@ public class ContactShareViewModel: NSObject {
|
|||
let avatarBuilder = OWSContactAvatarBuilder(nonSignalName: displayName,
|
||||
colorSeed: colorSeed,
|
||||
diameter: UInt(diameter),
|
||||
ignoreContactAndProfile: ignoreContactAndProfile,
|
||||
contactsManager: contactsManager)
|
||||
return avatarBuilder.build()
|
||||
}
|
||||
|
|
|
@ -6,10 +6,10 @@ import Foundation
|
|||
import SignalServiceKit
|
||||
|
||||
@objc
|
||||
public protocol ApproveContactShareViewControllerDelegate: class {
|
||||
func approveContactShare(_ approveContactShare: ApproveContactShareViewController,
|
||||
public protocol ContactShareApprovalViewControllerDelegate: class {
|
||||
func approveContactShare(_ approveContactShare: ContactShareApprovalViewController,
|
||||
didApproveContactShare contactShare: ContactShareViewModel)
|
||||
func approveContactShare(_ approveContactShare: ApproveContactShareViewController,
|
||||
func approveContactShare(_ approveContactShare: ContactShareApprovalViewController,
|
||||
didCancelContactShare contactShare: ContactShareViewModel)
|
||||
}
|
||||
|
||||
|
@ -214,9 +214,9 @@ class ContactShareFieldView: UIStackView {
|
|||
|
||||
// TODO: Rename to ContactShareApprovalViewController
|
||||
@objc
|
||||
public class ApproveContactShareViewController: OWSViewController, EditContactShareNameViewControllerDelegate, ContactShareFieldViewDelegate {
|
||||
public class ContactShareApprovalViewController: OWSViewController, EditContactShareNameViewControllerDelegate, ContactShareFieldViewDelegate {
|
||||
|
||||
weak var delegate: ApproveContactShareViewControllerDelegate?
|
||||
weak var delegate: ContactShareApprovalViewControllerDelegate?
|
||||
|
||||
let contactsManager: OWSContactsManager
|
||||
|
||||
|
@ -234,7 +234,7 @@ public class ApproveContactShareViewController: OWSViewController, EditContactSh
|
|||
}
|
||||
|
||||
@objc
|
||||
required public init(contactShare: ContactShareViewModel, contactsManager: OWSContactsManager, delegate: ApproveContactShareViewControllerDelegate) {
|
||||
required public init(contactShare: ContactShareViewModel, contactsManager: OWSContactsManager, delegate: ContactShareApprovalViewControllerDelegate) {
|
||||
self.contactsManager = contactsManager
|
||||
self.contactShare = contactShare
|
||||
self.delegate = delegate
|
||||
|
@ -463,6 +463,7 @@ public class ApproveContactShareViewController: OWSViewController, EditContactSh
|
|||
}
|
||||
|
||||
let filteredContactShare = self.filteredContactShare()
|
||||
|
||||
assert(filteredContactShare.ows_isValid)
|
||||
|
||||
delegate.approveContactShare(self, didApproveContactShare: filteredContactShare)
|
|
@ -24,7 +24,7 @@ typedef void (^SendMessageBlock)(SendCompletionBlock completion);
|
|||
@interface SharingThreadPickerViewController () <SelectThreadViewControllerDelegate,
|
||||
AttachmentApprovalViewControllerDelegate,
|
||||
MessageApprovalViewControllerDelegate,
|
||||
ApproveContactShareViewControllerDelegate>
|
||||
ContactShareApprovalViewControllerDelegate>
|
||||
|
||||
@property (nonatomic, readonly) OWSContactsManager *contactsManager;
|
||||
@property (nonatomic, readonly) OWSMessageSender *messageSender;
|
||||
|
@ -175,10 +175,10 @@ typedef void (^SendMessageBlock)(SendCompletionBlock completion);
|
|||
[[ContactShareViewModel alloc] initWithContactShareRecord:contactShareRecord
|
||||
avatarImageData:avatarImageData];
|
||||
|
||||
ApproveContactShareViewController *approvalVC =
|
||||
[[ApproveContactShareViewController alloc] initWithContactShare:contactShare
|
||||
contactsManager:self.contactsManager
|
||||
delegate:self];
|
||||
ContactShareApprovalViewController *approvalVC =
|
||||
[[ContactShareApprovalViewController alloc] initWithContactShare:contactShare
|
||||
contactsManager:self.contactsManager
|
||||
delegate:self];
|
||||
[self.navigationController pushViewController:approvalVC animated:YES];
|
||||
return;
|
||||
}
|
||||
|
@ -289,9 +289,9 @@ typedef void (^SendMessageBlock)(SendCompletionBlock completion);
|
|||
[self cancelShareExperience];
|
||||
}
|
||||
|
||||
#pragma mark - ApproveContactShareViewControllerDelegate
|
||||
#pragma mark - ContactShareApprovalViewControllerDelegate
|
||||
|
||||
- (void)approveContactShare:(ApproveContactShareViewController *)approvalViewController
|
||||
- (void)approveContactShare:(ContactShareApprovalViewController *)approvalViewController
|
||||
didApproveContactShare:(ContactShareViewModel *)contactShare
|
||||
{
|
||||
DDLogInfo(@"%@ in %s", self.logTag, __PRETTY_FUNCTION__);
|
||||
|
@ -321,7 +321,7 @@ typedef void (^SendMessageBlock)(SendCompletionBlock completion);
|
|||
fromViewController:approvalViewController];
|
||||
}
|
||||
|
||||
- (void)approveContactShare:(ApproveContactShareViewController *)approvalViewController
|
||||
- (void)approveContactShare:(ContactShareApprovalViewController *)approvalViewController
|
||||
didCancelContactShare:(ContactShareViewModel *)contactShare
|
||||
{
|
||||
DDLogInfo(@"%@ in %s", self.logTag, __PRETTY_FUNCTION__);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
//
|
||||
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import "OWSAvatarBuilder.h"
|
||||
|
@ -24,9 +24,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
- (instancetype)initWithNonSignalName:(NSString *)nonSignalName
|
||||
colorSeed:(NSString *)colorSeed
|
||||
diameter:(NSUInteger)diameter
|
||||
ignoreContactAndProfile:(BOOL)ignoreContactAndProfile
|
||||
contactsManager:(OWSContactsManager *)contactsManager;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
//
|
||||
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
#import "OWSContactAvatarBuilder.h"
|
||||
|
@ -10,6 +10,7 @@
|
|||
#import "UIColor+OWS.h"
|
||||
#import "UIFont+OWS.h"
|
||||
#import <SignalMessaging/SignalMessaging-Swift.h>
|
||||
|
||||
// SHARINGEXTENSION FIXME
|
||||
// intern or reimplement this so that SignalMessaging doesn't depend on JSQ
|
||||
#import <JSQMessagesViewController/JSQMessagesAvatarImageFactory.h>
|
||||
|
@ -22,6 +23,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
@property (nonatomic, readonly) NSString *signalId;
|
||||
@property (nonatomic, readonly) NSString *contactName;
|
||||
@property (nonatomic, readonly) NSUInteger diameter;
|
||||
@property (nonatomic, readonly) BOOL ignoreContactAndProfile;
|
||||
|
||||
@end
|
||||
|
||||
|
@ -32,6 +34,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
- (instancetype)initWithContactId:(NSString *)contactId
|
||||
name:(NSString *)name
|
||||
diameter:(NSUInteger)diameter
|
||||
ignoreContactAndProfile:(BOOL)ignoreContactAndProfile
|
||||
contactsManager:(OWSContactsManager *)contactsManager
|
||||
{
|
||||
self = [super init];
|
||||
|
@ -42,6 +45,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
_signalId = contactId;
|
||||
_contactName = name;
|
||||
_diameter = diameter;
|
||||
_ignoreContactAndProfile = ignoreContactAndProfile;
|
||||
_contactsManager = contactsManager;
|
||||
|
||||
return self;
|
||||
|
@ -59,21 +63,33 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
if (name.length == 0) {
|
||||
name = signalId;
|
||||
}
|
||||
return [self initWithContactId:signalId name:name diameter:diameter contactsManager:contactsManager];
|
||||
return [self initWithContactId:signalId
|
||||
name:name
|
||||
diameter:diameter
|
||||
ignoreContactAndProfile:NO
|
||||
contactsManager:contactsManager];
|
||||
}
|
||||
|
||||
- (instancetype)initWithNonSignalName:(NSString *)nonSignalName
|
||||
colorSeed:(NSString *)colorSeed
|
||||
diameter:(NSUInteger)diameter
|
||||
ignoreContactAndProfile:(BOOL)ignoreContactAndProfile
|
||||
contactsManager:(OWSContactsManager *)contactsManager
|
||||
{
|
||||
return [self initWithContactId:colorSeed name:nonSignalName diameter:diameter contactsManager:contactsManager];
|
||||
return [self initWithContactId:colorSeed
|
||||
name:nonSignalName
|
||||
diameter:diameter
|
||||
ignoreContactAndProfile:ignoreContactAndProfile
|
||||
contactsManager:contactsManager];
|
||||
}
|
||||
|
||||
#pragma mark - Instance methods
|
||||
|
||||
- (nullable UIImage *)buildSavedImage
|
||||
{
|
||||
if (self.ignoreContactAndProfile) {
|
||||
return nil;
|
||||
}
|
||||
return [self.contactsManager imageForPhoneIdentifier:self.signalId];
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue