package tab.list import cafe.adriel.voyager.core.model.StateScreenModel import data.EGroup import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.launch import kotlinx.serialization.json.Json import org.jetbrains.compose.resources.ExperimentalResourceApi import veganenumbers.composeapp.generated.resources.Res.readBytes class ListScreenModel : StateScreenModel(State.Loading) { sealed class State { object Loading : State() data class Result(val eNumbers: List) : State() } /** * Reads JSON file containing all e numbers * @return List of grouped E Numbers in `EGroup` type */ @OptIn(ExperimentalResourceApi::class) suspend fun getENumbers() { coroutineScope { launch { mutableState.value = State.Loading val bytes = readBytes("files/enumbers.json") val eNumbers = Json.decodeFromString>(bytes.decodeToString()) mutableState.value = State.Result(eNumbers = eNumbers) } } } }