diff --git a/Signal/src/AppDelegate.m b/Signal/src/AppDelegate.m index 8473cc51c..dfffa95cf 100644 --- a/Signal/src/AppDelegate.m +++ b/Signal/src/AppDelegate.m @@ -162,11 +162,6 @@ static NSTimeInterval launchStartedAt; return AppEnvironment.shared.legacyNotificationActionHandler; } -- (LKFriendRequestExpirationJob *)lokiFriendRequestExpirationJob -{ - return SSKEnvironment.shared.lokiFriendRequestExpirationJob; -} - #pragma mark - - (void)applicationDidEnterBackground:(UIApplication *)application diff --git a/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.h b/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.h index 95726a7aa..4d52718b5 100644 --- a/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.h +++ b/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.h @@ -5,14 +5,12 @@ #import "ConversationViewCell.h" @class OWSMessageBubbleView; -@protocol LKFriendRequestViewDelegate; NS_ASSUME_NONNULL_BEGIN @interface OWSMessageCell : ConversationViewCell @property (nonatomic, readonly) OWSMessageBubbleView *messageBubbleView; -@property (nonatomic, nullable, weak) id friendRequestViewDelegate; + (NSString *)cellReuseIdentifier; diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m index 393f3b74f..2e3b7a141 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m @@ -4736,7 +4736,6 @@ typedef enum : NSUInteger { if ([cell isKindOfClass:[OWSMessageCell class]]) { OWSMessageCell *messageCell = (OWSMessageCell *)cell; messageCell.messageBubbleView.delegate = self; - messageCell.friendRequestViewDelegate = self; } cell.conversationStyle = self.conversationStyle; diff --git a/SignalServiceKit/protobuf/SignalService.proto b/SignalServiceKit/protobuf/SignalService.proto index de4cb009e..b2db53872 100644 --- a/SignalServiceKit/protobuf/SignalService.proto +++ b/SignalServiceKit/protobuf/SignalService.proto @@ -23,7 +23,7 @@ message Envelope { RECEIPT = 5; UNIDENTIFIED_SENDER = 6; CLOSED_GROUP_CIPHERTEXT = 7; // Loki - FRIEND_REQUEST = 101; // Loki: Contains pre keys and a message; uses simple encryption + FALLBACK_MESSAGE = 101; // Loki: Encrypted using the fallback session cipher. Contains a pre key bundle if it's a session request. } // @required @@ -137,9 +137,7 @@ message DataMessage { END_SESSION = 1; EXPIRATION_TIMER_UPDATE = 2; PROFILE_KEY_UPDATE = 4; - SESSION_RESTORE = 64; UNLINK_DEVICE = 128; - SESSION_REQUEST = 256; } message Quote { @@ -247,7 +245,7 @@ message DataMessage { INFO = 1; // groupPublicKey, name, senderKeys, members, admins SENDER_KEY_REQUEST = 2; // groupPublicKey SENDER_KEY = 3; // groupPublicKey, senderKeys - + } message SenderKey { diff --git a/SignalServiceKit/src/Loki/Database/Deprecated/OWSPrimaryStorage+Loki.h b/SignalServiceKit/src/Loki/Database/Deprecated/OWSPrimaryStorage+Loki.h index 55fafb360..8cb00ac97 100644 --- a/SignalServiceKit/src/Loki/Database/Deprecated/OWSPrimaryStorage+Loki.h +++ b/SignalServiceKit/src/Loki/Database/Deprecated/OWSPrimaryStorage+Loki.h @@ -8,21 +8,6 @@ NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, LKFriendRequestStatus) { - /// New conversation; no messages sent or received. - LKFriendRequestStatusNone, - /// This state is used to lock the input early while sending. - LKFriendRequestStatusRequestSending, - /// Friend request sent; awaiting response. - LKFriendRequestStatusRequestSent, - /// Friend request received; awaiting user input. - LKFriendRequestStatusRequestReceived, - /// We're friends with the other user. - LKFriendRequestStatusFriends, - /// A friend request was sent, but it timed out (i.e. the other user didn't accept within the allocated time). - LKFriendRequestStatusRequestExpired -}; - @interface OWSPrimaryStorage (Loki) # pragma mark - Pre Key Record Management diff --git a/SignalServiceKit/src/Loki/Protocol/Session Management/SessionRequestMessage.swift b/SignalServiceKit/src/Loki/Protocol/Session Management/SessionRequestMessage.swift index 3f0d6159f..b612b1608 100644 --- a/SignalServiceKit/src/Loki/Protocol/Session Management/SessionRequestMessage.swift +++ b/SignalServiceKit/src/Loki/Protocol/Session Management/SessionRequestMessage.swift @@ -21,12 +21,6 @@ internal final class SessionRequestMessage : TSOutgoingMessage { try super.init(dictionary: dictionary) } - @objc internal override func dataMessageBuilder() -> Any? { - guard let builder = super.dataMessageBuilder() as? SSKProtoDataMessage.SSKProtoDataMessageBuilder else { return nil } - builder.setFlags(UInt32(SSKProtoDataMessage.SSKProtoDataMessageFlags.sessionRequest.rawValue)) - return builder - } - override func prepareCustomContentBuilder(_ recipient: SignalRecipient) -> Any? { guard let contentBuilder = super.prepareCustomContentBuilder(recipient) as? SSKProtoContent.SSKProtoContentBuilder else { return nil } // Attach a null message diff --git a/SignalServiceKit/src/Messages/Interactions/TSMessage.h b/SignalServiceKit/src/Messages/Interactions/TSMessage.h index 10c9cd946..e4085c094 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSMessage.h +++ b/SignalServiceKit/src/Messages/Interactions/TSMessage.h @@ -17,16 +17,6 @@ NS_ASSUME_NONNULL_BEGIN @class TSQuotedMessage; @class YapDatabaseReadWriteTransaction; -typedef NS_ENUM(NSInteger, LKMessageFriendRequestStatus) { - LKMessageFriendRequestStatusNone, - LKMessageFriendRequestStatusSendingOrFailed, - /// Either sent or received. - LKMessageFriendRequestStatusPending, - LKMessageFriendRequestStatusAccepted, - LKMessageFriendRequestStatusDeclined, - LKMessageFriendRequestStatusExpired -} __deprecated_enum_msg("no longer used as of version 1.1.2"); - @interface TSMessage : TSInteraction @property (nonatomic, readonly) NSMutableArray *attachmentIds; @@ -85,10 +75,6 @@ typedef NS_ENUM(NSInteger, LKMessageFriendRequestStatus) { - (void)updateWithLinkPreview:(OWSLinkPreview *)linkPreview transaction:(YapDatabaseReadWriteTransaction *)transaction; -#pragma mark - Loki Friend Request Handling - -- (void)saveFriendRequestExpiresAt:(u_int64_t)expiresAt withTransaction:(YapDatabaseReadWriteTransaction *_Nullable)transaction; - #pragma mark - Open Groups - (void)saveOpenGroupServerMessageID:(uint64_t)serverMessageID in:(YapDatabaseReadWriteTransaction *_Nullable)transaction; diff --git a/SignalServiceKit/src/Messages/OWSMessageDecrypter.m b/SignalServiceKit/src/Messages/OWSMessageDecrypter.m index d8d6cea06..84b93a54e 100644 --- a/SignalServiceKit/src/Messages/OWSMessageDecrypter.m +++ b/SignalServiceKit/src/Messages/OWSMessageDecrypter.m @@ -215,9 +215,9 @@ NSError *EnsureDecryptError(NSError *_Nullable error, NSString *fallbackErrorDes } switch (envelope.type) { - case SSKProtoEnvelopeTypeFriendRequest: { + case SSKProtoEnvelopeTypeFallbackMessage: { [LKStorage writeSyncWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { - [self decryptFriendRequestMessage:envelope + [self decryptFallbackMessage:envelope envelopeData:envelopeData successBlock:^(OWSMessageDecryptResult *result) { OWSLogDebug(@"Decrypted friend request message."); @@ -318,10 +318,10 @@ NSError *EnsureDecryptError(NSError *_Nullable error, NSString *fallbackErrorDes failureBlock(); } -- (void)decryptFriendRequestMessage:(SSKProtoEnvelope *)envelope - envelopeData:(NSData *)envelopeData - successBlock:(void (^)(OWSMessageDecryptResult *result))successBlock - failureBlock:(void (^)(NSError *_Nullable error))failureBlock +- (void)decryptFallbackMessage:(SSKProtoEnvelope *)envelope + envelopeData:(NSData *)envelopeData + successBlock:(void (^)(OWSMessageDecryptResult *result))successBlock + failureBlock:(void (^)(NSError *_Nullable error))failureBlock { OWSAssertDebug(envelope); OWSAssertDebug(envelopeData); @@ -341,7 +341,7 @@ NSError *EnsureDecryptError(NSError *_Nullable error, NSString *fallbackErrorDes NSData *_Nullable plaintextData = [[cipher decrypt:encryptedData] removePadding]; if (!plaintextData) { - NSString *errorString = [NSString stringWithFormat:@"Failed to decrypt friend request message from: %@.", recipientId]; + NSString *errorString = [NSString stringWithFormat:@"Failed to decrypt fallback message from: %@.", recipientId]; NSError *error = OWSErrorWithCodeDescription(OWSErrorCodeFailedToDecryptMessage, errorString); return failureBlock(error); } @@ -610,7 +610,7 @@ NSError *EnsureDecryptError(NSError *_Nullable error, NSString *fallbackErrorDes [envelopeBuilder setSource:source]; [envelopeBuilder setSourceDevice:(uint32_t)sourceDeviceId]; if (decryptResult.messageType == SMKMessageTypeLokiFriendRequest) { - [envelopeBuilder setType:SSKProtoEnvelopeTypeFriendRequest]; + [envelopeBuilder setType:SSKProtoEnvelopeTypeFallbackMessage]; OWSLogInfo(@"SMKMessageTypeLokiFriendRequest"); } NSError *envelopeBuilderError; diff --git a/SignalServiceKit/src/Messages/OWSMessageHandler.m b/SignalServiceKit/src/Messages/OWSMessageHandler.m index b17f2bdf8..377e250cb 100644 --- a/SignalServiceKit/src/Messages/OWSMessageHandler.m +++ b/SignalServiceKit/src/Messages/OWSMessageHandler.m @@ -36,8 +36,8 @@ NSString *envelopeAddress(SSKProtoEnvelope *envelope) return @"PreKeyEncryptedMessage"; case SSKProtoEnvelopeTypeUnidentifiedSender: return @"UnidentifiedSender"; - case SSKProtoEnvelopeTypeFriendRequest: - return @"LokiFriendRequest"; + case SSKProtoEnvelopeTypeFallbackMessage: + return @"FallbackMessage"; case SSKProtoEnvelopeTypeClosedGroupCiphertext: return @"ClosedGroupCiphertext"; default: diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m index 1e41f7f81..0dccb4605 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.m +++ b/SignalServiceKit/src/Messages/OWSMessageManager.m @@ -271,7 +271,7 @@ NS_ASSUME_NONNULL_BEGIN [self checkForUnknownLinkedDevice:envelope transaction:transaction]; switch (envelope.type) { - case SSKProtoEnvelopeTypeFriendRequest: + case SSKProtoEnvelopeTypeFallbackMessage: case SSKProtoEnvelopeTypeCiphertext: case SSKProtoEnvelopeTypePrekeyBundle: case SSKProtoEnvelopeTypeClosedGroupCiphertext: diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index e3a8713bd..0cf86f314 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -1111,9 +1111,7 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; } NSDictionary *signalMessageInfo = deviceMessages.firstObject; SSKProtoEnvelopeType type = ((NSNumber *)signalMessageInfo[@"type"]).integerValue; - if ([message isKindOfClass:OWSEndSessionMessage.class]) { - type = SSKProtoEnvelopeTypeFriendRequest; - } else if ([messageSend.thread isKindOfClass:TSGroupThread.class] && ((TSGroupThread *)messageSend.thread).usesSharedSenderKeys) { + if ([messageSend.thread isKindOfClass:TSGroupThread.class] && ((TSGroupThread *)messageSend.thread).usesSharedSenderKeys) { type = SSKProtoEnvelopeTypeClosedGroupCiphertext; } uint64_t timestamp = message.timestamp; diff --git a/SignalServiceKit/src/Protos/Generated/SSKProto.swift b/SignalServiceKit/src/Protos/Generated/SSKProto.swift index 688e8ef74..a4d2ec66e 100644 --- a/SignalServiceKit/src/Protos/Generated/SSKProto.swift +++ b/SignalServiceKit/src/Protos/Generated/SSKProto.swift @@ -24,7 +24,7 @@ public enum SSKProtoError: Error { case receipt = 5 case unidentifiedSender = 6 case closedGroupCiphertext = 7 - case friendRequest = 101 + case fallbackMessage = 101 } private class func SSKProtoEnvelopeTypeWrap(_ value: SignalServiceProtos_Envelope.TypeEnum) -> SSKProtoEnvelopeType { @@ -36,7 +36,7 @@ public enum SSKProtoError: Error { case .receipt: return .receipt case .unidentifiedSender: return .unidentifiedSender case .closedGroupCiphertext: return .closedGroupCiphertext - case .friendRequest: return .friendRequest + case .fallbackMessage: return .fallbackMessage } } @@ -49,7 +49,7 @@ public enum SSKProtoError: Error { case .receipt: return .receipt case .unidentifiedSender: return .unidentifiedSender case .closedGroupCiphertext: return .closedGroupCiphertext - case .friendRequest: return .friendRequest + case .fallbackMessage: return .fallbackMessage } } @@ -3646,9 +3646,7 @@ extension SSKProtoDataMessageClosedGroupUpdate.SSKProtoDataMessageClosedGroupUpd case endSession = 1 case expirationTimerUpdate = 2 case profileKeyUpdate = 4 - case sessionRestore = 64 case unlinkDevice = 128 - case sessionRequest = 256 } private class func SSKProtoDataMessageFlagsWrap(_ value: SignalServiceProtos_DataMessage.Flags) -> SSKProtoDataMessageFlags { @@ -3656,9 +3654,7 @@ extension SSKProtoDataMessageClosedGroupUpdate.SSKProtoDataMessageClosedGroupUpd case .endSession: return .endSession case .expirationTimerUpdate: return .expirationTimerUpdate case .profileKeyUpdate: return .profileKeyUpdate - case .sessionRestore: return .sessionRestore case .unlinkDevice: return .unlinkDevice - case .sessionRequest: return .sessionRequest } } @@ -3667,9 +3663,7 @@ extension SSKProtoDataMessageClosedGroupUpdate.SSKProtoDataMessageClosedGroupUpd case .endSession: return .endSession case .expirationTimerUpdate: return .expirationTimerUpdate case .profileKeyUpdate: return .profileKeyUpdate - case .sessionRestore: return .sessionRestore case .unlinkDevice: return .unlinkDevice - case .sessionRequest: return .sessionRequest } } diff --git a/SignalServiceKit/src/Protos/Generated/SignalService.pb.swift b/SignalServiceKit/src/Protos/Generated/SignalService.pb.swift index 1ce1b34a1..a78457606 100644 --- a/SignalServiceKit/src/Protos/Generated/SignalService.pb.swift +++ b/SignalServiceKit/src/Protos/Generated/SignalService.pb.swift @@ -134,8 +134,8 @@ struct SignalServiceProtos_Envelope { /// Loki case closedGroupCiphertext // = 7 - /// Loki: Contains pre keys and a message; uses simple encryption - case friendRequest // = 101 + /// Loki: Encrypted using the fallback session cipher. Contains a pre key bundle if it's a session request. + case fallbackMessage // = 101 init() { self = .unknown @@ -150,7 +150,7 @@ struct SignalServiceProtos_Envelope { case 5: self = .receipt case 6: self = .unidentifiedSender case 7: self = .closedGroupCiphertext - case 101: self = .friendRequest + case 101: self = .fallbackMessage default: return nil } } @@ -164,7 +164,7 @@ struct SignalServiceProtos_Envelope { case .receipt: return 5 case .unidentifiedSender: return 6 case .closedGroupCiphertext: return 7 - case .friendRequest: return 101 + case .fallbackMessage: return 101 } } @@ -840,9 +840,7 @@ struct SignalServiceProtos_DataMessage { case endSession // = 1 case expirationTimerUpdate // = 2 case profileKeyUpdate // = 4 - case sessionRestore // = 64 case unlinkDevice // = 128 - case sessionRequest // = 256 init() { self = .endSession @@ -853,9 +851,7 @@ struct SignalServiceProtos_DataMessage { case 1: self = .endSession case 2: self = .expirationTimerUpdate case 4: self = .profileKeyUpdate - case 64: self = .sessionRestore case 128: self = .unlinkDevice - case 256: self = .sessionRequest default: return nil } } @@ -865,9 +861,7 @@ struct SignalServiceProtos_DataMessage { case .endSession: return 1 case .expirationTimerUpdate: return 2 case .profileKeyUpdate: return 4 - case .sessionRestore: return 64 case .unlinkDevice: return 128 - case .sessionRequest: return 256 } } @@ -2935,7 +2929,7 @@ extension SignalServiceProtos_Envelope.TypeEnum: SwiftProtobuf._ProtoNameProvidi 5: .same(proto: "RECEIPT"), 6: .same(proto: "UNIDENTIFIED_SENDER"), 7: .same(proto: "CLOSED_GROUP_CIPHERTEXT"), - 101: .same(proto: "FRIEND_REQUEST"), + 101: .same(proto: "FALLBACK_MESSAGE"), ] } @@ -3510,9 +3504,7 @@ extension SignalServiceProtos_DataMessage.Flags: SwiftProtobuf._ProtoNameProvidi 1: .same(proto: "END_SESSION"), 2: .same(proto: "EXPIRATION_TIMER_UPDATE"), 4: .same(proto: "PROFILE_KEY_UPDATE"), - 64: .same(proto: "SESSION_RESTORE"), 128: .same(proto: "UNLINK_DEVICE"), - 256: .same(proto: "SESSION_REQUEST"), ] } diff --git a/SignalServiceKit/src/SSKEnvironment.h b/SignalServiceKit/src/SSKEnvironment.h index 94fb5a316..8dc5179d2 100644 --- a/SignalServiceKit/src/SSKEnvironment.h +++ b/SignalServiceKit/src/SSKEnvironment.h @@ -26,7 +26,6 @@ NS_ASSUME_NONNULL_BEGIN @class TSNetworkManager; @class TSSocketManager; @class YapDatabaseConnection; -@class LKFriendRequestExpirationJob; // Loki @protocol ContactsManagerProtocol; @protocol NotificationsProtocol; @@ -111,7 +110,6 @@ NS_ASSUME_NONNULL_BEGIN @property (atomic, readonly) YapDatabaseConnection *sessionStoreDBConnection; @property (atomic, readonly) YapDatabaseConnection *migrationDBConnection; @property (atomic, readonly) YapDatabaseConnection *analyticsDBConnection; -@property (nonatomic) LKFriendRequestExpirationJob *lokiFriendRequestExpirationJob; // Loki - (BOOL)isComplete; diff --git a/SignalServiceKit/src/SSKEnvironment.m b/SignalServiceKit/src/SSKEnvironment.m index be9b85881..82419e756 100644 --- a/SignalServiceKit/src/SSKEnvironment.m +++ b/SignalServiceKit/src/SSKEnvironment.m @@ -197,15 +197,6 @@ static SSKEnvironment *sharedSSKEnvironment; } } -- (void)setLokiFriendRequestExpirationJob:(LKFriendRequestExpirationJob *)lokiFriendRequestExpirationJob { - @synchronized(self) { - OWSAssertDebug(lokiFriendRequestExpirationJob); - OWSAssertDebug(_lokiFriendRequestExpirationJob == nil); - - _lokiFriendRequestExpirationJob = lokiFriendRequestExpirationJob; - } -} - - (BOOL)isComplete { return self.notificationsManager != nil;