From 907159f3f4898f5f6b31c2ce272040eb17ad1938 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 20 Feb 2019 09:11:43 -0500 Subject: [PATCH] Process 'sent update' transcripts. --- .../src/Devices/OWSRecordTranscriptJob.h | 10 ++-- .../src/Devices/OWSRecordTranscriptJob.m | 38 ++++---------- .../src/Messages/OWSMessageManager.m | 52 ++++++++++--------- 3 files changed, 42 insertions(+), 58 deletions(-) diff --git a/SignalServiceKit/src/Devices/OWSRecordTranscriptJob.h b/SignalServiceKit/src/Devices/OWSRecordTranscriptJob.h index 02a2048c4..abbeeff41 100644 --- a/SignalServiceKit/src/Devices/OWSRecordTranscriptJob.h +++ b/SignalServiceKit/src/Devices/OWSRecordTranscriptJob.h @@ -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 @@ -12,11 +12,11 @@ NS_ASSUME_NONNULL_BEGIN @interface OWSRecordTranscriptJob : NSObject - (instancetype)init NS_UNAVAILABLE; -- (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript - NS_DESIGNATED_INITIALIZER; -- (void)runWithAttachmentHandler:(void (^)(NSArray *attachmentStreams))attachmentHandler - transaction:(YapDatabaseReadWriteTransaction *)transaction; ++ (void)processIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript + attachmentHandler:(void (^)( + NSArray *attachmentStreams))attachmentHandler + transaction:(YapDatabaseReadWriteTransaction *)transaction; @end diff --git a/SignalServiceKit/src/Devices/OWSRecordTranscriptJob.m b/SignalServiceKit/src/Devices/OWSRecordTranscriptJob.m index a20f84d39..801bdcf47 100644 --- a/SignalServiceKit/src/Devices/OWSRecordTranscriptJob.m +++ b/SignalServiceKit/src/Devices/OWSRecordTranscriptJob.m @@ -18,71 +18,53 @@ NS_ASSUME_NONNULL_BEGIN -@interface OWSRecordTranscriptJob () - -@property (nonatomic, readonly) OWSIncomingSentMessageTranscript *incomingSentMessageTranscript; - -@end - -#pragma mark - - @implementation OWSRecordTranscriptJob -- (instancetype)initWithIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)incomingSentMessageTranscript -{ - self = [super init]; - if (!self) { - return self; - } - - _incomingSentMessageTranscript = incomingSentMessageTranscript; - - return self; -} - #pragma mark - Dependencies -- (OWSPrimaryStorage *)primaryStorage ++ (OWSPrimaryStorage *)primaryStorage { OWSAssertDebug(SSKEnvironment.shared.primaryStorage); return SSKEnvironment.shared.primaryStorage; } -- (TSNetworkManager *)networkManager ++ (TSNetworkManager *)networkManager { OWSAssertDebug(SSKEnvironment.shared.networkManager); return SSKEnvironment.shared.networkManager; } -- (OWSReadReceiptManager *)readReceiptManager ++ (OWSReadReceiptManager *)readReceiptManager { OWSAssert(SSKEnvironment.shared.readReceiptManager); return SSKEnvironment.shared.readReceiptManager; } -- (id)contactsManager ++ (id)contactsManager { OWSAssertDebug(SSKEnvironment.shared.contactsManager); return SSKEnvironment.shared.contactsManager; } -- (OWSAttachmentDownloads *)attachmentDownloads ++ (OWSAttachmentDownloads *)attachmentDownloads { return SSKEnvironment.shared.attachmentDownloads; } #pragma mark - -- (void)runWithAttachmentHandler:(void (^)(NSArray *attachmentStreams))attachmentHandler - transaction:(YapDatabaseReadWriteTransaction *)transaction ++ (void)processIncomingSentMessageTranscript:(OWSIncomingSentMessageTranscript *)transcript + attachmentHandler:(void (^)( + NSArray *attachmentStreams))attachmentHandler + transaction:(YapDatabaseReadWriteTransaction *)transaction { + OWSAssertDebug(transcript); OWSAssertDebug(transaction); - OWSIncomingSentMessageTranscript *transcript = self.incomingSentMessageTranscript; OWSLogInfo(@"Recording transcript in thread: %@ timestamp: %llu", transcript.thread.uniqueId, transcript.timestamp); if (transcript.isEndSessionMessage) { diff --git a/SignalServiceKit/src/Messages/OWSMessageManager.m b/SignalServiceKit/src/Messages/OWSMessageManager.m index 3c8858186..094768123 100644 --- a/SignalServiceKit/src/Messages/OWSMessageManager.m +++ b/SignalServiceKit/src/Messages/OWSMessageManager.m @@ -863,9 +863,6 @@ NS_ASSUME_NONNULL_BEGIN [[OWSIncomingSentMessageTranscript alloc] initWithProto:syncMessage.sent transaction:transaction]; - OWSRecordTranscriptJob *recordJob = - [[OWSRecordTranscriptJob alloc] initWithIncomingSentMessageTranscript:transcript]; - SSKProtoDataMessage *_Nullable dataMessage = syncMessage.sent.message; if (!dataMessage) { OWSFailDebug(@"Missing dataMessage."); @@ -883,29 +880,34 @@ NS_ASSUME_NONNULL_BEGIN } if ([self isDataMessageGroupAvatarUpdate:syncMessage.sent.message]) { - [recordJob - runWithAttachmentHandler:^(NSArray *attachmentStreams) { - OWSAssertDebug(attachmentStreams.count == 1); - TSAttachmentStream *attachmentStream = attachmentStreams.firstObject; - [self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) { - TSGroupThread *_Nullable groupThread = - [TSGroupThread threadWithGroupId:dataMessage.group.id transaction:transaction]; - if (!groupThread) { - OWSFailDebug(@"ignoring sync group avatar update for unknown group."); - return; - } - - [groupThread updateAvatarWithAttachmentStream:attachmentStream transaction:transaction]; - }]; - } - transaction:transaction]; + [OWSRecordTranscriptJob + processIncomingSentMessageTranscript:transcript + attachmentHandler:^(NSArray *attachmentStreams) { + OWSAssertDebug(attachmentStreams.count == 1); + TSAttachmentStream *attachmentStream = attachmentStreams.firstObject; + [self.dbConnection readWriteWithBlock:^( + YapDatabaseReadWriteTransaction *transaction) { + TSGroupThread *_Nullable groupThread = + [TSGroupThread threadWithGroupId:dataMessage.group.id + transaction:transaction]; + if (!groupThread) { + OWSFailDebug(@"ignoring sync group avatar update for unknown group."); + return; + } + + [groupThread updateAvatarWithAttachmentStream:attachmentStream + transaction:transaction]; + }]; + } + transaction:transaction]; } else { - [recordJob - runWithAttachmentHandler:^(NSArray *attachmentStreams) { - OWSLogDebug( - @"successfully fetched transcript attachments: %lu", (unsigned long)attachmentStreams.count); - } - transaction:transaction]; + [OWSRecordTranscriptJob + processIncomingSentMessageTranscript:transcript + attachmentHandler:^(NSArray *attachmentStreams) { + OWSLogDebug(@"successfully fetched transcript attachments: %lu", + (unsigned long)attachmentStreams.count); + } + transaction:transaction]; } } else if (syncMessage.request) { if (syncMessage.request.type == SSKProtoSyncMessageRequestTypeContacts) {