package mx.trackermap.TrackerMap.android.details.commands import android.util.Log import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.launch import mx.trackermap.TrackerMap.client.apis.CommandsApi import mx.trackermap.TrackerMap.client.models.Command import org.koin.core.component.KoinComponent @DelicateCoroutinesApi class UnitCommandsViewModel( private val commandsApi: CommandsApi ) : ViewModel(), KoinComponent { var commands = MutableLiveData>() private var selectedCommand: Command? = null private var deviceId: Int? = null fun fetchCommands(deviceId: Int?) { this.deviceId = deviceId viewModelScope.launch { val commands = commandsApi.commandsGet(deviceId = deviceId) this@UnitCommandsViewModel.commands.value = commands.toList() } } fun selectCommand(index: Int) { val command = commands.value?.get(index) Log.d("UnitCommandsVM", "Selected Command - $command") command?.deviceId = this.deviceId this.selectedCommand = command } fun sendCommand() { if (selectedCommand == null) { Log.d("UnitCommandsVM", "No Command Selection") return } Log.d("UnitCommandsVM", "Sending command - $selectedCommand") viewModelScope.launch { val command = commandsApi.commandsSendPost(selectedCommand!!) Log.d("UnitCommandsVM", "Command sent - $command") } } }