Simplify processing of messages from linked devices.

// FREEBIE
pull/1/head
Matthew Chen 7 years ago
parent 1a3b3b2c06
commit 33376f66d2

@ -130,7 +130,7 @@ EXTERNAL SOURCES:
OpenSSL:
:git: https://github.com/WhisperSystems/OpenSSL-Pod
SignalServiceKit:
:path: .
:path: "."
SocketRocket:
:git: https://github.com/facebook/SocketRocket.git

@ -12,6 +12,8 @@ NS_ASSUME_NONNULL_BEGIN
@class TSStorageManager;
@class YapDatabaseReadWriteTransaction;
@protocol ContactsManagerProtocol;
// This job is used to process "outgoing message" notifications from linked devices.
@interface OWSRecordTranscriptJob : NSObject
@ -22,6 +24,7 @@ NS_ASSUME_NONNULL_BEGIN
networkManager:(TSNetworkManager *)networkManager
storageManager:(TSStorageManager *)storageManager
readReceiptManager:(OWSReadReceiptManager *)readReceiptManager
contactsManager:(id<ContactsManagerProtocol>)contactsManager
NS_DESIGNATED_INITIALIZER;
- (void)runWithAttachmentHandler:(void (^)(TSAttachmentStream *attachmentStream))attachmentHandler

@ -4,6 +4,7 @@
#import "OWSRecordTranscriptJob.h"
#import "OWSAttachmentsProcessor.h"
#import "OWSDisappearingMessagesJob.h"
#import "OWSIncomingSentMessageTranscript.h"
#import "OWSMessageSender.h"
#import "OWSReadReceiptManager.h"
@ -21,6 +22,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, readonly) TSNetworkManager *networkManager;
@property (nonatomic, readonly) TSStorageManager *storageManager;
@property (nonatomic, readonly) OWSReadReceiptManager *readReceiptManager;
@property (nonatomic, readonly) id<ContactsManagerProtocol> contactsManager;
@property (nonatomic, readonly) OWSIncomingSentMessageTranscript *incomingSentMessageTranscript;
@ -34,7 +36,8 @@ NS_ASSUME_NONNULL_BEGIN
messageSender:[TextSecureKitEnv sharedEnv].messageSender
networkManager:TSNetworkManager.sharedManager
storageManager:TSStorageManager.sharedManager
readReceiptManager:OWSReadReceiptManager.sharedManager];
readReceiptManager:OWSReadReceiptManager.sharedManager
contactsManager:[TextSecureKitEnv sharedEnv].contactsManager];
}
- (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript
@ -42,6 +45,7 @@ NS_ASSUME_NONNULL_BEGIN
networkManager:(TSNetworkManager *)networkManager
storageManager:(TSStorageManager *)storageManager
readReceiptManager:(OWSReadReceiptManager *)readReceiptManager
contactsManager:(id<ContactsManagerProtocol>)contactsManager
{
self = [super init];
if (!self) {
@ -53,6 +57,7 @@ NS_ASSUME_NONNULL_BEGIN
_networkManager = networkManager;
_storageManager = storageManager;
_readReceiptManager = readReceiptManager;
_contactsManager = contactsManager;
return self;
}
@ -108,11 +113,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];

@ -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
*

@ -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

Loading…
Cancel
Save