From 1a3204bf467d990cb00deae686885d24f38918c4 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 7 Jun 2017 12:37:37 -0400 Subject: [PATCH] create interaction in thread when missing call due to changed identity // FREEBIE --- Podfile | 4 ++-- Podfile.lock | 9 +++------ Signal/src/Models/OWSCall.h | 1 + Signal/src/Models/OWSCall.m | 6 ++++++ Signal/src/ViewControllers/DebugUI/DebugUIMessages.m | 4 ++++ Signal/src/call/CallService.swift | 8 ++++++++ Signal/translations/en.lproj/Localizable.strings | 6 ++++++ 7 files changed, 30 insertions(+), 8 deletions(-) diff --git a/Podfile b/Podfile index 55d7dcd08..624665393 100644 --- a/Podfile +++ b/Podfile @@ -5,8 +5,8 @@ target 'Signal' do pod 'SocketRocket', :git => 'https://github.com/facebook/SocketRocket.git' pod 'AxolotlKit', git: 'https://github.com/WhisperSystems/SignalProtocolKit.git' #pod 'AxolotlKit', path: '../SignalProtocolKit' - pod 'SignalServiceKit', git: 'https://github.com/WhisperSystems/SignalServiceKit.git' - #pod 'SignalServiceKit', path: '../SignalServiceKit' + #pod 'SignalServiceKit', git: 'https://github.com/WhisperSystems/SignalServiceKit.git' + pod 'SignalServiceKit', path: '../SignalServiceKit' pod 'OpenSSL' pod 'JSQMessagesViewController', git: 'https://github.com/WhisperSystems/JSQMessagesViewController.git', branch: 'mkirk/position-edit-menu' #pod 'JSQMessagesViewController' path: '../JSQMessagesViewController' diff --git a/Podfile.lock b/Podfile.lock index 5e2655492..deffc00ec 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -114,7 +114,7 @@ DEPENDENCIES: - OpenSSL - PureLayout - Reachability - - SignalServiceKit (from `https://github.com/WhisperSystems/SignalServiceKit.git`) + - SignalServiceKit (from `../SignalServiceKit`) - SocketRocket (from `https://github.com/facebook/SocketRocket.git`) EXTERNAL SOURCES: @@ -124,7 +124,7 @@ EXTERNAL SOURCES: :branch: mkirk/position-edit-menu :git: https://github.com/WhisperSystems/JSQMessagesViewController.git SignalServiceKit: - :git: https://github.com/WhisperSystems/SignalServiceKit.git + :path: "../SignalServiceKit" SocketRocket: :git: https://github.com/facebook/SocketRocket.git @@ -135,9 +135,6 @@ CHECKOUT OPTIONS: JSQMessagesViewController: :commit: 7054e4b13ee5bcd6d524adb6dc9a726e8c466308 :git: https://github.com/WhisperSystems/JSQMessagesViewController.git - SignalServiceKit: - :commit: 435f13f2ffc4631aeb282fc02a8a3305f6e8645b - :git: https://github.com/WhisperSystems/SignalServiceKit.git SocketRocket: :commit: 877ac7438be3ad0b45ef5ca3969574e4b97112bf :git: https://github.com/facebook/SocketRocket.git @@ -164,6 +161,6 @@ SPEC CHECKSUMS: UnionFind: c33be5adb12983981d6e827ea94fc7f9e370f52d YapDatabase: cd911121580ff16675f65ad742a9eb0ab4d9e266 -PODFILE CHECKSUM: 48e80d7f1e049bbf544a689fdfdf33e8196c640a +PODFILE CHECKSUM: 6f9ef5d9fa17469569e127a9f5719dafa11631b9 COCOAPODS: 1.2.1 diff --git a/Signal/src/Models/OWSCall.h b/Signal/src/Models/OWSCall.h index 419ae4f5d..1cc02012a 100644 --- a/Signal/src/Models/OWSCall.h +++ b/Signal/src/Models/OWSCall.h @@ -18,6 +18,7 @@ typedef enum : NSUInteger { // kGroupUpdateJoin has been deprecated. kGroupUpdateLeft = 7, kGroupUpdate = 8, + kCallMissedBecauseOfChangedIdentity = 9, } CallStatus; @interface OWSCall : NSObject diff --git a/Signal/src/Models/OWSCall.m b/Signal/src/Models/OWSCall.m index f945bae12..f05a9264a 100644 --- a/Signal/src/Models/OWSCall.m +++ b/Signal/src/Models/OWSCall.m @@ -54,6 +54,9 @@ NS_ASSUME_NONNULL_BEGIN case RPRecentCallTypeIncomingIncomplete: status = kCallIncomingIncomplete; break; + case RPRecentCallTypeMissedBecauseOfChangedIdentity: + status = kCallMissedBecauseOfChangedIdentity; + break; default: status = kCallIncoming; break; @@ -77,6 +80,9 @@ NS_ASSUME_NONNULL_BEGIN case kCallOutgoingIncomplete: detailString = [NSString stringWithFormat:NSLocalizedString(@"MSGVIEW_YOU_TRIED_TO_CALL", nil), name]; break; + case kCallMissedBecauseOfChangedIdentity: + detailString = [NSString + stringWithFormat:NSLocalizedString(@"MSGVIEW_MISSED_CALL_BECAUSE_OF_CHANGED_IDENTITY", nil), name]; default: detailString = @""; break; diff --git a/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m b/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m index 4f9eadf9b..d4b485976 100644 --- a/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m +++ b/Signal/src/ViewControllers/DebugUI/DebugUIMessages.m @@ -576,6 +576,10 @@ NS_ASSUME_NONNULL_BEGIN withCallNumber:@"+19174054215" callType:RPRecentCallTypeMissed inThread:contactThread]]; + [result addObject:[[TSCall alloc] initWithTimestamp:[NSDate ows_millisecondTimeStamp] + withCallNumber:@"+19174054215" + callType:RPRecentCallTypeMissedBecauseOfChangedIdentity + inThread:contactThread]]; [result addObject:[[TSCall alloc] initWithTimestamp:[NSDate ows_millisecondTimeStamp] withCallNumber:@"+19174054215" callType:RPRecentCallTypeOutgoingIncomplete diff --git a/Signal/src/call/CallService.swift b/Signal/src/call/CallService.swift index 9cb75a79c..488bd4439 100644 --- a/Signal/src/call/CallService.swift +++ b/Signal/src/call/CallService.swift @@ -486,6 +486,14 @@ protocol CallServiceObserver: class { self.notificationsAdapter.presentMissedCallBecauseOfNoLongerVerifiedIdentity(call: newCall, callerName: callerName) } + let callRecord = TSCall(timestamp: NSDate.ows_millisecondTimeStamp(), + withCallNumber: thread.contactIdentifier(), + callType: RPRecentCallTypeMissedBecauseOfChangedIdentity, + in: thread) + assert(newCall.callRecord == nil) + newCall.callRecord = callRecord + callRecord.save() + return } diff --git a/Signal/translations/en.lproj/Localizable.strings b/Signal/translations/en.lproj/Localizable.strings index 08c90eec1..0bcce26a9 100644 --- a/Signal/translations/en.lproj/Localizable.strings +++ b/Signal/translations/en.lproj/Localizable.strings @@ -616,6 +616,9 @@ /* No comment provided by engineer. */ "INCOMING_INCOMPLETE_CALL" = "Incomplete incoming call from"; +/* info message text shown in conversation view */ +"INFO_MESSAGE_MISSED_CALL_DUE_TO_CHANGED_IDENITY" = "Missed call because their safety number has changed."; + /* Message for the alert indicating that an audio file is invalid. */ "INVALID_AUDIO_FILE_ALERT_ERROR_MESSAGE" = "Invalid audio file."; @@ -756,6 +759,9 @@ Alert title when camera is not authorized */ "MISSING_CAMERA_PERMISSION_TITLE" = "Signal needs to access your camera."; +/* No comment provided by engineer. */ +"MSGVIEW_MISSED_CALL_BECAUSE_OF_CHANGED_IDENTITY" = "Missed call because their safety number has changed."; + /* notification title. Embeds {{caller's name or phone number}} */ "MSGVIEW_MISSED_CALL_WITH_NAME" = "Missed call from %@.";