Files
WerkoutIOS/iphone/Werkout_ios/JSON/PreviewData.swift

64 lines
1.9 KiB
Swift

//
// PreviewData.swift
// Werkout_ios
//
// Created by Trey Tartt on 6/14/23.
//
import Foundation
class PreviewData {
private class func decodeFromBundle<T: Decodable>(_ fileName: String,
as type: T.Type) -> T? {
guard let filepath = Bundle.main.path(forResource: fileName, ofType: "json"),
let data = try? Data(NSData(contentsOfFile: filepath)) else {
return nil
}
return try? JSONDecoder().decode(T.self, from: data)
}
class func workout() -> Workout {
if let workout = decodeFromBundle("WorkoutDetail", as: Workout.self) {
return workout
}
if let firstWorkout = allWorkouts().first {
return firstWorkout
}
return Workout(id: -1, name: "Unavailable")
}
class func allWorkouts() -> [Workout] {
decodeFromBundle("AllWorkouts", as: [Workout].self) ?? []
}
class func parseExercises() -> [Exercise] {
decodeFromBundle("Exercises", as: [Exercise].self) ?? []
}
class func parseEquipment() -> [Equipment] {
decodeFromBundle("Equipment", as: [Equipment].self) ?? []
}
class func parseMuscle() -> [Muscle] {
decodeFromBundle("AllMuscles", as: [Muscle].self) ?? []
}
class func parseRegisterdUser() -> RegisteredUser {
decodeFromBundle("RegisteredUser", as: RegisteredUser.self) ??
RegisteredUser(id: -1,
firstName: nil,
lastName: nil,
image: nil,
nickName: nil,
token: nil,
email: nil,
hasNSFWToggle: nil)
}
class func parseCompletedWorkouts() -> [CompletedWorkout] {
decodeFromBundle("CompletedWorkouts", as: [CompletedWorkout].self) ?? []
}
}