Stabilize iOS/watchOS/tvOS apps and add cross-platform audit remediation
This commit is contained in:
@@ -79,8 +79,9 @@ struct Exercise: Identifiable, Codable, Equatable, Hashable {
|
||||
}
|
||||
|
||||
var extName: String {
|
||||
if side != nil && side!.count > 0 {
|
||||
var returnString = name + " - " + side!
|
||||
if let side = side,
|
||||
side.isEmpty == false {
|
||||
var returnString = name + " - " + side
|
||||
returnString = returnString.replacingOccurrences(of: "_", with: " ")
|
||||
return returnString.capitalized
|
||||
}
|
||||
|
||||
@@ -19,11 +19,15 @@ struct PlannedWorkout: Codable {
|
||||
case onDate = "on_date"
|
||||
case workout
|
||||
}
|
||||
|
||||
private static let plannedDateFormatter: DateFormatter = {
|
||||
let formatter = DateFormatter()
|
||||
formatter.dateFormat = "yyyy-MM-dd"
|
||||
formatter.locale = Locale(identifier: "en_US_POSIX")
|
||||
return formatter
|
||||
}()
|
||||
|
||||
var date: Date? {
|
||||
let df = DateFormatter()
|
||||
df.dateFormat = "yyyy-MM-dd"
|
||||
df.locale = Locale(identifier: "en_US_POSIX")
|
||||
return df.date(from: self.onDate)
|
||||
Self.plannedDateFormatter.date(from: onDate)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,37 @@ struct Workout: Codable, Identifiable, Equatable {
|
||||
case estimatedTime = "estimated_time"
|
||||
case allSupersetExecercise = "all_superset_exercise"
|
||||
}
|
||||
|
||||
private static let createdAtFormatter: DateFormatter = {
|
||||
let formatter = DateFormatter()
|
||||
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssX"
|
||||
formatter.locale = Locale(identifier: "en_US_POSIX")
|
||||
return formatter
|
||||
}()
|
||||
|
||||
init(id: Int,
|
||||
name: String,
|
||||
description: String? = nil,
|
||||
supersets: [Superset]? = nil,
|
||||
registeredUser: RegisteredUser? = nil,
|
||||
muscles: [String]? = nil,
|
||||
equipment: [String]? = nil,
|
||||
exercise_count: Int? = nil,
|
||||
createdAt: Date? = nil,
|
||||
estimatedTime: Double? = nil,
|
||||
allSupersetExecercise: [SupersetExercise]? = nil) {
|
||||
self.id = id
|
||||
self.name = name
|
||||
self.description = description
|
||||
self.supersets = supersets
|
||||
self.registeredUser = registeredUser
|
||||
self.muscles = muscles
|
||||
self.equipment = equipment
|
||||
self.exercise_count = exercise_count
|
||||
self.createdAt = createdAt
|
||||
self.estimatedTime = estimatedTime
|
||||
self.allSupersetExecercise = allSupersetExecercise
|
||||
}
|
||||
|
||||
init(from decoder: Decoder) throws {
|
||||
let container = try decoder.container(keyedBy: CodingKeys.self)
|
||||
@@ -46,15 +77,7 @@ struct Workout: Codable, Identifiable, Equatable {
|
||||
self.exercise_count = try container.decodeIfPresent(Int.self, forKey: .exercise_count)
|
||||
|
||||
let createdAtStr = try container.decodeIfPresent(String.self, forKey: .createdAt)
|
||||
if let createdAtStr = createdAtStr {
|
||||
let formatter = DateFormatter()
|
||||
formatter.locale = Locale(identifier: "en_US_POSIX")
|
||||
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
|
||||
let date = formatter.date(from: createdAtStr)
|
||||
self.createdAt = date
|
||||
} else {
|
||||
self.createdAt = nil
|
||||
}
|
||||
self.createdAt = createdAtStr.flatMap { Self.createdAtFormatter.date(from: $0) }
|
||||
|
||||
self.estimatedTime = try container.decodeIfPresent(Double.self, forKey: .estimatedTime)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user