diff --git a/Signal/src/view controllers/FingerprintViewController.h b/Signal/src/view controllers/FingerprintViewController.h index 4d9b73c9c..6eccab2ec 100644 --- a/Signal/src/view controllers/FingerprintViewController.h +++ b/Signal/src/view controllers/FingerprintViewController.h @@ -10,11 +10,14 @@ NS_ASSUME_NONNULL_BEGIN +@class TSThread; @class OWSFingerprint; @interface FingerprintViewController : UIViewController -- (void)configureWithFingerprint:(OWSFingerprint *)fingerprint contactName:(NSString *)contactName; +- (void)configureWithThread:(TSThread *)thread + fingerprint:(OWSFingerprint *)fingerprint + contactName:(NSString *)contactName; - (void)controller:(OWSQRCodeScanningViewController *)controller didDetectQRCodeWithData:(NSData *)data; @end diff --git a/Signal/src/view controllers/FingerprintViewController.m b/Signal/src/view controllers/FingerprintViewController.m index 66463be50..40fac774b 100644 --- a/Signal/src/view controllers/FingerprintViewController.m +++ b/Signal/src/view controllers/FingerprintViewController.m @@ -8,10 +8,13 @@ #import "FingerprintViewController.h" #import "DJWActionSheet+OWS.h" +#import #import +#import #import #import #import +#import NS_ASSUME_NONNULL_BEGIN @@ -19,8 +22,9 @@ NS_ASSUME_NONNULL_BEGIN @property (strong, nonatomic) TSStorageManager *storageManager; @property (nonatomic) BOOL isPresentingDialog; -@property (strong, atomic) OWSFingerprint *fingerprint; -@property (strong, atomic) NSString *contactName; +@property (strong, nonatomic) TSThread *thread; +@property (strong, nonatomic) OWSFingerprint *fingerprint; +@property (strong, nonatomic) NSString *contactName; @property (strong, nonatomic) OWSQRCodeScanningViewController *qrScanningController; @property (strong, nonatomic) IBOutlet UIView *qrScanningView; @@ -39,8 +43,11 @@ NS_ASSUME_NONNULL_BEGIN @implementation FingerprintViewController -- (void)configureWithFingerprint:(OWSFingerprint *)fingerprint contactName:(NSString *)contactName +- (void)configureWithThread:(TSThread *)thread + fingerprint:(OWSFingerprint *)fingerprint + contactName:(NSString *)contactName { + self.thread = thread; self.fingerprint = fingerprint; self.contactName = contactName; } @@ -168,8 +175,15 @@ NS_ASSUME_NONNULL_BEGIN - (void)resetSession { + DDLogInfo(@"%@ local user reset session", self.tag); [self.storageManager removeIdentityKeyForRecipient:self.fingerprint.theirStableId]; [self.storageManager deleteAllSessionsForContact:self.fingerprint.theirStableId]; + + [[[TSInfoMessage alloc] initWithTimestamp:[NSDate ows_millisecondTimeStamp] + inThread:self.thread + messageType:TSInfoMessageTypeSessionDidEnd] save]; + + [self dismissViewControllerAnimated:YES completion:nil]; } // pragma mark - OWSQRScannerDelegate diff --git a/Signal/src/view controllers/MessagesViewController.m b/Signal/src/view controllers/MessagesViewController.m index ab71775de..de7f646e6 100644 --- a/Signal/src/view controllers/MessagesViewController.m +++ b/Signal/src/view controllers/MessagesViewController.m @@ -1490,7 +1490,7 @@ typedef enum : NSUInteger { if ([sender isKindOfClass:[OWSFingerprint class]]) { OWSFingerprint *fingerprint = (OWSFingerprint *)sender; NSString *contactName = [self.contactsManager nameStringForPhoneIdentifier:fingerprint.theirStableId]; - [vc configureWithFingerprint:fingerprint contactName:contactName]; + [vc configureWithThread:self.thread fingerprint:fingerprint contactName:contactName]; } else { DDLogError(@"%@ Attempting to segueu to fingerprint VC without a valid fingerprint: %@", self.tag, sender); }