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