diff --git a/ElementX/Sources/Other/Extensions/Date.swift b/ElementX/Sources/Other/Extensions/Date.swift index 1e292c39ec..f37a95aeb5 100644 --- a/ElementX/Sources/Other/Extensions/Date.swift +++ b/ElementX/Sources/Other/Extensions/Date.swift @@ -26,7 +26,8 @@ extension Date { return formatted(date: .omitted, time: .shortened) } else if calendar.isDateInYesterday(self) { // Simply "Yesterday" if it was yesterday. - return formatted(Date.RelativeFormatStyle(presentation: .named, capitalizationContext: .beginningOfSentence)) + guard let yesterday = Calendar.current.date(byAdding: .day, value: -1, to: Date()) else { fatalError() } + return yesterday.formatted(Date.RelativeFormatStyle(presentation: .named, capitalizationContext: .beginningOfSentence)) } else if let sixDaysAgo = calendar.date(byAdding: .day, value: -6, to: calendar.startOfDay(for: .now)), sixDaysAgo <= self { // The named day if it was in the last 6 days. diff --git a/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactory.swift b/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactory.swift index b8137ba00b..1ef15d3229 100644 --- a/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactory.swift +++ b/ElementX/Sources/Services/Timeline/TimelineItems/RoomTimelineItemFactory.swift @@ -484,7 +484,7 @@ struct RoomTimelineItemFactory: RoomTimelineItemFactoryProtocol { return firstTimestamp > secondTimestamp } .map { key, receipt in - ReadReceipt(userID: key, formattedTimestamp: receipt.dateTimestamp?.formatted(date: .omitted, time: .shortened)) + ReadReceipt(userID: key, formattedTimestamp: receipt.dateTimestamp?.formattedMinimal()) } } diff --git a/UnitTests/Sources/DateTests.swift b/UnitTests/Sources/DateTests.swift index 9dced63f93..e3ce8a9ac7 100644 --- a/UnitTests/Sources/DateTests.swift +++ b/UnitTests/Sources/DateTests.swift @@ -31,6 +31,9 @@ class DateTests: XCTestCase { let yesterday = calendar.date(byAdding: .hour, value: 1, to: startOfYesterday)! XCTAssertEqual(yesterday.formattedMinimal(), yesterday.formatted(Date.RelativeFormatStyle(presentation: .named, capitalizationContext: .beginningOfSentence))) + let nearYesterday = calendar.date(byAdding: DateComponents(hour: -10), to: today)! + XCTAssertEqual(nearYesterday.formattedMinimal(), yesterday.formatted(Date.RelativeFormatStyle(presentation: .named, capitalizationContext: .beginningOfSentence))) + let threeDaysAgo = calendar.date(byAdding: .day, value: -3, to: startOfToday)! XCTAssertEqual(threeDaysAgo.formattedMinimal(), threeDaysAgo.formatted(.dateTime.weekday(.wide))) diff --git a/changelog.d/2679.bugfix b/changelog.d/2679.bugfix new file mode 100644 index 0000000000..ddd1f90389 --- /dev/null +++ b/changelog.d/2679.bugfix @@ -0,0 +1 @@ +Timestamps in room list inconsistently use absolute and relative formatting \ No newline at end of file