From 06f9affc01019fc32f9b5fdb9e1f5ab68f703740 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 19 Apr 2017 11:04:25 -0400 Subject: [PATCH] Fix segues in conversation settings view. // FREEBIE --- ...SConversationSettingsTableViewController.m | 116 +++++++++--------- 1 file changed, 59 insertions(+), 57 deletions(-) diff --git a/Signal/src/ViewControllers/OWSConversationSettingsTableViewController.m b/Signal/src/ViewControllers/OWSConversationSettingsTableViewController.m index 0f3a86d16..055a552c1 100644 --- a/Signal/src/ViewControllers/OWSConversationSettingsTableViewController.m +++ b/Signal/src/ViewControllers/OWSConversationSettingsTableViewController.m @@ -30,11 +30,6 @@ NS_ASSUME_NONNULL_BEGIN -static NSString *const OWSConversationSettingsTableViewControllerSegueUpdateGroup = - @"OWSConversationSettingsTableViewControllerSegueUpdateGroup"; -static NSString *const OWSConversationSettingsTableViewControllerSegueShowGroupMembers = - @"OWSConversationSettingsTableViewControllerSegueShowGroupMembers"; - @interface OWSConversationSettingsTableViewController () @property (nonatomic) TSThread *thread; @@ -168,31 +163,50 @@ static NSString *const OWSConversationSettingsTableViewControllerSegueShowGroupM firstSection.customHeaderHeight = @(100.f); if (!self.isGroupThread && self.thread.hasSafetyNumbers) { - [firstSection addItem:[OWSTableItem itemWithCustomCellBlock:^{ - UITableViewCell *cell = [UITableViewCell new]; - cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; + [firstSection + addItem:[OWSTableItem itemWithCustomCellBlock:^{ + UITableViewCell *cell = [UITableViewCell new]; + cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; - UIImageView *iconView = [self viewForIconWithName:@"ic_lock_outline"]; - [cell.contentView addSubview:iconView]; - [iconView autoVCenterInSuperview]; - [iconView autoPinEdgeToSuperviewEdge:ALEdgeLeft withInset:16.f]; + UIImageView *iconView = [self viewForIconWithName:@"ic_lock_outline"]; + [cell.contentView addSubview:iconView]; + [iconView autoVCenterInSuperview]; + [iconView autoPinEdgeToSuperviewEdge:ALEdgeLeft withInset:16.f]; - UILabel *rowLabel = [UILabel new]; - rowLabel.text = NSLocalizedString(@"VERIFY_PRIVACY", @"table cell label in conversation settings"); - rowLabel.textColor = [UIColor blackColor]; - rowLabel.font = [UIFont ows_regularFontWithSize:17.f]; - rowLabel.lineBreakMode = NSLineBreakByTruncatingTail; - [cell.contentView addSubview:rowLabel]; - [rowLabel autoVCenterInSuperview]; - [rowLabel autoPinEdge:ALEdgeLeft toEdge:ALEdgeRight ofView:iconView withOffset:16.f]; + UILabel *rowLabel = [UILabel new]; + rowLabel.text = NSLocalizedString(@"VERIFY_PRIVACY", @"table cell label in conversation settings"); + rowLabel.textColor = [UIColor blackColor]; + rowLabel.font = [UIFont ows_regularFontWithSize:17.f]; + rowLabel.lineBreakMode = NSLineBreakByTruncatingTail; + [cell.contentView addSubview:rowLabel]; + [rowLabel autoVCenterInSuperview]; + [rowLabel autoPinEdge:ALEdgeLeft toEdge:ALEdgeRight ofView:iconView withOffset:16.f]; - return cell; - } - actionBlock:^{ - [weakSelf performSegueWithIdentifier: - @"OWSConversationSettingsTableViewControllerSegueSafetyNumbers" - sender:weakSelf]; - }]]; + return cell; + } + actionBlock:^{ + OWSConversationSettingsTableViewController *strongSelf = weakSelf; + if (!strongSelf) { + return; + } + FingerprintViewController *fingerprintViewController = + [[UIStoryboard storyboardWithName:@"Main" bundle:NULL] + instantiateViewControllerWithIdentifier:@"FingerprintViewController"]; + + OWSFingerprintBuilder *fingerprintBuilder = + [[OWSFingerprintBuilder alloc] initWithStorageManager:strongSelf.storageManager + contactsManager:strongSelf.contactsManager]; + + OWSFingerprint *fingerprint = + [fingerprintBuilder fingerprintWithTheirSignalId:strongSelf.thread.contactIdentifier]; + + [fingerprintViewController configureWithThread:strongSelf.thread + fingerprint:fingerprint + contactName:[strongSelf threadName]]; + fingerprintViewController.dismissDelegate = strongSelf; + + [strongSelf presentViewController:fingerprintViewController animated:YES completion:nil]; + }]]; } [firstSection @@ -311,8 +325,15 @@ static NSString *const OWSConversationSettingsTableViewControllerSegueShowGroupM return cell; } actionBlock:^{ - [weakSelf performSegueWithIdentifier:@"OWSConversationSettingsTableViewControllerSegueUpdateGroup" - sender:weakSelf]; + OWSConversationSettingsTableViewController *strongSelf = weakSelf; + if (!strongSelf) { + return; + } + NewGroupViewController *newGroupViewController = + [[UIStoryboard storyboardWithName:@"Main" bundle:NULL] + instantiateViewControllerWithIdentifier:@"NewGroupViewController"]; + [newGroupViewController configWithThread:(TSGroupThread *)strongSelf.thread]; + [strongSelf.navigationController pushViewController:newGroupViewController animated:YES]; }], [OWSTableItem itemWithCustomCellBlock:^{ UITableViewCell *cell = [UITableViewCell new]; @@ -338,9 +359,15 @@ static NSString *const OWSConversationSettingsTableViewControllerSegueShowGroupM return cell; } actionBlock:^{ - [weakSelf - performSegueWithIdentifier:@"OWSConversationSettingsTableViewControllerSegueShowGroupMembers" - sender:weakSelf]; + OWSConversationSettingsTableViewController *strongSelf = weakSelf; + if (!strongSelf) { + return; + } + ShowGroupMembersViewController *showGroupMembersViewController = + [[UIStoryboard storyboardWithName:@"Main" bundle:NULL] + instantiateViewControllerWithIdentifier:@"ShowGroupMembersViewController"]; + [showGroupMembersViewController configWithThread:(TSGroupThread *)strongSelf.thread]; + [strongSelf.navigationController pushViewController:showGroupMembersViewController animated:YES]; }], ]; @@ -836,31 +863,6 @@ static NSString *const OWSConversationSettingsTableViewControllerSegueShowGroupM [self.tableView reloadData]; } -#pragma mark - Navigation - -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(nullable id)sender -{ - if ([segue.destinationViewController isKindOfClass:[FingerprintViewController class]]) { - FingerprintViewController *controller = (FingerprintViewController *)segue.destinationViewController; - - OWSFingerprintBuilder *fingerprintBuilder = - [[OWSFingerprintBuilder alloc] initWithStorageManager:self.storageManager - contactsManager:self.contactsManager]; - - OWSFingerprint *fingerprint = [fingerprintBuilder fingerprintWithTheirSignalId:self.thread.contactIdentifier]; - - [controller configureWithThread:self.thread fingerprint:fingerprint contactName:[self threadName]]; - controller.dismissDelegate = self; - } else if ([segue.identifier isEqualToString:OWSConversationSettingsTableViewControllerSegueUpdateGroup]) { - NewGroupViewController *vc = [segue destinationViewController]; - [vc configWithThread:(TSGroupThread *)self.thread]; - } else if ([segue.identifier isEqualToString:OWSConversationSettingsTableViewControllerSegueShowGroupMembers]) { - ShowGroupMembersViewController *vc = [segue destinationViewController]; - [vc configWithThread:(TSGroupThread *)self.thread]; - } -} - #pragma mark - Logging + (NSString *)tag