Process 'sent update' transcripts.

pull/2/head
Matthew Chen 6 years ago
parent f36373e3ca
commit 907159f3f4

@ -1,5 +1,5 @@
// //
// Copyright (c) 2018 Open Whisper Systems. All rights reserved. // Copyright (c) 2019 Open Whisper Systems. All rights reserved.
// //
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@ -12,10 +12,10 @@ NS_ASSUME_NONNULL_BEGIN
@interface OWSRecordTranscriptJob : NSObject @interface OWSRecordTranscriptJob : NSObject
- (instancetype)init NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
- (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript
NS_DESIGNATED_INITIALIZER;
- (void)runWithAttachmentHandler:(void (^)(NSArray<TSAttachmentStream *> *attachmentStreams))attachmentHandler + (void)processIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript
attachmentHandler:(void (^)(
NSArray<TSAttachmentStream *> *attachmentStreams))attachmentHandler
transaction:(YapDatabaseReadWriteTransaction *)transaction; transaction:(YapDatabaseReadWriteTransaction *)transaction;
@end @end

@ -18,71 +18,53 @@
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@interface OWSRecordTranscriptJob ()
@property (nonatomic, readonly) OWSIncomingSentMessageTranscript *incomingSentMessageTranscript;
@end
#pragma mark -
@implementation OWSRecordTranscriptJob @implementation OWSRecordTranscriptJob
- (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript
{
self = [super init];
if (!self) {
return self;
}
_incomingSentMessageTranscript = incomingSentMessageTranscript;
return self;
}
#pragma mark - Dependencies #pragma mark - Dependencies
- (OWSPrimaryStorage *)primaryStorage + (OWSPrimaryStorage *)primaryStorage
{ {
OWSAssertDebug(SSKEnvironment.shared.primaryStorage); OWSAssertDebug(SSKEnvironment.shared.primaryStorage);
return SSKEnvironment.shared.primaryStorage; return SSKEnvironment.shared.primaryStorage;
} }
- (TSNetworkManager *)networkManager + (TSNetworkManager *)networkManager
{ {
OWSAssertDebug(SSKEnvironment.shared.networkManager); OWSAssertDebug(SSKEnvironment.shared.networkManager);
return SSKEnvironment.shared.networkManager; return SSKEnvironment.shared.networkManager;
} }
- (OWSReadReceiptManager *)readReceiptManager + (OWSReadReceiptManager *)readReceiptManager
{ {
OWSAssert(SSKEnvironment.shared.readReceiptManager); OWSAssert(SSKEnvironment.shared.readReceiptManager);
return SSKEnvironment.shared.readReceiptManager; return SSKEnvironment.shared.readReceiptManager;
} }
- (id<ContactsManagerProtocol>)contactsManager + (id<ContactsManagerProtocol>)contactsManager
{ {
OWSAssertDebug(SSKEnvironment.shared.contactsManager); OWSAssertDebug(SSKEnvironment.shared.contactsManager);
return SSKEnvironment.shared.contactsManager; return SSKEnvironment.shared.contactsManager;
} }
- (OWSAttachmentDownloads *)attachmentDownloads + (OWSAttachmentDownloads *)attachmentDownloads
{ {
return SSKEnvironment.shared.attachmentDownloads; return SSKEnvironment.shared.attachmentDownloads;
} }
#pragma mark - #pragma mark -
- (void)runWithAttachmentHandler:(void (^)(NSArray<TSAttachmentStream *> *attachmentStreams))attachmentHandler + (void)processIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)transcript
attachmentHandler:(void (^)(
NSArray<TSAttachmentStream *> *attachmentStreams))attachmentHandler
transaction:(YapDatabaseReadWriteTransaction *)transaction transaction:(YapDatabaseReadWriteTransaction *)transaction
{ {
OWSAssertDebug(transcript);
OWSAssertDebug(transaction); OWSAssertDebug(transaction);
OWSIncomingSentMessageTranscript *transcript = self.incomingSentMessageTranscript;
OWSLogInfo(@"Recording transcript in thread: %@ timestamp: %llu", transcript.thread.uniqueId, transcript.timestamp); OWSLogInfo(@"Recording transcript in thread: %@ timestamp: %llu", transcript.thread.uniqueId, transcript.timestamp);
if (transcript.isEndSessionMessage) { if (transcript.isEndSessionMessage) {

@ -863,9 +863,6 @@ NS_ASSUME_NONNULL_BEGIN
[[OWSIncomingSentMessageTranscript alloc] initWithProto:syncMessage.sent [[OWSIncomingSentMessageTranscript alloc] initWithProto:syncMessage.sent
transaction:transaction]; transaction:transaction];
OWSRecordTranscriptJob *recordJob =
[[OWSRecordTranscriptJob alloc] initWithIncomingSentMessageTranscript:transcript];
SSKProtoDataMessage *_Nullable dataMessage = syncMessage.sent.message; SSKProtoDataMessage *_Nullable dataMessage = syncMessage.sent.message;
if (!dataMessage) { if (!dataMessage) {
OWSFailDebug(@"Missing dataMessage."); OWSFailDebug(@"Missing dataMessage.");
@ -883,27 +880,32 @@ NS_ASSUME_NONNULL_BEGIN
} }
if ([self isDataMessageGroupAvatarUpdate:syncMessage.sent.message]) { if ([self isDataMessageGroupAvatarUpdate:syncMessage.sent.message]) {
[recordJob [OWSRecordTranscriptJob
runWithAttachmentHandler:^(NSArray<TSAttachmentStream *> *attachmentStreams) { processIncomingSentMessageTranscript:transcript
attachmentHandler:^(NSArray<TSAttachmentStream *> *attachmentStreams) {
OWSAssertDebug(attachmentStreams.count == 1); OWSAssertDebug(attachmentStreams.count == 1);
TSAttachmentStream *attachmentStream = attachmentStreams.firstObject; TSAttachmentStream *attachmentStream = attachmentStreams.firstObject;
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { [self.dbConnection readWriteWithBlock:^(
YapDatabaseReadWriteTransaction *transaction) {
TSGroupThread *_Nullable groupThread = TSGroupThread *_Nullable groupThread =
[TSGroupThread threadWithGroupId:dataMessage.group.id transaction:transaction]; [TSGroupThread threadWithGroupId:dataMessage.group.id
transaction:transaction];
if (!groupThread) { if (!groupThread) {
OWSFailDebug(@"ignoring sync group avatar update for unknown group."); OWSFailDebug(@"ignoring sync group avatar update for unknown group.");
return; return;
} }
[groupThread updateAvatarWithAttachmentStream:attachmentStream transaction:transaction]; [groupThread updateAvatarWithAttachmentStream:attachmentStream
transaction:transaction];
}]; }];
} }
transaction:transaction]; transaction:transaction];
} else { } else {
[recordJob [OWSRecordTranscriptJob
runWithAttachmentHandler:^(NSArray<TSAttachmentStream *> *attachmentStreams) { processIncomingSentMessageTranscript:transcript
OWSLogDebug( attachmentHandler:^(NSArray<TSAttachmentStream *> *attachmentStreams) {
@"successfully fetched transcript attachments: %lu", (unsigned long)attachmentStreams.count); OWSLogDebug(@"successfully fetched transcript attachments: %lu",
(unsigned long)attachmentStreams.count);
} }
transaction:transaction]; transaction:transaction];
} }

Loading…
Cancel
Save