Stabilize iOS/watchOS/tvOS apps and add cross-platform audit remediation

This commit is contained in:
Trey t
2026-02-11 12:54:40 -06:00
parent e40275e694
commit acce712261
77 changed files with 2940 additions and 765 deletions

View File

@@ -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
}

View File

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

View File

@@ -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)