diff --git a/SignalServiceKit/src/Devices/OWSRecordTranscriptJob.h b/SignalServiceKit/src/Devices/OWSRecordTranscriptJob.h index daa2dc462..3253d17ca 100644 --- a/SignalServiceKit/src/Devices/OWSRecordTranscriptJob.h +++ b/SignalServiceKit/src/Devices/OWSRecordTranscriptJob.h @@ -5,23 +5,24 @@ NS_ASSUME_NONNULL_BEGIN @class OWSIncomingSentMessageTranscript; -@class OWSMessageSender; @class OWSReadReceiptManager; @class TSAttachmentStream; @class TSNetworkManager; @class TSStorageManager; @class YapDatabaseReadWriteTransaction; +@protocol ContactsManagerProtocol; + // This job is used to process "outgoing message" notifications from linked devices. @interface OWSRecordTranscriptJob : NSObject - (instancetype)init NS_UNAVAILABLE; - (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript; - (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript - messageSender:(OWSMessageSender *)messageSender networkManager:(TSNetworkManager *)networkManager storageManager:(TSStorageManager *)storageManager readReceiptManager:(OWSReadReceiptManager *)readReceiptManager + contactsManager:(id)contactsManager NS_DESIGNATED_INITIALIZER; - (void)runWithAttachmentHandler:(void (^)(TSAttachmentStream *attachmentStream))attachmentHandler diff --git a/SignalServiceKit/src/Devices/OWSRecordTranscriptJob.m b/SignalServiceKit/src/Devices/OWSRecordTranscriptJob.m index 50b603c83..bea107315 100644 --- a/SignalServiceKit/src/Devices/OWSRecordTranscriptJob.m +++ b/SignalServiceKit/src/Devices/OWSRecordTranscriptJob.m @@ -4,8 +4,8 @@ #import "OWSRecordTranscriptJob.h" #import "OWSAttachmentsProcessor.h" +#import "OWSDisappearingMessagesJob.h" #import "OWSIncomingSentMessageTranscript.h" -#import "OWSMessageSender.h" #import "OWSReadReceiptManager.h" #import "TSInfoMessage.h" #import "TSNetworkManager.h" @@ -17,10 +17,10 @@ NS_ASSUME_NONNULL_BEGIN @interface OWSRecordTranscriptJob () -@property (nonatomic, readonly) OWSMessageSender *messageSender; @property (nonatomic, readonly) TSNetworkManager *networkManager; @property (nonatomic, readonly) TSStorageManager *storageManager; @property (nonatomic, readonly) OWSReadReceiptManager *readReceiptManager; +@property (nonatomic, readonly) id contactsManager; @property (nonatomic, readonly) OWSIncomingSentMessageTranscript *incomingSentMessageTranscript; @@ -31,17 +31,17 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript { return [self initWithIncomingSentMessageTranscript:incomingSentMessageTranscript - messageSender:[TextSecureKitEnv sharedEnv].messageSender networkManager:TSNetworkManager.sharedManager storageManager:TSStorageManager.sharedManager - readReceiptManager:OWSReadReceiptManager.sharedManager]; + readReceiptManager:OWSReadReceiptManager.sharedManager + contactsManager:[TextSecureKitEnv sharedEnv].contactsManager]; } - (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript - messageSender:(OWSMessageSender *)messageSender networkManager:(TSNetworkManager *)networkManager storageManager:(TSStorageManager *)storageManager readReceiptManager:(OWSReadReceiptManager *)readReceiptManager + contactsManager:(id)contactsManager { self = [super init]; if (!self) { @@ -49,10 +49,10 @@ NS_ASSUME_NONNULL_BEGIN } _incomingSentMessageTranscript = incomingSentMessageTranscript; - _messageSender = messageSender; _networkManager = networkManager; _storageManager = storageManager; _readReceiptManager = readReceiptManager; + _contactsManager = contactsManager; return self; } @@ -98,7 +98,8 @@ NS_ASSUME_NONNULL_BEGIN expireStartedAt:transcript.expirationStartedAt]; if (transcript.isExpirationTimerUpdate) { - [self.messageSender becomeConsistentWithDisappearingConfigurationForMessage:outgoingMessage]; + [OWSDisappearingMessagesJob becomeConsistentWithConfigurationForMessage:outgoingMessage + contactsManager:self.contactsManager]; // early return to avoid saving an empty incoming message. return; } @@ -108,11 +109,11 @@ NS_ASSUME_NONNULL_BEGIN return; } - // TODO: Refactor this logic. Most of it doesn't belong in `OWSMessageSender`. - [self.messageSender handleMessageSentRemotely:outgoingMessage - sentAt:transcript.expirationStartedAt - transaction:transaction]; - + [outgoingMessage updateWithWasSentFromLinkedDeviceWithTransaction:transaction]; + [OWSDisappearingMessagesJob becomeConsistentWithConfigurationForMessage:outgoingMessage + contactsManager:self.contactsManager]; + [OWSDisappearingMessagesJob setExpirationForMessage:outgoingMessage + expirationStartedAt:transcript.expirationStartedAt]; [self.readReceiptManager applyEarlyReadReceiptsForOutgoingMessageFromLinkedDevice:outgoingMessage transaction:transaction]; diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.h b/SignalServiceKit/src/Messages/OWSMessageSender.h index 0061b7bef..f6cf69941 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.h +++ b/SignalServiceKit/src/Messages/OWSMessageSender.h @@ -91,10 +91,6 @@ NS_SWIFT_NAME(MessageSender) success:(void (^)())successHandler failure:(void (^)(NSError *error))failureHandler; -- (void)handleMessageSentRemotely:(TSOutgoingMessage *)message - sentAt:(uint64_t)sentAt - transaction:(YapDatabaseReadWriteTransaction *)transaction; - /** * Set local configuration to match that of the of `outgoingMessage`'s sender * diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index d9bcec134..2d99619a6 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -1100,18 +1100,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException"; [OWSDisappearingMessagesJob setExpirationForMessage:message]; } -- (void)handleMessageSentRemotely:(TSOutgoingMessage *)message - sentAt:(uint64_t)sentAt - transaction:(YapDatabaseReadWriteTransaction *)transaction -{ - OWSAssert(message); - OWSAssert(transaction); - - [message updateWithWasSentFromLinkedDeviceWithTransaction:transaction]; - [self becomeConsistentWithDisappearingConfigurationForMessage:message]; - [OWSDisappearingMessagesJob setExpirationForMessage:message expirationStartedAt:sentAt]; -} - - (void)becomeConsistentWithDisappearingConfigurationForMessage:(TSOutgoingMessage *)outgoingMessage { [OWSDisappearingMessagesJob becomeConsistentWithConfigurationForMessage:outgoingMessage