From 727ab0b554263cef79f0edf70b640bfa467c5e82 Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Mon, 16 Oct 2023 18:27:48 -0500 Subject: [PATCH] =?UTF-8?q?Limits=20relative=20date=20strings=20to=20?= =?UTF-8?q?=E2=80=9CYesterday=E2=80=9D=20and=20=E2=80=9CToday=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Any relative date older than “Yesterday” will be displayed as absolute date instead. --- AltStore/App Detail/AppContentViewController.swift | 9 +-------- AltStore/My Apps/MyAppsViewController.swift | 9 +-------- AltStoreCore/Extensions/Date+RelativeDate.swift | 11 +++++++++-- 3 files changed, 11 insertions(+), 18 deletions(-) diff --git a/AltStore/App Detail/AppContentViewController.swift b/AltStore/App Detail/AppContentViewController.swift index b337912b..ac79a372 100644 --- a/AltStore/App Detail/AppContentViewController.swift +++ b/AltStore/App Detail/AppContentViewController.swift @@ -31,13 +31,6 @@ final class AppContentViewController: UITableViewController private lazy var screenshotsDataSource = self.makeScreenshotsDataSource() - private lazy var dateFormatter: DateFormatter = { - let dateFormatter = DateFormatter() - dateFormatter.dateStyle = .medium - dateFormatter.timeStyle = .none - return dateFormatter - }() - private lazy var byteCountFormatter: ByteCountFormatter = { let formatter = ByteCountFormatter() return formatter @@ -84,7 +77,7 @@ final class AppContentViewController: UITableViewController { self.versionDescriptionTextView.text = version.localizedDescription self.versionLabel.text = String(format: NSLocalizedString("Version %@", comment: ""), version.localizedVersion) - self.versionDateLabel.text = Date().relativeDateString(since: version.date, dateFormatter: self.dateFormatter) + self.versionDateLabel.text = Date().relativeDateString(since: version.date) self.sizeLabel.text = self.byteCountFormatter.string(fromByteCount: version.size) } else diff --git a/AltStore/My Apps/MyAppsViewController.swift b/AltStore/My Apps/MyAppsViewController.swift index 56a1330c..f3724691 100644 --- a/AltStore/My Apps/MyAppsViewController.swift +++ b/AltStore/My Apps/MyAppsViewController.swift @@ -63,13 +63,6 @@ class MyAppsViewController: UICollectionViewController, PeekPopPreviewing // Cache private var cachedUpdateSizes = [String: CGSize]() - private lazy var dateFormatter: DateFormatter = { - let dateFormatter = DateFormatter() - dateFormatter.dateStyle = .medium - dateFormatter.timeStyle = .none - return dateFormatter - }() - required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) @@ -244,7 +237,7 @@ private extension MyAppsViewController cell.bannerView.configure(for: app) - let versionDate = Date().relativeDateString(since: latestSupportedVersion.date, dateFormatter: self.dateFormatter) + let versionDate = Date().relativeDateString(since: latestSupportedVersion.date) cell.bannerView.subtitleLabel.text = versionDate let appName: String diff --git a/AltStoreCore/Extensions/Date+RelativeDate.swift b/AltStoreCore/Extensions/Date+RelativeDate.swift index 62b7251b..ec7becee 100644 --- a/AltStoreCore/Extensions/Date+RelativeDate.swift +++ b/AltStoreCore/Extensions/Date+RelativeDate.swift @@ -10,6 +10,13 @@ import Foundation public extension Date { + private static let mediumDateFormatter: DateFormatter = { + let dateFormatter = DateFormatter() + dateFormatter.dateStyle = .medium + dateFormatter.timeStyle = .none + return dateFormatter + }() + func numberOfCalendarDays(since date: Date) -> Int { let today = Calendar.current.startOfDay(for: self) @@ -19,15 +26,15 @@ public extension Date return components.day! } - func relativeDateString(since date: Date, dateFormatter: DateFormatter) -> String + func relativeDateString(since date: Date, dateFormatter: DateFormatter? = nil) -> String { + let dateFormatter = dateFormatter ?? Date.mediumDateFormatter let numberOfDays = self.numberOfCalendarDays(since: date) switch numberOfDays { case 0: return NSLocalizedString("Today", comment: "") case 1: return NSLocalizedString("Yesterday", comment: "") - case 2...7: return String(format: NSLocalizedString("%@ days ago", comment: ""), NSNumber(value: numberOfDays)) default: return dateFormatter.string(from: date) } }