From c5d1047166b23d6c090f5b34ec94bd81e309e77c Mon Sep 17 00:00:00 2001
From: Mikunj <mikunj@live.com.au>
Date: Fri, 15 Nov 2019 16:31:42 +1100
Subject: [PATCH] Fix self sync messages.

Timestamps were not matching and thus messages were always showing `Bad encrypted message`. Signal upstream had fixed this already so i just got the upstream code and modified it to fit our current code.
---
 .../OWSOutgoingSentMessageTranscript.m        |  2 +-
 .../DeviceSyncing/OWSOutgoingSyncMessage.h    |  2 ++
 .../DeviceSyncing/OWSOutgoingSyncMessage.m    | 21 +++++++++++++++++++
 3 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSentMessageTranscript.m b/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSentMessageTranscript.m
index f8dc95cf4..9b9181da7 100644
--- a/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSentMessageTranscript.m
+++ b/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSentMessageTranscript.m
@@ -42,7 +42,7 @@ NS_ASSUME_NONNULL_BEGIN
 
 - (instancetype)initWithOutgoingMessage:(TSOutgoingMessage *)message isRecipientUpdate:(BOOL)isRecipientUpdate
 {
-    self = [super init];
+    self = [super initWithTimestamp:message.timestamp];
 
     if (!self) {
         return self;
diff --git a/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSyncMessage.h b/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSyncMessage.h
index 984cde4ea..926a5fa87 100644
--- a/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSyncMessage.h
+++ b/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSyncMessage.h
@@ -25,6 +25,8 @@ NS_ASSUME_NONNULL_BEGIN
                                     contactShare:(nullable OWSContact *)contactShare
                                      linkPreview:(nullable OWSLinkPreview *)linkPreview NS_UNAVAILABLE;
 
+- (instancetype)initWithTimestamp:(uint64_t)timestamp;
+
 - (instancetype)init NS_DESIGNATED_INITIALIZER;
 - (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
 
diff --git a/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSyncMessage.m b/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSyncMessage.m
index e8073468a..f510f6e34 100644
--- a/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSyncMessage.m
+++ b/SignalServiceKit/src/Messages/DeviceSyncing/OWSOutgoingSyncMessage.m
@@ -39,6 +39,27 @@ NS_ASSUME_NONNULL_BEGIN
     return self;
 }
 
+- (instancetype)initWithTimestamp:(uint64_t)timestamp
+{
+    self = [super initOutgoingMessageWithTimestamp:timestamp
+                                          inThread:nil
+                                       messageBody:nil
+                                     attachmentIds:[NSMutableArray new]
+                                  expiresInSeconds:0
+                                   expireStartedAt:0
+                                    isVoiceMessage:NO
+                                  groupMetaMessage:TSGroupMetaMessageUnspecified
+                                     quotedMessage:nil
+                                      contactShare:nil
+                                       linkPreview:nil];
+
+    if (!self) {
+        return self;
+    }
+
+    return self;
+}
+
 - (BOOL)shouldBeSaved
 {
     return NO;