/** * TrackerMap * Copyright (C) 2021-2022 Iván Ávalos , Henoch Ojeda * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ 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.models.Command import mx.trackermap.TrackerMap.controllers.CommandsController import org.koin.core.component.KoinComponent import org.koin.core.component.inject @DelicateCoroutinesApi class UnitCommandsViewModel : ViewModel(), KoinComponent { private val commandsController: CommandsController by inject() var commands = MutableLiveData>() private var selectedCommand: Command? = null private var deviceId: Int? = null fun fetchCommands(deviceId: Int?) { this.deviceId = deviceId deviceId?.let { viewModelScope.launch { val commands = commandsController.fetchCommands(it) 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") selectedCommand?.let { viewModelScope.launch { val command = commandsController.sendCommand(it) Log.d("UnitCommandsVM", "Command sent - $command") } } } }