Cuando usamos esta arquitectura, los viewmodel cargan como dependencias los use cases que va a utilizar la ventana a la que están vinculados.
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
class UsersScreenViewModel(
private val getUsersUseCase: GetUsersUseCase,
private val deleteUserUseCase: DeleteUserUseCase
) : ViewModel() {
// La lista de usuarios se carga usando el getUsersUseCase
private var _users = getUsersUseCase()
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), emptyList())
val users: StateFlow<List<User>> = _users
fun removeProduct(id: String) {
viewModelScope.launch {
// Invoca el deleteUserUseCase
deleteUserUseCase(id)
}
}
}