Clean up conversation settings screen
This commit is contained in:
parent
067eaf0c3b
commit
c4bd4cea6a
|
@ -238,6 +238,7 @@
|
||||||
B83F2B88240CB75A000A54AB /* UIImage+Scaling.swift in Sources */ = {isa = PBXBuildFile; fileRef = B83F2B87240CB75A000A54AB /* UIImage+Scaling.swift */; };
|
B83F2B88240CB75A000A54AB /* UIImage+Scaling.swift in Sources */ = {isa = PBXBuildFile; fileRef = B83F2B87240CB75A000A54AB /* UIImage+Scaling.swift */; };
|
||||||
B84664F5235022F30083A1CD /* MentionUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B84664F4235022F30083A1CD /* MentionUtilities.swift */; };
|
B84664F5235022F30083A1CD /* MentionUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = B84664F4235022F30083A1CD /* MentionUtilities.swift */; };
|
||||||
B849789625D4A2F500D0D0B3 /* LinkPreviewViewV2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B849789525D4A2F500D0D0B3 /* LinkPreviewViewV2.swift */; };
|
B849789625D4A2F500D0D0B3 /* LinkPreviewViewV2.swift in Sources */ = {isa = PBXBuildFile; fileRef = B849789525D4A2F500D0D0B3 /* LinkPreviewViewV2.swift */; };
|
||||||
|
B84A89BC25DE328A0040017D /* ProfilePictureVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B84A89BB25DE328A0040017D /* ProfilePictureVC.swift */; };
|
||||||
B85357BF23A1AE0800AAF6CD /* SeedReminderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B85357BE23A1AE0800AAF6CD /* SeedReminderView.swift */; };
|
B85357BF23A1AE0800AAF6CD /* SeedReminderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B85357BE23A1AE0800AAF6CD /* SeedReminderView.swift */; };
|
||||||
B85357C323A1BD1200AAF6CD /* SeedVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B85357C223A1BD1200AAF6CD /* SeedVC.swift */; };
|
B85357C323A1BD1200AAF6CD /* SeedVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = B85357C223A1BD1200AAF6CD /* SeedVC.swift */; };
|
||||||
B8544E3323D50E4900299F14 /* SNAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8544E3223D50E4900299F14 /* SNAppearance.swift */; };
|
B8544E3323D50E4900299F14 /* SNAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8544E3223D50E4900299F14 /* SNAppearance.swift */; };
|
||||||
|
@ -1297,6 +1298,7 @@
|
||||||
B84664F4235022F30083A1CD /* MentionUtilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MentionUtilities.swift; sourceTree = "<group>"; };
|
B84664F4235022F30083A1CD /* MentionUtilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MentionUtilities.swift; sourceTree = "<group>"; };
|
||||||
B847570023D568EB00759540 /* SignalServiceKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SignalServiceKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
B847570023D568EB00759540 /* SignalServiceKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SignalServiceKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
B849789525D4A2F500D0D0B3 /* LinkPreviewViewV2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LinkPreviewViewV2.swift; sourceTree = "<group>"; };
|
B849789525D4A2F500D0D0B3 /* LinkPreviewViewV2.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LinkPreviewViewV2.swift; sourceTree = "<group>"; };
|
||||||
|
B84A89BB25DE328A0040017D /* ProfilePictureVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfilePictureVC.swift; sourceTree = "<group>"; };
|
||||||
B85357BE23A1AE0800AAF6CD /* SeedReminderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeedReminderView.swift; sourceTree = "<group>"; };
|
B85357BE23A1AE0800AAF6CD /* SeedReminderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeedReminderView.swift; sourceTree = "<group>"; };
|
||||||
B85357C223A1BD1200AAF6CD /* SeedVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeedVC.swift; sourceTree = "<group>"; };
|
B85357C223A1BD1200AAF6CD /* SeedVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeedVC.swift; sourceTree = "<group>"; };
|
||||||
B8544E3023D16CA500299F14 /* DeviceUtilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceUtilities.swift; sourceTree = "<group>"; };
|
B8544E3023D16CA500299F14 /* DeviceUtilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceUtilities.swift; sourceTree = "<group>"; };
|
||||||
|
@ -2531,6 +2533,7 @@
|
||||||
340FC8A0204DAC8D007AEB0F /* OWSConversationSettingsViewController.h */,
|
340FC8A0204DAC8D007AEB0F /* OWSConversationSettingsViewController.h */,
|
||||||
340FC89A204DAC8D007AEB0F /* OWSConversationSettingsViewController.m */,
|
340FC89A204DAC8D007AEB0F /* OWSConversationSettingsViewController.m */,
|
||||||
340FC899204DAC8D007AEB0F /* OWSConversationSettingsViewDelegate.h */,
|
340FC899204DAC8D007AEB0F /* OWSConversationSettingsViewDelegate.h */,
|
||||||
|
B84A89BB25DE328A0040017D /* ProfilePictureVC.swift */,
|
||||||
);
|
);
|
||||||
path = Settings;
|
path = Settings;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -5029,6 +5032,7 @@
|
||||||
45CD81EF1DC030E7004C9430 /* SyncPushTokensJob.swift in Sources */,
|
45CD81EF1DC030E7004C9430 /* SyncPushTokensJob.swift in Sources */,
|
||||||
B83524A525C3BA4B0089A44F /* InfoMessageCell.swift in Sources */,
|
B83524A525C3BA4B0089A44F /* InfoMessageCell.swift in Sources */,
|
||||||
34129B8621EF877A005457A8 /* LinkPreviewView.swift in Sources */,
|
34129B8621EF877A005457A8 /* LinkPreviewView.swift in Sources */,
|
||||||
|
B84A89BC25DE328A0040017D /* ProfilePictureVC.swift in Sources */,
|
||||||
34386A54207D271D009F5D9C /* NeverClearView.swift in Sources */,
|
34386A54207D271D009F5D9C /* NeverClearView.swift in Sources */,
|
||||||
451166C01FD86B98000739BA /* AccountManager.swift in Sources */,
|
451166C01FD86B98000739BA /* AccountManager.swift in Sources */,
|
||||||
C374EEF425DB31D40073A857 /* VoiceMessageRecordingView.swift in Sources */,
|
C374EEF425DB31D40073A857 /* VoiceMessageRecordingView.swift in Sources */,
|
||||||
|
|
|
@ -29,29 +29,19 @@
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
//#define SHOW_COLOR_PICKER
|
CGFloat kIconViewLength = 24;
|
||||||
|
|
||||||
const CGFloat kIconViewLength = 24;
|
@interface OWSConversationSettingsViewController () <OWSSheetViewControllerDelegate>
|
||||||
|
|
||||||
@interface OWSConversationSettingsViewController () <
|
|
||||||
#ifdef SHOW_COLOR_PICKER
|
|
||||||
ColorPickerDelegate,
|
|
||||||
#endif
|
|
||||||
OWSSheetViewControllerDelegate>
|
|
||||||
|
|
||||||
@property (nonatomic) TSThread *thread;
|
@property (nonatomic) TSThread *thread;
|
||||||
@property (nonatomic) YapDatabaseConnection *uiDatabaseConnection;
|
@property (nonatomic) YapDatabaseConnection *uiDatabaseConnection;
|
||||||
@property (nonatomic, readonly) YapDatabaseConnection *editingDatabaseConnection;
|
@property (nonatomic, readonly) YapDatabaseConnection *editingDatabaseConnection;
|
||||||
|
|
||||||
@property (nonatomic) NSArray<NSNumber *> *disappearingMessagesDurations;
|
@property (nonatomic) NSArray<NSNumber *> *disappearingMessagesDurations;
|
||||||
@property (nonatomic) OWSDisappearingMessagesConfiguration *disappearingMessagesConfiguration;
|
@property (nonatomic) OWSDisappearingMessagesConfiguration *disappearingMessagesConfiguration;
|
||||||
@property (nullable, nonatomic) MediaGallery *mediaGallery;
|
@property (nullable, nonatomic) MediaGallery *mediaGallery;
|
||||||
@property (nonatomic, readonly) ContactsViewHelper *contactsViewHelper;
|
@property (nonatomic, readonly) ContactsViewHelper *contactsViewHelper;
|
||||||
@property (nonatomic, readonly) UIImageView *avatarView;
|
@property (nonatomic, readonly) UIImageView *avatarView;
|
||||||
@property (nonatomic, readonly) UILabel *disappearingMessagesDurationLabel;
|
@property (nonatomic, readonly) UILabel *disappearingMessagesDurationLabel;
|
||||||
#ifdef SHOW_COLOR_PICKER
|
|
||||||
@property (nonatomic) OWSColorPicker *colorPicker;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@ -236,11 +226,6 @@ const CGFloat kIconViewLength = 24;
|
||||||
[[OWSDisappearingMessagesConfiguration alloc] initDefaultWithThreadId:self.thread.uniqueId];
|
[[OWSDisappearingMessagesConfiguration alloc] initDefaultWithThreadId:self.thread.uniqueId];
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SHOW_COLOR_PICKER
|
|
||||||
self.colorPicker = [[OWSColorPicker alloc] initWithThread:self.thread];
|
|
||||||
self.colorPicker.delegate = self;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
[self updateTableContents];
|
[self updateTableContents];
|
||||||
|
|
||||||
NSString *title;
|
NSString *title;
|
||||||
|
@ -253,18 +238,6 @@ const CGFloat kIconViewLength = 24;
|
||||||
self.tableView.backgroundColor = UIColor.clearColor;
|
self.tableView.backgroundColor = UIColor.clearColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)viewDidAppear:(BOOL)animated
|
|
||||||
{
|
|
||||||
[super viewDidAppear:animated];
|
|
||||||
|
|
||||||
if (self.showVerificationOnAppear) {
|
|
||||||
self.showVerificationOnAppear = NO;
|
|
||||||
if (self.isGroupThread) {
|
|
||||||
[self showGroupMembersView];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)updateTableContents
|
- (void)updateTableContents
|
||||||
{
|
{
|
||||||
OWSTableContents *contents = [OWSTableContents new];
|
OWSTableContents *contents = [OWSTableContents new];
|
||||||
|
@ -279,13 +252,7 @@ const CGFloat kIconViewLength = 24;
|
||||||
OWSTableSection *mainSection = [OWSTableSection new];
|
OWSTableSection *mainSection = [OWSTableSection new];
|
||||||
|
|
||||||
mainSection.customHeaderView = [self mainSectionHeader];
|
mainSection.customHeaderView = [self mainSectionHeader];
|
||||||
|
mainSection.customHeaderHeight = @(UITableViewAutomaticDimension);
|
||||||
if (self.isGroupThread) {
|
|
||||||
mainSection.customHeaderHeight = @(147.f);
|
|
||||||
} else {
|
|
||||||
BOOL isSmallScreen = (UIScreen.mainScreen.bounds.size.height - 568) < 1;
|
|
||||||
mainSection.customHeaderHeight = isSmallScreen ? @(201.f) : @(208.f);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ([self.thread isKindOfClass:TSContactThread.class]) {
|
if ([self.thread isKindOfClass:TSContactThread.class]) {
|
||||||
[mainSection addItem:[OWSTableItem
|
[mainSection addItem:[OWSTableItem
|
||||||
|
@ -444,29 +411,6 @@ const CGFloat kIconViewLength = 24;
|
||||||
actionBlock:nil]];
|
actionBlock:nil]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef SHOW_COLOR_PICKER
|
|
||||||
[mainSection
|
|
||||||
addItem:[OWSTableItem
|
|
||||||
itemWithCustomCellBlock:^{
|
|
||||||
OWSConversationSettingsViewController *strongSelf = weakSelf;
|
|
||||||
OWSCAssertDebug(strongSelf);
|
|
||||||
|
|
||||||
ConversationColorName colorName = strongSelf.thread.conversationColorName;
|
|
||||||
UIColor *currentColor =
|
|
||||||
[OWSConversationColor conversationColorOrDefaultForColorName:colorName].themeColor;
|
|
||||||
NSString *title = NSLocalizedString(@"CONVERSATION_SETTINGS_CONVERSATION_COLOR",
|
|
||||||
@"Label for table cell which leads to picking a new conversation color");
|
|
||||||
return [strongSelf
|
|
||||||
cellWithName:title
|
|
||||||
iconName:@"ic_color_palette"
|
|
||||||
disclosureIconColor:currentColor
|
|
||||||
accessibilityIdentifier:ACCESSIBILITY_IDENTIFIER_WITH_NAME(
|
|
||||||
OWSConversationSettingsViewController, @"conversation_color")];
|
|
||||||
}
|
|
||||||
actionBlock:^{
|
|
||||||
[weakSelf showColorPicker];
|
|
||||||
}]];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
[contents addSection:mainSection];
|
[contents addSection:mainSection];
|
||||||
|
|
||||||
|
@ -631,9 +575,6 @@ const CGFloat kIconViewLength = 24;
|
||||||
// Block Conversation section.
|
// Block Conversation section.
|
||||||
|
|
||||||
if (!isNoteToSelf && [self.thread isKindOfClass:TSContactThread.class]) {
|
if (!isNoteToSelf && [self.thread isKindOfClass:TSContactThread.class]) {
|
||||||
mainSection.footerTitle = NSLocalizedString(
|
|
||||||
@"BLOCK_USER_BEHAVIOR_EXPLANATION", @"An explanation of the consequences of blocking another user.");
|
|
||||||
|
|
||||||
[mainSection addItem:[OWSTableItem
|
[mainSection addItem:[OWSTableItem
|
||||||
itemWithCustomCellBlock:^{
|
itemWithCustomCellBlock:^{
|
||||||
OWSConversationSettingsViewController *strongSelf = weakSelf;
|
OWSConversationSettingsViewController *strongSelf = weakSelf;
|
||||||
|
@ -721,48 +662,18 @@ const CGFloat kIconViewLength = 24;
|
||||||
return cell;
|
return cell;
|
||||||
}
|
}
|
||||||
|
|
||||||
static CGRect oldframe;
|
- (void)showProfilePicture:(UITapGestureRecognizer *)tapGesture
|
||||||
|
|
||||||
-(void)showProfilePicture:(UITapGestureRecognizer *)tapGesture
|
|
||||||
{
|
{
|
||||||
LKProfilePictureView *profilePictureView = (LKProfilePictureView *)tapGesture.view;
|
LKProfilePictureView *profilePictureView = (LKProfilePictureView *)tapGesture.view;
|
||||||
UIImage *image = [profilePictureView getProfilePicture];
|
UIImage *image = [profilePictureView getProfilePicture];
|
||||||
if (image == nil) { return; }
|
if (image == nil) { return; }
|
||||||
|
NSString *title = (self.threadName != nil && self.threadName.length > 0) ? self.threadName : @"Anonymous";
|
||||||
UIWindow *window = [UIApplication sharedApplication].keyWindow;
|
SNProfilePictureVC *profilePictureVC = [[SNProfilePictureVC alloc] initWithImage:image title:title];
|
||||||
UIView *backgroundView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
|
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:profilePictureVC];
|
||||||
oldframe = [profilePictureView convertRect:profilePictureView.bounds toView:window];
|
navController.modalPresentationStyle = UIModalPresentationFullScreen;
|
||||||
backgroundView.backgroundColor = [UIColor blackColor];
|
[self presentViewController:navController animated:YES completion:nil];
|
||||||
backgroundView.alpha = 0;
|
|
||||||
UIImageView *imageView = [[UIImageView alloc] initWithFrame:oldframe];
|
|
||||||
imageView.image = image;
|
|
||||||
imageView.tag = 1;
|
|
||||||
imageView.layer.cornerRadius = [UIScreen mainScreen].bounds.size.width / 2;
|
|
||||||
imageView.layer.masksToBounds = true;
|
|
||||||
[backgroundView addSubview:imageView];
|
|
||||||
[window addSubview:backgroundView];
|
|
||||||
|
|
||||||
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hideImage:)];
|
|
||||||
[backgroundView addGestureRecognizer: tap];
|
|
||||||
|
|
||||||
[UIView animateWithDuration:0.25 animations:^{
|
|
||||||
imageView.frame = CGRectMake(0,([UIScreen mainScreen].bounds.size.height - oldframe.size.height * [UIScreen mainScreen].bounds.size.width / oldframe.size.width) / 2, [UIScreen mainScreen].bounds.size.width, oldframe.size.height * [UIScreen mainScreen].bounds.size.width / oldframe.size.width);
|
|
||||||
backgroundView.alpha = 1;
|
|
||||||
} completion:nil];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)hideImage:(UITapGestureRecognizer *)tap{
|
|
||||||
UIView *backgroundView = tap.view;
|
|
||||||
UIImageView *imageView = (UIImageView *)[tap.view viewWithTag:1];
|
|
||||||
[UIView animateWithDuration:0.25 animations:^{
|
|
||||||
imageView.frame = oldframe;
|
|
||||||
backgroundView.alpha = 0;
|
|
||||||
} completion:^(BOOL finished) {
|
|
||||||
[backgroundView removeFromSuperview];
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
- (UIView *)mainSectionHeader
|
- (UIView *)mainSectionHeader
|
||||||
{
|
{
|
||||||
UITapGestureRecognizer *profilePictureTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showProfilePicture:)];
|
UITapGestureRecognizer *profilePictureTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showProfilePicture:)];
|
||||||
|
@ -866,22 +777,6 @@ static CGRect oldframe;
|
||||||
|
|
||||||
#pragma mark - Actions
|
#pragma mark - Actions
|
||||||
|
|
||||||
- (void)showShareProfileAlert
|
|
||||||
{
|
|
||||||
[self.profileManager presentAddThreadToProfileWhitelist:self.thread
|
|
||||||
fromViewController:self
|
|
||||||
success:^{
|
|
||||||
[self updateTableContents];
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)showGroupMembersView
|
|
||||||
{
|
|
||||||
TSGroupThread *thread = (TSGroupThread *)self.thread;
|
|
||||||
LKGroupMembersVC *groupMembersVC = [[LKGroupMembersVC alloc] initWithThread:thread];
|
|
||||||
[self.navigationController pushViewController:groupMembersVC animated:YES];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)editGroup
|
- (void)editGroup
|
||||||
{
|
{
|
||||||
LKEditClosedGroupVC *editClosedGroupVC = [[LKEditClosedGroupVC alloc] initWithThreadID:self.thread.uniqueId];
|
LKEditClosedGroupVC *editClosedGroupVC = [[LKEditClosedGroupVC alloc] initWithThreadID:self.thread.uniqueId];
|
||||||
|
@ -1200,44 +1095,6 @@ static CGRect oldframe;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark - ColorPickerDelegate
|
|
||||||
|
|
||||||
#ifdef SHOW_COLOR_PICKER
|
|
||||||
|
|
||||||
- (void)showColorPicker
|
|
||||||
{
|
|
||||||
OWSSheetViewController *sheetViewController = self.colorPicker.sheetViewController;
|
|
||||||
sheetViewController.delegate = self;
|
|
||||||
|
|
||||||
[self presentViewController:sheetViewController
|
|
||||||
animated:YES
|
|
||||||
completion:^() {
|
|
||||||
OWSLogInfo(@"presented sheet view");
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)colorPicker:(OWSColorPicker *)colorPicker
|
|
||||||
didPickConversationColor:(OWSConversationColor *_Nonnull)conversationColor
|
|
||||||
{
|
|
||||||
OWSLogDebug(@"picked color: %@", conversationColor.name);
|
|
||||||
[LKStorage writeSyncWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) {
|
|
||||||
[self.thread updateConversationColorName:conversationColor.name transaction:transaction];
|
|
||||||
}];
|
|
||||||
|
|
||||||
[self.contactsManager.avatarCache removeAllImages];
|
|
||||||
[self updateTableContents];
|
|
||||||
[self.conversationSettingsViewDelegate conversationColorWasUpdated];
|
|
||||||
|
|
||||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
|
||||||
ConversationConfigurationSyncOperation *operation =
|
|
||||||
[[ConversationConfigurationSyncOperation alloc] initWithThread:self.thread];
|
|
||||||
OWSAssertDebug(operation.isReady);
|
|
||||||
[operation start];
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#pragma mark - OWSSheetViewController
|
#pragma mark - OWSSheetViewController
|
||||||
|
|
||||||
- (void)sheetViewControllerRequestedDismiss:(OWSSheetViewController *)sheetViewController
|
- (void)sheetViewControllerRequestedDismiss:(OWSSheetViewController *)sheetViewController
|
||||||
|
|
|
@ -9,7 +9,6 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@protocol OWSConversationSettingsViewDelegate <NSObject>
|
@protocol OWSConversationSettingsViewDelegate <NSObject>
|
||||||
|
|
||||||
- (void)conversationColorWasUpdated;
|
|
||||||
- (void)groupWasUpdated:(TSGroupModel *)groupModel;
|
- (void)groupWasUpdated:(TSGroupModel *)groupModel;
|
||||||
- (void)conversationSettingsDidRequestConversationSearch:(OWSConversationSettingsViewController *)conversationSettingsViewController;
|
- (void)conversationSettingsDidRequestConversationSearch:(OWSConversationSettingsViewController *)conversationSettingsViewController;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
|
||||||
|
@objc(SNProfilePictureVC)
|
||||||
|
final class ProfilePictureVC : BaseVC {
|
||||||
|
private let image: UIImage
|
||||||
|
private let snTitle: String
|
||||||
|
|
||||||
|
@objc init(image: UIImage, title: String) {
|
||||||
|
self.image = image
|
||||||
|
self.snTitle = title
|
||||||
|
super.init(nibName: nil, bundle: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
override init(nibName: String?, bundle: Bundle?) {
|
||||||
|
preconditionFailure("Use init(image:) instead.")
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
preconditionFailure("Use init(coder:) instead.")
|
||||||
|
}
|
||||||
|
|
||||||
|
override func viewDidLoad() {
|
||||||
|
view.backgroundColor = .clear
|
||||||
|
setUpGradientBackground()
|
||||||
|
setUpNavBarStyle()
|
||||||
|
setNavBarTitle(snTitle)
|
||||||
|
// Close button
|
||||||
|
let closeButton = UIBarButtonItem(image: #imageLiteral(resourceName: "X"), style: .plain, target: self, action: #selector(close))
|
||||||
|
closeButton.tintColor = Colors.text
|
||||||
|
navigationItem.leftBarButtonItem = closeButton
|
||||||
|
// Image view
|
||||||
|
let imageView = UIImageView(image: image)
|
||||||
|
let size = UIScreen.main.bounds.width - 2 * Values.largeSpacing
|
||||||
|
imageView.set(.width, to: size)
|
||||||
|
imageView.set(.height, to: size)
|
||||||
|
imageView.layer.cornerRadius = size / 2
|
||||||
|
imageView.layer.masksToBounds = true
|
||||||
|
view.addSubview(imageView)
|
||||||
|
imageView.center(in: view)
|
||||||
|
// Gesture recognizer
|
||||||
|
let swipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(close))
|
||||||
|
swipeGestureRecognizer.direction = .down
|
||||||
|
view.addGestureRecognizer(swipeGestureRecognizer)
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc private func close() {
|
||||||
|
presentingViewController?.dismiss(animated: true, completion: nil)
|
||||||
|
}
|
||||||
|
}
|
|
@ -722,7 +722,6 @@ NSString *const kOWSTableCellIdentifier = @"kOWSTableCellIdentifier";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (section.customHeaderHeight) {
|
if (section.customHeaderHeight) {
|
||||||
OWSAssertDebug([section.customHeaderHeight floatValue] > 0);
|
|
||||||
return [section.customHeaderHeight floatValue];
|
return [section.customHeaderHeight floatValue];
|
||||||
} else if (section.headerTitle.length > 0) {
|
} else if (section.headerTitle.length > 0) {
|
||||||
return UITableViewAutomaticDimension;
|
return UITableViewAutomaticDimension;
|
||||||
|
|
Loading…
Reference in New Issue