diff --git a/SignalServiceKit/src/Devices/OWSReadReceiptsForSenderMessage.m b/SignalServiceKit/src/Devices/OWSReadReceiptsForSenderMessage.m index a7974be4a..7c700bab4 100644 --- a/SignalServiceKit/src/Devices/OWSReadReceiptsForSenderMessage.m +++ b/SignalServiceKit/src/Devices/OWSReadReceiptsForSenderMessage.m @@ -67,13 +67,9 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - TSYapDatabaseObject overrides -- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction +- (BOOL)shouldBeSaved { - // override superclass with no-op. - // - // There's no need to save this message, since it's not displayed to the user. - // - // Should we find a need to save this in the future, we need to exclude any non-serializable properties. + return NO; } - (NSString *)debugDescription diff --git a/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSyncMessage.m b/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSyncMessage.m index d1e87ab3a..d8b528417 100644 --- a/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSyncMessage.m +++ b/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSyncMessage.m @@ -11,11 +11,9 @@ NS_ASSUME_NONNULL_BEGIN @implementation OWSOutgoingSyncMessage -- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction +- (BOOL)shouldBeSaved { - // override superclass with no-op. - // - // There's no need to save this message, since it's not displayed to the user. + return NO; } - (BOOL)shouldSyncTranscript diff --git a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsRequestMessage.m b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsRequestMessage.m index 33a1f8d65..22d8ab3d3 100644 --- a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsRequestMessage.m +++ b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncGroupsRequestMessage.m @@ -31,11 +31,9 @@ NS_ASSUME_NONNULL_BEGIN return self; } -- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction +- (BOOL)shouldBeSaved { - // override superclass with no-op. - // - // There's no need to save this message, since it's not displayed to the user. + return NO; } - (BOOL)shouldSyncTranscript diff --git a/SignalServiceKit/src/Messages/Interactions/OWSDisappearingMessagesConfigurationMessage.m b/SignalServiceKit/src/Messages/Interactions/OWSDisappearingMessagesConfigurationMessage.m index d537488d8..12ef6ef2b 100644 --- a/SignalServiceKit/src/Messages/Interactions/OWSDisappearingMessagesConfigurationMessage.m +++ b/SignalServiceKit/src/Messages/Interactions/OWSDisappearingMessagesConfigurationMessage.m @@ -17,11 +17,9 @@ NS_ASSUME_NONNULL_BEGIN @implementation OWSDisappearingMessagesConfigurationMessage -- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction +- (BOOL)shouldBeSaved { - // override superclass with no-op. - // - // There's no need to save this message, since it's not displayed to the user. + return NO; } - (instancetype)initWithConfiguration:(OWSDisappearingMessagesConfiguration *)configuration thread:(TSThread *)thread diff --git a/SignalServiceKit/src/Messages/Interactions/OWSDynamicOutgoingMessage.m b/SignalServiceKit/src/Messages/Interactions/OWSDynamicOutgoingMessage.m index f6346d0b9..2e76352e1 100644 --- a/SignalServiceKit/src/Messages/Interactions/OWSDynamicOutgoingMessage.m +++ b/SignalServiceKit/src/Messages/Interactions/OWSDynamicOutgoingMessage.m @@ -36,11 +36,9 @@ NS_ASSUME_NONNULL_BEGIN return self; } -- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction +- (BOOL)shouldBeSaved { - // override superclass with no-op. - // - // There's no need to save this message, since it's not displayed to the user. + return NO; } - (NSData *)buildPlainTextData:(SignalRecipient *)recipient diff --git a/SignalServiceKit/src/Messages/Interactions/OWSEndSessionMessage.m b/SignalServiceKit/src/Messages/Interactions/OWSEndSessionMessage.m index 47fb467f8..e4db0ba18 100644 --- a/SignalServiceKit/src/Messages/Interactions/OWSEndSessionMessage.m +++ b/SignalServiceKit/src/Messages/Interactions/OWSEndSessionMessage.m @@ -1,5 +1,6 @@ -// Created by Michael Kirk on 11/3/16. -// Copyright © 2016 Open Whisper Systems. All rights reserved. +// +// Copyright (c) 2017 Open Whisper Systems. All rights reserved. +// #import "OWSEndSessionMessage.h" #import "OWSSignalServiceProtos.pb.h" @@ -8,11 +9,9 @@ NS_ASSUME_NONNULL_BEGIN @implementation OWSEndSessionMessage -- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction +- (BOOL)shouldBeSaved { - // override superclass with no-op. - // - // There's no need to save this message, since it's not displayed to the user. + return NO; } - (OWSSignalServiceProtosDataMessageBuilder *)dataMessageBuilder diff --git a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h index 842bf9574..f151e8a26 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h +++ b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.h @@ -148,6 +148,8 @@ typedef NS_ENUM(NSInteger, TSGroupMetaMessage) { - (OWSSignalServiceProtosAttachmentPointer *)buildAttachmentProtoForAttachmentId:(NSString *)attachmentId filename:(nullable NSString *)filename; +- (BOOL)shouldBeSaved; + #pragma mark - Update With... Methods - (void)updateWithMessageState:(TSOutgoingMessageState)messageState; diff --git a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m index 04a0fc70e..687ee2814 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m +++ b/SignalServiceKit/src/Messages/Interactions/TSOutgoingMessage.m @@ -198,8 +198,20 @@ NSString *const kTSOutgoingMessageSentRecipientAll = @"kTSOutgoingMessageSentRec return self; } +- (BOOL)shouldBeSaved +{ + return YES; +} + - (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction { + if (!self.shouldBeSaved) { + // There's no need to save this message, since it's not displayed to the user. + // + // Should we find a need to save this in the future, we need to exclude any non-serializable properties. + return; + } + if (!(self.groupMetaMessage == TSGroupMessageDeliver || self.groupMetaMessage == TSGroupMessageNone)) { DDLogDebug(@"%@ Skipping save for group meta message.", self.logTag); return; diff --git a/SignalServiceKit/src/Messages/OWSMessageSender.m b/SignalServiceKit/src/Messages/OWSMessageSender.m index f26bfa33e..35268a409 100644 --- a/SignalServiceKit/src/Messages/OWSMessageSender.m +++ b/SignalServiceKit/src/Messages/OWSMessageSender.m @@ -281,7 +281,7 @@ NSUInteger const OWSSendMessageOperationMaxRetries = 4; - (void)tryWithRemainingRetries:(NSUInteger)remainingRetries { // If the message has been deleted, abort send. - if (![TSOutgoingMessage fetchObjectWithUniqueID:self.message.uniqueId]) { + if (self.message.shouldBeSaved && ![TSOutgoingMessage fetchObjectWithUniqueID:self.message.uniqueId]) { DDLogInfo(@"%@ aborting message send; message deleted.", self.logTag); NSError *error = OWSErrorWithCodeDescription( OWSErrorCodeMessageDeletedBeforeSent, @"Message was deleted before it could be sent."); diff --git a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m index 597f77b8b..561865636 100644 --- a/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m +++ b/SignalServiceKit/src/Messages/OWSOutgoingCallMessage.m @@ -171,13 +171,9 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - TSYapDatabaseObject overrides -- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction +- (BOOL)shouldBeSaved { - // override superclass with no-op. - // - // There's no need to save this message, since it's not displayed to the user. - // - // Should we find a need to save this in the future, we need to exclude any non-serializable properties. + return NO; } - (NSString *)debugDescription diff --git a/SignalServiceKit/src/Messages/OWSOutgoingNullMessage.m b/SignalServiceKit/src/Messages/OWSOutgoingNullMessage.m index f80bf7060..b75056bcb 100644 --- a/SignalServiceKit/src/Messages/OWSOutgoingNullMessage.m +++ b/SignalServiceKit/src/Messages/OWSOutgoingNullMessage.m @@ -65,10 +65,9 @@ NS_ASSUME_NONNULL_BEGIN return NO; } -- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction +- (BOOL)shouldBeSaved { - // No-op as we don't want to actually display this as an outgoing message in our thread. - return; + return NO; } @end diff --git a/SignalServiceKit/src/Messages/OWSProfileKeyMessage.m b/SignalServiceKit/src/Messages/OWSProfileKeyMessage.m index 5e0bb7dce..914bf5f0e 100644 --- a/SignalServiceKit/src/Messages/OWSProfileKeyMessage.m +++ b/SignalServiceKit/src/Messages/OWSProfileKeyMessage.m @@ -12,11 +12,9 @@ NS_ASSUME_NONNULL_BEGIN @implementation OWSProfileKeyMessage -- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction +- (BOOL)shouldBeSaved { - // override superclass with no-op. - // - // There's no need to save this message, since it's not displayed to the user. + return NO; } - (BOOL)shouldSyncTranscript