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>)