mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-15 00:37:03 +05:30
refactor(android): make search page manage localized state
This commit is contained in:
parent
29c0369d43
commit
f94741144c
2 changed files with 11 additions and 10 deletions
|
@ -101,7 +101,6 @@ fun LobstersApp(
|
||||||
val hottestPosts = viewModel.hottestPosts.collectAsLazyPagingItems()
|
val hottestPosts = viewModel.hottestPosts.collectAsLazyPagingItems()
|
||||||
val newestPosts = viewModel.newestPosts.collectAsLazyPagingItems()
|
val newestPosts = viewModel.newestPosts.collectAsLazyPagingItems()
|
||||||
val savedPosts by viewModel.savedPosts.collectAsState(persistentMapOf())
|
val savedPosts by viewModel.savedPosts.collectAsState(persistentMapOf())
|
||||||
val searchResults = viewModel.searchResults.collectAsLazyPagingItems()
|
|
||||||
|
|
||||||
val navigationType = ClawNavigationType.fromSize(windowSizeClass.widthSizeClass)
|
val navigationType = ClawNavigationType.fromSize(windowSizeClass.widthSizeClass)
|
||||||
|
|
||||||
|
@ -242,16 +241,12 @@ fun LobstersApp(
|
||||||
composable(Destinations.Search.route) {
|
composable(Destinations.Search.route) {
|
||||||
setWebUri("https://lobste.rs/search")
|
setWebUri("https://lobste.rs/search")
|
||||||
SearchList(
|
SearchList(
|
||||||
items = searchResults,
|
items = viewModel.searchResults,
|
||||||
listState = searchListState,
|
listState = searchListState,
|
||||||
isPostSaved = viewModel::isPostSaved,
|
isPostSaved = viewModel::isPostSaved,
|
||||||
postActions = postActions,
|
postActions = postActions,
|
||||||
searchQuery = viewModel.searchQuery,
|
searchQuery = viewModel.searchQuery,
|
||||||
setSearchQuery = { query -> viewModel.searchQuery = query },
|
setSearchQuery = { query -> viewModel.searchQuery = query },
|
||||||
triggerSearch = { query ->
|
|
||||||
viewModel.searchQuery = query
|
|
||||||
searchResults.refresh()
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
composable(
|
composable(
|
||||||
|
|
|
@ -30,23 +30,29 @@ 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.compose.LazyPagingItems
|
import androidx.paging.PagingData
|
||||||
|
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.database.local.SavedPost
|
import dev.msfjarvis.claw.database.local.SavedPost
|
||||||
import dev.msfjarvis.claw.model.LobstersPost
|
import dev.msfjarvis.claw.model.LobstersPost
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SearchList(
|
fun SearchList(
|
||||||
items: LazyPagingItems<LobstersPost>,
|
items: Flow<PagingData<LobstersPost>>,
|
||||||
listState: LazyListState,
|
listState: LazyListState,
|
||||||
isPostSaved: suspend (SavedPost) -> Boolean,
|
isPostSaved: suspend (SavedPost) -> Boolean,
|
||||||
postActions: PostActions,
|
postActions: PostActions,
|
||||||
searchQuery: String,
|
searchQuery: String,
|
||||||
setSearchQuery: (String) -> Unit,
|
setSearchQuery: (String) -> Unit,
|
||||||
triggerSearch: (String) -> Unit,
|
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
) {
|
) {
|
||||||
|
val lazyPagingItems = items.collectAsLazyPagingItems()
|
||||||
|
val triggerSearch = { query: String ->
|
||||||
|
setSearchQuery(query)
|
||||||
|
lazyPagingItems.refresh()
|
||||||
|
}
|
||||||
DisposableEffect(true) {
|
DisposableEffect(true) {
|
||||||
// Clear search field when navigating away
|
// Clear search field when navigating away
|
||||||
onDispose { triggerSearch("") }
|
onDispose { triggerSearch("") }
|
||||||
|
@ -65,7 +71,7 @@ fun SearchList(
|
||||||
)
|
)
|
||||||
if (searchActive) {
|
if (searchActive) {
|
||||||
NetworkPosts(
|
NetworkPosts(
|
||||||
lazyPagingItems = items,
|
lazyPagingItems = lazyPagingItems,
|
||||||
listState = listState,
|
listState = listState,
|
||||||
isPostSaved = isPostSaved,
|
isPostSaved = isPostSaved,
|
||||||
postActions = postActions,
|
postActions = postActions,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue