Start the view in the nav so that it doesn't refetch every time
This commit is contained in:
parent
e8881a2921
commit
32662281b3
@ -27,12 +27,12 @@ import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.ti.mobpo.ui.screens.Favourites
|
||||
import com.ti.mobpo.ui.screens.PokeSearch
|
||||
import com.ti.mobpo.ui.screens.PokeSearchScreen
|
||||
import com.ti.mobpo.ui.screens.Profile
|
||||
|
||||
@ -70,6 +70,8 @@ fun Navigation() {
|
||||
val updatedSelectedIndex = items.indexOfFirst { it.route == currentRoute }
|
||||
selectedItemIndex = rememberUpdatedState(updatedSelectedIndex).value
|
||||
|
||||
val pokeSearchViewModel: PokeSearchViewModel = viewModel()
|
||||
|
||||
Scaffold (
|
||||
bottomBar = {
|
||||
NavigationBar {
|
||||
@ -112,9 +114,8 @@ fun Navigation() {
|
||||
exitTransition = {
|
||||
ExitTransition.None
|
||||
}) {
|
||||
composable(
|
||||
route = Screen.PokeSearch.route) {
|
||||
PokeSearch()
|
||||
composable(route = Screen.PokeSearch.route) {
|
||||
PokeSearchScreen(pokeSearchViewModel)
|
||||
}
|
||||
composable(
|
||||
route = Screen.Favourites.route) {
|
||||
@ -136,6 +137,7 @@ fun Navigation() {
|
||||
@Composable
|
||||
fun NavigationPreview() {
|
||||
Surface {
|
||||
PokeSearchScreen()
|
||||
val pokeSearchViewModel: PokeSearchViewModel = viewModel()
|
||||
PokeSearchScreen(pokeSearchViewModel)
|
||||
}
|
||||
}
|
@ -13,6 +13,7 @@ import retrofit2.http.GET
|
||||
import java.io.IOException
|
||||
|
||||
private const val BASE_URL = "https://pokeapi.co/api/v2/";
|
||||
private const val SHOW_LIMIT = 20;
|
||||
data class PokemonSpecies(
|
||||
@SerializedName("name") val name: String,
|
||||
@SerializedName("url") val url: String
|
||||
@ -49,7 +50,7 @@ class PokeSearchViewModel : ViewModel() {
|
||||
try {
|
||||
val response = service.getPokemonSpecies()
|
||||
_initialPokemonList.value = response.results
|
||||
_filteredPokemonList.value = response.results
|
||||
_filteredPokemonList.value = response.results.take(SHOW_LIMIT)
|
||||
} catch (e: IOException) {
|
||||
/*TODO*/
|
||||
}
|
||||
@ -60,9 +61,9 @@ class PokeSearchViewModel : ViewModel() {
|
||||
val initialPokemonList = _initialPokemonList.value
|
||||
if (query.isNotBlank() && initialPokemonList != null) {
|
||||
val filteredList = initialPokemonList.filter { it.name.contains(query, ignoreCase = true) }
|
||||
_filteredPokemonList.value = filteredList
|
||||
_filteredPokemonList.value = filteredList.take(SHOW_LIMIT);
|
||||
} else {
|
||||
_filteredPokemonList.value = initialPokemonList
|
||||
_filteredPokemonList.value = initialPokemonList?.take(SHOW_LIMIT);
|
||||
}
|
||||
}
|
||||
}
|
@ -21,12 +21,12 @@ import com.ti.mobpo.ui.SearchBar
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
|
||||
@Composable
|
||||
fun PokeSearchScreen(pokeSearchViewModel: PokeSearchViewModel = viewModel()) {
|
||||
fun PokeSearchScreen(pokeSearchViewModel: PokeSearchViewModel) {
|
||||
PokeSearch(pokeSearchViewModel)
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun PokeSearch(pokeSearchViewModel: PokeSearchViewModel = viewModel()) {
|
||||
fun PokeSearch(pokeSearchViewModel: PokeSearchViewModel) {
|
||||
val searchResults by pokeSearchViewModel.pokemonList.collectAsState()
|
||||
|
||||
Column(
|
||||
@ -57,5 +57,6 @@ fun PokeSearch(pokeSearchViewModel: PokeSearchViewModel = viewModel()) {
|
||||
@Preview(showBackground = true)
|
||||
@Composable
|
||||
fun PokeSearchApp(){
|
||||
PokeSearchScreen()
|
||||
val pokeSearchViewModel: PokeSearchViewModel = viewModel()
|
||||
PokeSearchScreen(pokeSearchViewModel)
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user