Fix crash when viewing changed safety numbers

Instantiate fingerprintVC programmatically since MVC was not built from
the storyboard and thus doesn't have it's storyboard-defined segues.

// FREEBIE
This commit is contained in:
Michael Kirk 2017-03-31 13:44:43 -04:00
parent e828001544
commit 9eb746a7a0
2 changed files with 21 additions and 40 deletions

View file

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11762" systemVersion="15G1217" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="tuk-0x-yCb">
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12118" systemVersion="16E195" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="tuk-0x-yCb">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12086"/>
<capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
@ -120,9 +120,6 @@
</navigationItem>
<connections>
<outlet property="inputToolbar" destination="BdJ-vY-dHA" id="EfK-zI-nSM"/>
<segue destination="4oU-Rv-yJi" kind="push" identifier="OWSMessagesViewControllerSeguePushConversationSettings" id="vOd-aS-6Wx"/>
<segue destination="urv-62-RsD" kind="modal" identifier="fingerprintSegue" id="tfr-ZV-qWs"/>
<segue destination="Tyf-mN-gzf" kind="modal" identifier="initiateCallSegue" modalTransitionStyle="crossDissolve" id="I6y-pT-nEd"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="yXZ-iE-5va" userLabel="First Responder" sceneMemberID="firstResponder"/>
@ -1461,8 +1458,6 @@
<simulatedScreenMetrics key="destination" type="retina4_7.fullscreen"/>
</simulatedMetricsContainer>
<inferredMetricsTieBreakers>
<segue reference="wgA-Oo-kKq"/>
<segue reference="D0d-4f-lcI"/>
<segue reference="G2B-Fr-Ezs"/>
<segue reference="E8S-Yc-X7E"/>
</inferredMetricsTieBreakers>
</document>

View file

@ -76,9 +76,6 @@
static NSTimeInterval const kTSMessageSentDateShowTimeInterval = 5 * 60;
static NSString *const OWSMessagesViewControllerSegueShowFingerprint = @"fingerprintSegue";
static NSString *const OWSMessagesViewControllerSeguePushConversationSettings = @"OWSMessagesViewControllerSeguePushConversationSettings";
NSString *const OWSMessagesViewControllerDidAppearNotification = @"OWSMessagesViewControllerDidAppear";
typedef enum : NSUInteger {
@ -819,7 +816,20 @@ typedef enum : NSUInteger {
OWSFingerprint *fingerprint =
[builder fingerprintWithTheirSignalId:theirSignalId theirIdentityKey:theirIdentityKey];
[self markAllMessagesAsRead];
[self performSegueWithIdentifier:OWSMessagesViewControllerSegueShowFingerprint sender:fingerprint];
NSString *contactName = [self.contactsManager displayNameForPhoneIdentifier:theirSignalId];
UIViewController *viewController =
[[UIStoryboard main] instantiateViewControllerWithIdentifier:@"FingerprintViewController"];
if (![viewController isKindOfClass:[FingerprintViewController class]]) {
OWSAssert(NO);
DDLogError(@"%@ expecting fingerprint view controller, but got: %@", self.tag, viewController);
return;
}
FingerprintViewController *fingerprintViewController = (FingerprintViewController *)viewController;
[fingerprintViewController configureWithThread:self.thread fingerprint:fingerprint contactName:contactName];
[self presentViewController:fingerprintViewController animated:YES completion:nil];
}
#pragma mark - Calls
@ -1328,9 +1338,9 @@ typedef enum : NSUInteger {
DDLogDebug(@"%@ Ignoring request to show conversation settings, since user left group", self.tag);
return;
}
OWSConversationSettingsTableViewController *settingsVC = [[UIStoryboard storyboardWithName:AppDelegateStoryboardMain bundle:NULL]
instantiateViewControllerWithIdentifier:@"OWSConversationSettingsTableViewController"];
OWSConversationSettingsTableViewController *settingsVC =
[[UIStoryboard main] instantiateViewControllerWithIdentifier:@"OWSConversationSettingsTableViewController"];
[settingsVC configureWithThread:self.thread];
[self.navigationController pushViewController:settingsVC animated:YES];
}
@ -1846,30 +1856,6 @@ typedef enum : NSUInteger {
[self presentViewController:actionSheetController animated:YES completion:nil];
}
#pragma mark - Navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:OWSMessagesViewControllerSegueShowFingerprint]) {
if (![segue.destinationViewController isKindOfClass:[FingerprintViewController class]]) {
DDLogError(@"%@ Expected Fingerprint VC but got: %@", self.tag, segue.destinationViewController);
return;
}
FingerprintViewController *vc = (FingerprintViewController *)segue.destinationViewController;
if (![sender isKindOfClass:[OWSFingerprint class]]) {
DDLogError(@"%@ Attempting to segue to fingerprint VC without a valid fingerprint: %@", self.tag, sender);
return;
}
OWSFingerprint *fingerprint = (OWSFingerprint *)sender;
NSString *contactName = [self.contactsManager displayNameForPhoneIdentifier:fingerprint.theirStableId];
[vc configureWithThread:self.thread fingerprint:fingerprint contactName:contactName];
} else {
DDLogDebug(@"%@ Received segue: %@", self.tag, segue.identifier);
}
}
#pragma mark - UIImagePickerController
/*