From 1fb4e1d897b8bda22498270da41bcaf2446f2c2b Mon Sep 17 00:00:00 2001 From: Nora Trapp Date: Thu, 11 Jun 2020 13:14:15 -0700 Subject: [PATCH] Use sent timestamp for date headers --- .../Cells/OWSDateHeaderCell.swift | 2 +- .../ConversationView/ConversationViewModel.m | 19 ++++++++----------- .../DateHeaderInteraction.swift | 3 +-- SignalServiceKit/src/Util/Date+SSK.swift | 6 +++++- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Signal/src/ViewControllers/ConversationView/Cells/OWSDateHeaderCell.swift b/Signal/src/ViewControllers/ConversationView/Cells/OWSDateHeaderCell.swift index 1bb539d538..b3de365737 100644 --- a/Signal/src/ViewControllers/ConversationView/Cells/OWSDateHeaderCell.swift +++ b/Signal/src/ViewControllers/ConversationView/Cells/OWSDateHeaderCell.swift @@ -64,7 +64,7 @@ public class DateHeaderCell: ConversationViewCell { titleLabel.font = .ows_dynamicTypeBody2 titleLabel.textColor = Theme.primaryTextColor - let date = viewItem.interaction.receivedAtDate() + let date = Date(millisecondsSince1970: viewItem.interaction.timestamp) let dateString = DateUtil.formatDate(forConversationDateBreaks: date) titleLabel.text = dateString.localizedUppercase diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m b/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m index 55b81d24e0..147e1f05ea 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m @@ -1137,19 +1137,17 @@ NS_ASSUME_NONNULL_BEGIN __block BOOL hasPlacedUnreadIndicator = NO; __block BOOL shouldShowDateOnNextViewItem = YES; - __block uint64_t previousViewItemReceivedAtTimestamp = 0; + __block uint64_t previousViewItemTimestamp = 0; void (^addHeaderViewItemIfNecessary)(id) = ^(id viewItem) { - uint64_t viewItemReceivedAtTimestamp = viewItem.interaction.receivedAtTimestamp; - OWSAssertDebug(viewItemReceivedAtTimestamp > 0); + uint64_t viewItemTimestamp = viewItem.interaction.timestamp; + OWSAssertDebug(viewItemTimestamp > 0); BOOL shouldShowDate = NO; - if (previousViewItemReceivedAtTimestamp == 0) { + if (previousViewItemTimestamp == 0) { // Only show for the first item if the date is not today shouldShowDateOnNextViewItem - = ![DateUtil dateIsToday:[NSDate ows_dateWithMillisecondsSince1970:viewItemReceivedAtTimestamp]]; - } else if (![DateUtil isSameDayWithTimestamp:previousViewItemReceivedAtTimestamp - timestamp:viewItemReceivedAtTimestamp] - && viewItemReceivedAtTimestamp > previousViewItemReceivedAtTimestamp) { + = ![DateUtil dateIsToday:[NSDate ows_dateWithMillisecondsSince1970:viewItemTimestamp]]; + } else if (![DateUtil isSameDayWithTimestamp:previousViewItemTimestamp timestamp:viewItemTimestamp]) { shouldShowDateOnNextViewItem = YES; } @@ -1170,8 +1168,7 @@ NS_ASSUME_NONNULL_BEGIN shouldShowDate:shouldShowDate]; } else if (shouldShowDate) { interaction = [[OWSDateHeaderInteraction alloc] initWithThread:self.thread - timestamp:viewItem.interaction.timestamp - receivedAtTimestamp:viewItem.interaction.receivedAtTimestamp]; + timestamp:viewItem.interaction.timestamp]; } if (interaction) { @@ -1180,7 +1177,7 @@ NS_ASSUME_NONNULL_BEGIN [viewItems addObject:headerViewItem]; } - previousViewItemReceivedAtTimestamp = viewItemReceivedAtTimestamp; + previousViewItemTimestamp = viewItemTimestamp; }; __block BOOL hasError = NO; diff --git a/Signal/src/ViewControllers/ConversationView/DateHeaderInteraction.swift b/Signal/src/ViewControllers/ConversationView/DateHeaderInteraction.swift index 7002e87dbf..95968c542e 100644 --- a/Signal/src/ViewControllers/ConversationView/DateHeaderInteraction.swift +++ b/Signal/src/ViewControllers/ConversationView/DateHeaderInteraction.swift @@ -30,10 +30,9 @@ public class DateHeaderInteraction: TSInteraction { } @objc - public init(thread: TSThread, timestamp: UInt64, receivedAtTimestamp: UInt64) { + public init(thread: TSThread, timestamp: UInt64) { super.init(uniqueId: "DateHeader_\(timestamp)", timestamp: timestamp, - receivedAtTimestamp: receivedAtTimestamp, thread: thread) } diff --git a/SignalServiceKit/src/Util/Date+SSK.swift b/SignalServiceKit/src/Util/Date+SSK.swift index b6eaea8085..2e3cfb808b 100644 --- a/SignalServiceKit/src/Util/Date+SSK.swift +++ b/SignalServiceKit/src/Util/Date+SSK.swift @@ -1,5 +1,5 @@ // -// Copyright (c) 2019 Open Whisper Systems. All rights reserved. +// Copyright (c) 2020 Open Whisper Systems. All rights reserved. // import Foundation @@ -19,4 +19,8 @@ public extension Date { static func ows_millisecondTimestamp() -> UInt64 { return NSDate.ows_millisecondTimeStamp() } + + init(millisecondsSince1970: UInt64) { + self = NSDate.ows_date(withMillisecondsSince1970: millisecondsSince1970) as Date + } }