From 1893ccac76164a1e808005d36fc6bcf62936c505 Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Wed, 14 Apr 2021 11:39:04 +1000 Subject: [PATCH] use TSIncomingMessage's serverTimastamp to make more sense --- .../Database/Storage+Messaging.swift | 3 --- SessionMessagingKit/Messages/Message.swift | 1 + .../Signal/TSIncomingMessage+Conversion.swift | 2 +- .../Messages/Signal/TSInteraction.h | 2 -- .../Messages/Signal/TSInteraction.m | 17 +++++++---------- .../Sending & Receiving/MessageReceiver.swift | 5 ++--- 6 files changed, 11 insertions(+), 19 deletions(-) diff --git a/SessionMessagingKit/Database/Storage+Messaging.swift b/SessionMessagingKit/Database/Storage+Messaging.swift index 852503f2d..ca4149fa0 100644 --- a/SessionMessagingKit/Database/Storage+Messaging.swift +++ b/SessionMessagingKit/Database/Storage+Messaging.swift @@ -42,9 +42,6 @@ extension Storage { } else { tsMessage = TSIncomingMessage.from(message, quotedMessage: quotedMessage, linkPreview: linkPreview, associatedWith: thread) } - if let serverTimestamp = message.receivedTimestamp, openGroupID != nil { - tsMessage.setServerTimestampToReceivedTimestamp(serverTimestamp) - } tsMessage.save(with: transaction) tsMessage.attachments(with: transaction).forEach { attachment in attachment.albumMessageId = tsMessage.uniqueId! diff --git a/SessionMessagingKit/Messages/Message.swift b/SessionMessagingKit/Messages/Message.swift index f39136b4a..5d7ab3137 100644 --- a/SessionMessagingKit/Messages/Message.swift +++ b/SessionMessagingKit/Messages/Message.swift @@ -10,6 +10,7 @@ public class Message : NSObject, NSCoding { // NSObject/NSCoding conformance is public var sender: String? public var groupPublicKey: String? public var openGroupServerMessageID: UInt64? + public var openGroupServerTimestamp: UInt64? public var ttl: UInt64 { 2 * 24 * 60 * 60 * 1000 } public var isSelfSendValid: Bool { false } diff --git a/SessionMessagingKit/Messages/Signal/TSIncomingMessage+Conversion.swift b/SessionMessagingKit/Messages/Signal/TSIncomingMessage+Conversion.swift index 48027531e..32916187e 100644 --- a/SessionMessagingKit/Messages/Signal/TSIncomingMessage+Conversion.swift +++ b/SessionMessagingKit/Messages/Signal/TSIncomingMessage+Conversion.swift @@ -19,7 +19,7 @@ public extension TSIncomingMessage { expiresInSeconds: !isOpenGroupMessage ? expiration : 0, // Ensure we don't ever expire open group messages quotedMessage: quotedMessage, linkPreview: linkPreview, - serverTimestamp: nil, + serverTimestamp: visibleMessage.openGroupServerTimestamp as NSNumber?, wasReceivedByUD: true ) result.openGroupServerMessageID = openGroupServerMessageID diff --git a/SessionMessagingKit/Messages/Signal/TSInteraction.h b/SessionMessagingKit/Messages/Signal/TSInteraction.h index d21b25555..1d67d12c0 100644 --- a/SessionMessagingKit/Messages/Signal/TSInteraction.h +++ b/SessionMessagingKit/Messages/Signal/TSInteraction.h @@ -41,8 +41,6 @@ NSString *NSStringFromOWSInteractionType(OWSInteractionType value); @property (nonatomic, readonly) uint64_t receivedAtTimestamp; @property (nonatomic, readonly) BOOL shouldUseServerTime; -- (void)setServerTimestampToReceivedTimestamp:(uint64_t)receivedAtTimestamp; - - (uint64_t)timestampForUI; - (NSDate *)receivedAtDate; diff --git a/SessionMessagingKit/Messages/Signal/TSInteraction.m b/SessionMessagingKit/Messages/Signal/TSInteraction.m index e7cc710cf..8e002d2f2 100644 --- a/SessionMessagingKit/Messages/Signal/TSInteraction.m +++ b/SessionMessagingKit/Messages/Signal/TSInteraction.m @@ -169,8 +169,8 @@ NSString *NSStringFromOWSInteractionType(OWSInteractionType value) - (uint64_t)timestampForUI { - if (_shouldUseServerTime) { - return _receivedAtTimestamp; + if ([self isKindOfClass:TSIncomingMessage.class] && ((TSIncomingMessage *)self).isOpenGroupMessage) { + return ((TSIncomingMessage *)self).serverTimestamp.unsignedLongLongValue; } return _timestamp; } @@ -180,14 +180,11 @@ NSString *NSStringFromOWSInteractionType(OWSInteractionType value) return self.timestamp; } -- (void)setServerTimestampToReceivedTimestamp:(uint64_t)receivedAtTimestamp -{ - _shouldUseServerTime = YES; - _receivedAtTimestamp = receivedAtTimestamp; -} - - (NSDate *)receivedAtDate { + if ([self isKindOfClass:TSIncomingMessage.class] && ((TSIncomingMessage *)self).isOpenGroupMessage) { + return [NSDate ows_dateWithMillisecondsSince1970:((TSIncomingMessage *)self).serverTimestamp.unsignedLongLongValue]; + } return [NSDate ows_dateWithMillisecondsSince1970:self.receivedAtTimestamp]; } @@ -228,8 +225,8 @@ NSString *NSStringFromOWSInteractionType(OWSInteractionType value) - (uint64_t)sortId { - if ([self isKindOfClass:TSMessage.class] && ((TSMessage *)self).isOpenGroupMessage) { - return self.receivedAtTimestamp; + if ([self isKindOfClass:TSIncomingMessage.class] && ((TSIncomingMessage *)self).isOpenGroupMessage) { + return ((TSIncomingMessage *)self).serverTimestamp.unsignedLongLongValue; } return self.timestamp; } diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift index 63a73a80f..a6a153445 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift @@ -145,10 +145,9 @@ public enum MessageReceiver { message.sender = sender message.recipient = userPublicKey message.sentTimestamp = envelope.timestamp + message.receivedTimestamp = NSDate.millisecondTimestamp() if (isOpenGroupMessage) { - message.receivedTimestamp = envelope.serverTimestamp - } else { - message.receivedTimestamp = NSDate.millisecondTimestamp() + message.openGroupServerTimestamp = envelope.serverTimestamp } message.groupPublicKey = groupPublicKey message.openGroupServerMessageID = openGroupMessageServerID