Skip to content

Commit

Permalink
IOS-3275 Update date formats
Browse files Browse the repository at this point in the history
  • Loading branch information
joe-pusya committed Aug 7, 2024
1 parent 2a7096d commit b3c38ab
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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() { }

Expand All @@ -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)
)
Expand Down Expand Up @@ -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 {
Expand All @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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())

Expand All @@ -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)
}
}

0 comments on commit b3c38ab

Please sign in to comment.