From b3c38ab56a5018815b65aa81a382e40ce6ac8771 Mon Sep 17 00:00:00 2001 From: Anna Zakharova Date: Wed, 7 Aug 2024 13:45:10 +0100 Subject: [PATCH] IOS-3275 Update date formats --- .../History/VersionHistoryDataBuilder.swift | 18 +++---------- .../History/VersionHistoryDateFormatter.swift | 27 ++++++++++++++++--- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/Anytype/Sources/PresentationLayer/TextEditor/EditorPage/Views/Settings/History/VersionHistoryDataBuilder.swift b/Anytype/Sources/PresentationLayer/TextEditor/EditorPage/Views/Settings/History/VersionHistoryDataBuilder.swift index 0e3a4b56d3..5ae541dd16 100644 --- a/Anytype/Sources/PresentationLayer/TextEditor/EditorPage/Views/Settings/History/VersionHistoryDataBuilder.swift +++ b/Anytype/Sources/PresentationLayer/TextEditor/EditorPage/Views/Settings/History/VersionHistoryDataBuilder.swift @@ -11,19 +11,13 @@ protocol VersionHistoryDataBuilderProtocol { final class VersionHistoryDataBuilder: VersionHistoryDataBuilderProtocol { - private let dateFormatter = VersionHistoryDateFormatter() + private let versionDateFormatter = VersionHistoryDateFormatter() private let timeFormatter: DateFormatter = { let dateFormatter = DateFormatter() dateFormatter.dateStyle = .none dateFormatter.timeStyle = .short return dateFormatter }() - private let dateTimeFormatter: DateFormatter = { - let dateFormatter = DateFormatter() - dateFormatter.dateStyle = .medium - dateFormatter.timeStyle = .short - return dateFormatter - }() nonisolated init() { } @@ -49,7 +43,7 @@ final class VersionHistoryDataBuilder: VersionHistoryDataBuilderProtocol { for version in versions { if let lastVersion, lastVersion.authorID == version.authorID { let sameVersion = lastVersion.id == version.id - let sameMinute = date( + let sameMinute = versionDateFormatter.currentDate( buildDate(for: lastVersion), isEqualToMinutes: buildDate(for: version) ) @@ -121,12 +115,12 @@ final class VersionHistoryDataBuilder: VersionHistoryDataBuilderProtocol { private func buildDateString(for version: VersionHistory) -> String { let date = buildDate(for: version) - return dateFormatter.localizedString(for: date) + return versionDateFormatter.localizedDateString(for: date) } private func buildDateTimeString(for version: VersionHistory) -> String { let date = buildDate(for: version) - return dateTimeFormatter.string(from: date) + return versionDateFormatter.dateTimeString(for: date) } private func buildTimeString(for version: VersionHistory) -> String { @@ -138,10 +132,6 @@ final class VersionHistoryDataBuilder: VersionHistoryDataBuilderProtocol { let timeInterval = Double(version.time) return Date(timeIntervalSince1970: timeInterval) } - - private func date(_ date1: Date, isEqualToMinutes date2: Date) -> Bool { - dateTimeFormatter.calendar.isDate(date1, equalTo: date2, toGranularity: .minute) - } } extension Container { diff --git a/Anytype/Sources/PresentationLayer/TextEditor/EditorPage/Views/Settings/History/VersionHistoryDateFormatter.swift b/Anytype/Sources/PresentationLayer/TextEditor/EditorPage/Views/Settings/History/VersionHistoryDateFormatter.swift index 3f4867920c..5777f01df1 100644 --- a/Anytype/Sources/PresentationLayer/TextEditor/EditorPage/Views/Settings/History/VersionHistoryDateFormatter.swift +++ b/Anytype/Sources/PresentationLayer/TextEditor/EditorPage/Views/Settings/History/VersionHistoryDateFormatter.swift @@ -4,12 +4,10 @@ final class VersionHistoryDateFormatter { private let dateFormatter: DateFormatter = { let dateFormatter = DateFormatter() - dateFormatter.dateStyle = .medium - dateFormatter.timeStyle = .none return dateFormatter }() - func localizedString(for date: Date) -> String { + func localizedDateString(for date: Date) -> String { let date = dateFormatter.calendar.startOfDay(for: date) let todayDate = dateFormatter.calendar.startOfDay(for: Date()) @@ -25,7 +23,30 @@ final class VersionHistoryDateFormatter { case 1: return Loc.yesterday default: + if currentDate(date, isEqualToYears: todayDate) { + dateFormatter.setLocalizedDateFormatFromTemplate("MMMM dd") + } else { + dateFormatter.setLocalizedDateFormatFromTemplate("MMMM dd YYYY") + } return dateFormatter.string(from: date) } } + + func dateTimeString(for date: Date) -> String { + if currentDate(date, isEqualToYears: Date()) { + dateFormatter.setLocalizedDateFormatFromTemplate("MMMM dd HH:mm") + } else { + dateFormatter.setLocalizedDateFormatFromTemplate("MMMM dd YYYY HH:mm") + } + + return dateFormatter.string(from: date) + } + + func currentDate(_ date1: Date, isEqualToMinutes date2: Date) -> Bool { + dateFormatter.calendar.isDate(date1, equalTo: date2, toGranularity: .minute) + } + + private func currentDate(_ date1: Date, isEqualToYears date2: Date) -> Bool { + dateFormatter.calendar.isDate(date1, equalTo: date2, toGranularity: .year) + } }