Merge branch 'charlesmchen/outgoingMessagesFromLinkedDevices'

pull/1/head
Matthew Chen 8 years ago
commit cdd17c7699

@ -5,23 +5,24 @@
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@class OWSIncomingSentMessageTranscript; @class OWSIncomingSentMessageTranscript;
@class OWSMessageSender;
@class OWSReadReceiptManager; @class OWSReadReceiptManager;
@class TSAttachmentStream; @class TSAttachmentStream;
@class TSNetworkManager; @class TSNetworkManager;
@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
- (instancetype)init NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
- (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript; - (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript;
- (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript - (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript
messageSender:(OWSMessageSender *)messageSender
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,8 +4,8 @@
#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 "OWSReadReceiptManager.h" #import "OWSReadReceiptManager.h"
#import "TSInfoMessage.h" #import "TSInfoMessage.h"
#import "TSNetworkManager.h" #import "TSNetworkManager.h"
@ -17,10 +17,10 @@ NS_ASSUME_NONNULL_BEGIN
@interface OWSRecordTranscriptJob () @interface OWSRecordTranscriptJob ()
@property (nonatomic, readonly) OWSMessageSender *messageSender;
@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;
@ -31,17 +31,17 @@ NS_ASSUME_NONNULL_BEGIN
- (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript - (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript
{ {
return [self initWithIncomingSentMessageTranscript:incomingSentMessageTranscript return [self initWithIncomingSentMessageTranscript:incomingSentMessageTranscript
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
messageSender:(OWSMessageSender *)messageSender
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) {
@ -49,10 +49,10 @@ NS_ASSUME_NONNULL_BEGIN
} }
_incomingSentMessageTranscript = incomingSentMessageTranscript; _incomingSentMessageTranscript = incomingSentMessageTranscript;
_messageSender = messageSender;
_networkManager = networkManager; _networkManager = networkManager;
_storageManager = storageManager; _storageManager = storageManager;
_readReceiptManager = readReceiptManager; _readReceiptManager = readReceiptManager;
_contactsManager = contactsManager;
return self; return self;
} }
@ -98,7 +98,8 @@ NS_ASSUME_NONNULL_BEGIN
expireStartedAt:transcript.expirationStartedAt]; expireStartedAt:transcript.expirationStartedAt];
if (transcript.isExpirationTimerUpdate) { if (transcript.isExpirationTimerUpdate) {
[self.messageSender becomeConsistentWithDisappearingConfigurationForMessage:outgoingMessage]; [OWSDisappearingMessagesJob becomeConsistentWithConfigurationForMessage:outgoingMessage
contactsManager:self.contactsManager];
// early return to avoid saving an empty incoming message. // early return to avoid saving an empty incoming message.
return; return;
} }
@ -108,11 +109,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