40 lines
1.1 KiB
Swift
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)")
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|