@@ -21,7 +21,7 @@ import androidx.lifecycle.ViewModel
21
21
import androidx.lifecycle.viewModelScope
22
22
import co.pokeapi.pokekotlin.PokeApi
23
23
import co.pokeapi.pokekotlin.demoapp.util.ioDispatcher
24
- import co.pokeapi.pokekotlin.model.NamedApiResource
24
+ import co.pokeapi.pokekotlin.model.Handle
25
25
import co.pokeapi.pokekotlin.model.PokemonVariety
26
26
import coil3.compose.AsyncImage
27
27
import kotlinx.coroutines.launch
@@ -36,13 +36,13 @@ sealed interface LoadingStatus<out T> {
36
36
data object Loading : LoadingStatus <Nothing >
37
37
}
38
38
39
- typealias PokemonListStatus = LoadingStatus <List <NamedApiResource >>
39
+ typealias PokemonListStatus = LoadingStatus <List <Handle . Named < PokemonVariety > >>
40
40
41
41
typealias PokemonListItemStatus = LoadingStatus <PokemonVariety >
42
42
43
43
class PokemonListScreenViewModel (private val api : PokeApi ) : ViewModel() {
44
44
val summaries = mutableStateOf<PokemonListStatus >(LoadingStatus .Loading )
45
- val details = mutableStateMapOf<NamedApiResource , PokemonListItemStatus >()
45
+ val details = mutableStateMapOf<Handle < PokemonVariety > , PokemonListItemStatus > ()
46
46
47
47
init {
48
48
loadPokemonList()
@@ -65,7 +65,7 @@ class PokemonListScreenViewModel(private val api: PokeApi) : ViewModel() {
65
65
}
66
66
}
67
67
68
- fun loadPokemonDetails (pokemon : NamedApiResource ) {
68
+ fun loadPokemonDetails (pokemon : Handle < PokemonVariety > ) {
69
69
if (details[pokemon] == LoadingStatus .Loading || details[pokemon] is LoadingStatus .Success )
70
70
return // Already loading or loaded
71
71
@@ -127,7 +127,10 @@ fun PokemonListScreen(viewModel: PokemonListScreenViewModel = koinViewModel()) {
127
127
}
128
128
129
129
@Composable
130
- private fun PokemonListItem (viewModel : PokemonListScreenViewModel , item : NamedApiResource ) {
130
+ private fun PokemonListItem (
131
+ viewModel : PokemonListScreenViewModel ,
132
+ item : Handle .Named <PokemonVariety >,
133
+ ) {
131
134
LaunchedEffect (item) { viewModel.loadPokemonDetails(item) }
132
135
133
136
Card (modifier = Modifier .padding(8 .dp).fillMaxWidth()) {
0 commit comments