Skip to content

Commit

Permalink
Merge pull request #1885 from anyproto/ios-3275-update-date-formats
Browse files Browse the repository at this point in the history
iOS-3275 Version history | Update date formats
  • Loading branch information
joe-pusya authored Aug 8, 2024
2 parents e81c0eb + b3c38ab commit 3b2e84b
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 3b2e84b

Please sign in to comment.