package org.terst.nav.ui import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import org.terst.nav.sensors.WindData import org.terst.nav.track.TrackPoint import org.terst.nav.track.TrackRepository class MainViewModel { private val trackRepository = TrackRepository() private var latestWind: WindData? = null private val _trackPoints = MutableStateFlow>(emptyList()) val trackPoints: StateFlow> = _trackPoints fun startTrack() { trackRepository.startTrack() _trackPoints.value = emptyList() } fun stopTrack() { trackRepository.stopTrack() } fun updateWind(wind: WindData) { latestWind = wind } fun addGpsPoint(lat: Double, lon: Double, sogKnots: Double, cogDeg: Double) { val wind = latestWind val point = TrackPoint( lat = lat, lon = lon, sogKnots = sogKnots, cogDeg = cogDeg, windSpeedKnots = wind?.windSpeed ?: 0.0, windAngleDeg = wind?.windAngle ?: 0.0, isTrueWind = wind?.isTrueWind ?: false, timestampMs = System.currentTimeMillis() ) if (trackRepository.addPoint(point)) { _trackPoints.value = trackRepository.getPoints() } } }