Files
vapor-po/Sources/ViewControllerLive/Dependencies/DateFormatter.swift

54 lines
1.5 KiB
Swift

import Dependencies
import DependenciesMacros
import Foundation
public extension DependencyValues {
var dateFormatter: DateFormatterKey {
get { self[DateFormatterKey.self] }
set { self[DateFormatterKey.self] = newValue }
}
}
@DependencyClient
public struct DateFormatterKey: Sendable {
public var string: @Sendable (Date?) -> String = { _ in "N/A" }
}
extension DateFormatterKey: DependencyKey {
public static let testValue = Self()
public static var liveValue: DateFormatterKey {
.init(
string: { date in
guard let date else { return "N/A" }
let formatter = ISO8601DateFormatter()
formatter.timeZone = TimeZone(identifier: "UTC")
formatter.formatOptions = [.withFullDate]
return formatter.string(from: date)
}
)
}
}
// #if hasFeature(RetroactiveAttribute)
// extension DateFormatter: @retroactive DependencyKey {
//
// public static var liveValue: DateFormatter {
// let formatter = DateFormatter()
// formatter.dateStyle = .short
// return formatter
// }
// }
// #else
// extension DateFormatter: DependencyKey {
// public static var liveValue: DateFormatter {
// let formatter = ISO8601DateFormatter()
// formatter.locale = Locale(identifier: "en_US_POSIX")
// // formatter.dateFormat = "mm/dd/yyyy"
// formatter.formatOptions = [.withFullDate]
// formatter.timeZone = TimeZone(identifier: "UTC")
// return formatter
// }
// }
// #endif