Files
MLBApp/mlbTVOS/ViewModels/GameCenterViewModel.swift
2026-03-26 15:37:31 -05:00

46 lines
1.0 KiB
Swift

import Foundation
import Observation
@Observable
@MainActor
final class GameCenterViewModel {
var feed: LiveGameFeed?
var isLoading = false
var errorMessage: String?
var lastUpdated: Date?
private let statsAPI = MLBStatsAPI()
func watch(game: Game) async {
guard let gamePk = game.gamePk else {
errorMessage = "No live game feed is available for this matchup."
return
}
while !Task.isCancelled {
await refresh(gamePk: gamePk)
let liveState = feed?.gameData.status?.abstractGameState == "Live"
if !liveState {
break
}
try? await Task.sleep(for: .seconds(12))
}
}
func refresh(gamePk: String) async {
isLoading = true
errorMessage = nil
do {
feed = try await statsAPI.fetchGameFeed(gamePk: gamePk)
lastUpdated = Date()
} catch {
errorMessage = "Failed to load game center."
}
isLoading = false
}
}