fix(android): cache search results properly

This commit is contained in:
Harsh Shandilya 2024-09-02 14:11:36 +05:30
parent d5a0bb256f
commit 943cddd8a4
2 changed files with 5 additions and 6 deletions

View file

@ -19,16 +19,14 @@ import androidx.compose.ui.semantics.isTraversalGroup
import androidx.compose.ui.semantics.semantics import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.zIndex import androidx.compose.ui.zIndex
import androidx.paging.PagingData import androidx.paging.compose.LazyPagingItems
import androidx.paging.compose.collectAsLazyPagingItems
import dev.msfjarvis.claw.common.posts.PostActions import dev.msfjarvis.claw.common.posts.PostActions
import dev.msfjarvis.claw.common.ui.SearchBar import dev.msfjarvis.claw.common.ui.SearchBar
import dev.msfjarvis.claw.model.UIPost import dev.msfjarvis.claw.model.UIPost
import kotlinx.coroutines.flow.Flow
@Composable @Composable
fun SearchList( fun SearchList(
items: Flow<PagingData<UIPost>>, lazyPagingItems: LazyPagingItems<UIPost>,
listState: LazyListState, listState: LazyListState,
postActions: PostActions, postActions: PostActions,
searchQuery: String, searchQuery: String,
@ -36,7 +34,6 @@ fun SearchList(
contentPadding: PaddingValues, contentPadding: PaddingValues,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
val lazyPagingItems = items.collectAsLazyPagingItems()
val triggerSearch = { query: String -> val triggerSearch = { query: String ->
setSearchQuery(query) setSearchQuery(query)
lazyPagingItems.refresh() lazyPagingItems.refresh()

View file

@ -15,6 +15,7 @@ import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import androidx.navigation.toRoute import androidx.navigation.toRoute
import androidx.paging.compose.collectAsLazyPagingItems
import com.deliveryhero.whetstone.compose.injectedViewModel import com.deliveryhero.whetstone.compose.injectedViewModel
import dev.msfjarvis.claw.android.ui.lists.SearchList import dev.msfjarvis.claw.android.ui.lists.SearchList
import dev.msfjarvis.claw.android.ui.navigation.Comments import dev.msfjarvis.claw.android.ui.navigation.Comments
@ -38,12 +39,13 @@ fun SearchScreen(
val navController = rememberNavController() val navController = rememberNavController()
val postActions = rememberPostActions(LocalContext.current, urlLauncher, navController, viewModel) val postActions = rememberPostActions(LocalContext.current, urlLauncher, navController, viewModel)
val listState = rememberLazyListState() val listState = rememberLazyListState()
val searchResults = viewModel.searchResults.collectAsLazyPagingItems()
Scaffold(modifier = modifier) { contentPadding -> Scaffold(modifier = modifier) { contentPadding ->
NavHost(navController = navController, startDestination = Search) { NavHost(navController = navController, startDestination = Search) {
composable<Search> { composable<Search> {
setWebUri("https://lobste.rs/search") setWebUri("https://lobste.rs/search")
SearchList( SearchList(
items = viewModel.searchResults, lazyPagingItems = searchResults,
listState = listState, listState = listState,
postActions = postActions, postActions = postActions,
searchQuery = viewModel.searchQuery, searchQuery = viewModel.searchQuery,