Coverage Summary for Class: MainState (com.javiersc.samples.features.main)
Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
MainState |
0%
(0/1)
|
0%
(0/1)
|
|
0%
(0/1)
|
0%
(0/12)
|
| package com.javiersc.samples.features.main |
| |
| import androidx.compose.runtime.Composable |
| import androidx.compose.runtime.collectAsState |
| import androidx.compose.runtime.getValue |
| import androidx.compose.runtime.mutableStateOf |
| import androidx.compose.runtime.remember |
| import androidx.compose.runtime.setValue |
| import com.javiersc.kaari.viewmodel.KaariViewModel |
| import com.javiersc.samples.strategies.characters.AddCharacter |
| import com.javiersc.samples.strategies.characters.Character |
| import com.javiersc.samples.strategies.characters.GetCharacters |
| import kotlinx.coroutines.CoroutineScope |
| |
| class MainViewModel( |
| scope: CoroutineScope, |
| private val getCharacters: GetCharacters, |
| private val addCharacter: AddCharacter, |
| ) : KaariViewModel<MainEffect, MainState>(scope) { |
| |
| @Composable |
| override fun state(): MainState { |
| var isLoading: Boolean by remember { mutableStateOf(false) } |
| val characters: List<Character> by getCharacters().collectAsState(emptyList()) |
| |
| CollectedEffect { effect: MainEffect -> |
| when (effect) { |
| is MainEffect.AddCharacter -> { |
| isLoading = true |
| addCharacter(effect.character) |
| isLoading = false |
| } |
| } |
| } |
| return MainState(isLoading, characters) |
| } |
| } |
| |
| sealed class MainEffect { |
| |
| data class AddCharacter(val character: Character) : MainEffect() |
| } |
| |
| data class MainState(val isLoading: Boolean, val characters: List<Character>) |