Simplify processing of messages from linked devices.

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

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

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

@ -4,6 +4,7 @@
#import "OWSRecordTranscriptJob.h" #import "OWSRecordTranscriptJob.h"
#import "OWSAttachmentsProcessor.h" #import "OWSAttachmentsProcessor.h"
#import "OWSDisappearingMessagesJob.h"
#import "OWSIncomingSentMessageTranscript.h" #import "OWSIncomingSentMessageTranscript.h"
#import "OWSMessageSender.h" #import "OWSMessageSender.h"
#import "OWSReadReceiptManager.h" #import "OWSReadReceiptManager.h"
@ -21,6 +22,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, readonly) TSNetworkManager *networkManager; @property (nonatomic, readonly) TSNetworkManager *networkManager;
@property (nonatomic, readonly) TSStorageManager *storageManager; @property (nonatomic, readonly) TSStorageManager *storageManager;
@property (nonatomic, readonly) OWSReadReceiptManager *readReceiptManager; @property (nonatomic, readonly) OWSReadReceiptManager *readReceiptManager;
@property (nonatomic, readonly) id<ContactsManagerProtocol> contactsManager;
@property (nonatomic, readonly) OWSIncomingSentMessageTranscript *incomingSentMessageTranscript; @property (nonatomic, readonly) OWSIncomingSentMessageTranscript *incomingSentMessageTranscript;
@ -34,7 +36,8 @@ NS_ASSUME_NONNULL_BEGIN
messageSender:[TextSecureKitEnv sharedEnv].messageSender messageSender:[TextSecureKitEnv sharedEnv].messageSender
networkManager:TSNetworkManager.sharedManager networkManager:TSNetworkManager.sharedManager
storageManager:TSStorageManager.sharedManager storageManager:TSStorageManager.sharedManager
readReceiptManager:OWSReadReceiptManager.sharedManager]; readReceiptManager:OWSReadReceiptManager.sharedManager
contactsManager:[TextSecureKitEnv sharedEnv].contactsManager];
} }
- (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript - (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript
@ -42,6 +45,7 @@ NS_ASSUME_NONNULL_BEGIN
networkManager:(TSNetworkManager *)networkManager networkManager:(TSNetworkManager *)networkManager
storageManager:(TSStorageManager *)storageManager storageManager:(TSStorageManager *)storageManager
readReceiptManager:(OWSReadReceiptManager *)readReceiptManager readReceiptManager:(OWSReadReceiptManager *)readReceiptManager
contactsManager:(id<ContactsManagerProtocol>)contactsManager
{ {
self = [super init]; self = [super init];
if (!self) { if (!self) {
@ -53,6 +57,7 @@ NS_ASSUME_NONNULL_BEGIN
_networkManager = networkManager; _networkManager = networkManager;
_storageManager = storageManager; _storageManager = storageManager;
_readReceiptManager = readReceiptManager; _readReceiptManager = readReceiptManager;
_contactsManager = contactsManager;
return self; return self;
} }
@ -108,11 +113,11 @@ NS_ASSUME_NONNULL_BEGIN
return; return;
} }
// TODO: Refactor this logic. Most of it doesn't belong in `OWSMessageSender`. [outgoingMessage updateWithWasSentFromLinkedDeviceWithTransaction:transaction];
[self.messageSender handleMessageSentRemotely:outgoingMessage [OWSDisappearingMessagesJob becomeConsistentWithConfigurationForMessage:outgoingMessage
sentAt:transcript.expirationStartedAt contactsManager:self.contactsManager];
transaction:transaction]; [OWSDisappearingMessagesJob setExpirationForMessage:outgoingMessage
expirationStartedAt:transcript.expirationStartedAt];
[self.readReceiptManager applyEarlyReadReceiptsForOutgoingMessageFromLinkedDevice:outgoingMessage [self.readReceiptManager applyEarlyReadReceiptsForOutgoingMessageFromLinkedDevice:outgoingMessage
transaction:transaction]; transaction:transaction];

@ -91,10 +91,6 @@ NS_SWIFT_NAME(MessageSender)
success:(void (^)())successHandler success:(void (^)())successHandler
failure:(void (^)(NSError *error))failureHandler; 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 * Set local configuration to match that of the of `outgoingMessage`'s sender
* *

@ -1100,18 +1100,6 @@ NSString *const OWSMessageSenderRateLimitedException = @"RateLimitedException";
[OWSDisappearingMessagesJob setExpirationForMessage:message]; [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 - (void)becomeConsistentWithDisappearingConfigurationForMessage:(TSOutgoingMessage *)outgoingMessage
{ {
[OWSDisappearingMessagesJob becomeConsistentWithConfigurationForMessage:outgoingMessage [OWSDisappearingMessagesJob becomeConsistentWithConfigurationForMessage:outgoingMessage

Loading…
Cancel
Save