refactor(android): make search page manage localized state

This commit is contained in:
Harsh Shandilya 2023-07-19 22:24:43 +05:30
parent 29c0369d43
commit f94741144c
2 changed files with 11 additions and 10 deletions

View file

@ -101,7 +101,6 @@ fun LobstersApp(
val hottestPosts = viewModel.hottestPosts.collectAsLazyPagingItems()
val newestPosts = viewModel.newestPosts.collectAsLazyPagingItems()
val savedPosts by viewModel.savedPosts.collectAsState(persistentMapOf())
val searchResults = viewModel.searchResults.collectAsLazyPagingItems()
val navigationType = ClawNavigationType.fromSize(windowSizeClass.widthSizeClass)
@ -242,16 +241,12 @@ fun LobstersApp(
composable(Destinations.Search.route) {
setWebUri("https://lobste.rs/search")
SearchList(
items = searchResults,
items = viewModel.searchResults,
listState = searchListState,
isPostSaved = viewModel::isPostSaved,
postActions = postActions,
searchQuery = viewModel.searchQuery,
setSearchQuery = { query -> viewModel.searchQuery = query },
triggerSearch = { query ->
viewModel.searchQuery = query
searchResults.refresh()
}
)
}
composable(

View file

@ -30,23 +30,29 @@ import androidx.compose.ui.semantics.isTraversalGroup
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp
import androidx.compose.ui.zIndex
import androidx.paging.compose.LazyPagingItems
import androidx.paging.PagingData
import androidx.paging.compose.collectAsLazyPagingItems
import dev.msfjarvis.claw.common.posts.PostActions
import dev.msfjarvis.claw.common.ui.SearchBar
import dev.msfjarvis.claw.database.local.SavedPost
import dev.msfjarvis.claw.model.LobstersPost
import kotlinx.coroutines.flow.Flow
@Composable
fun SearchList(
items: LazyPagingItems<LobstersPost>,
items: Flow<PagingData<LobstersPost>>,
listState: LazyListState,
isPostSaved: suspend (SavedPost) -> Boolean,
postActions: PostActions,
searchQuery: String,
setSearchQuery: (String) -> Unit,
triggerSearch: (String) -> Unit,
modifier: Modifier = Modifier,
) {
val lazyPagingItems = items.collectAsLazyPagingItems()
val triggerSearch = { query: String ->
setSearchQuery(query)
lazyPagingItems.refresh()
}
DisposableEffect(true) {
// Clear search field when navigating away
onDispose { triggerSearch("") }
@ -65,7 +71,7 @@ fun SearchList(
)
if (searchActive) {
NetworkPosts(
lazyPagingItems = items,
lazyPagingItems = lazyPagingItems,
listState = listState,
isPostSaved = isPostSaved,
postActions = postActions,