Files
WerkoutIOS/iphone/Werkout_ios/Views/WorkoutDetail/WorkoutDetailViewModel.swift
2024-06-18 12:03:56 -05:00

40 lines
1.1 KiB
Swift

//
// MainViewViewModel.swift
// Werkout_ios
//
// Created by Trey Tartt on 6/14/23.
//
import Combine
import Foundation
class WorkoutDetailViewModel: ObservableObject {
enum WorkoutDetailViewModelStatus {
case loading
case showWorkout(Workout)
}
@Published var status: WorkoutDetailViewModelStatus
let isPreview: Bool
init(workout: Workout, status: WorkoutDetailViewModelStatus? = nil, isPreview: Bool) {
self.status = .loading
self.isPreview = isPreview
if let passedStatus = status {
self.status = passedStatus
} else {
WorkoutDetailFetchable(workoutID: workout.id).fetch(completion: { result in
switch result {
case .success(let model):
DispatchQueue.main.async {
self.status = .showWorkout(model)
}
case .failure(let failure):
fatalError("failed \(failure.localizedDescription)")
}
})
}
}
}