fix: 更换搜索词后不自动刷新

This commit is contained in:
HuanCheng65 2023-09-23 14:05:55 +08:00
parent fad09a4e87
commit 23f73f2e1a
No known key found for this signature in database
GPG Key ID: 5EC9DD60A32C7360
4 changed files with 39 additions and 2 deletions

View File

@ -92,9 +92,9 @@ class SearchViewModel :
}
sealed interface SearchUiIntent : UiIntent {
object Init : SearchUiIntent
data object Init : SearchUiIntent
object ClearSearchHistory : SearchUiIntent
data object ClearSearchHistory : SearchUiIntent
data class SubmitKeyword(val keyword: String) : SearchUiIntent
}

View File

@ -19,6 +19,7 @@ import androidx.compose.material.pullrefresh.PullRefreshIndicator
import androidx.compose.material.pullrefresh.pullRefresh
import androidx.compose.material.pullrefresh.rememberPullRefreshState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
@ -37,6 +38,7 @@ import com.huanchengfly.tieba.post.ui.page.destinations.ForumPageDestination
import com.huanchengfly.tieba.post.ui.widgets.Chip
import com.huanchengfly.tieba.post.ui.widgets.compose.Avatar
import com.huanchengfly.tieba.post.ui.widgets.compose.LazyLoad
import com.huanchengfly.tieba.post.ui.widgets.compose.LocalShouldLoad
import com.huanchengfly.tieba.post.ui.widgets.compose.Sizes
import kotlinx.collections.immutable.persistentListOf
@ -51,6 +53,17 @@ fun SearchForumPage(
viewModel.send(SearchForumUiIntent.Refresh(keyword))
viewModel.initialized = true
}
val shouldLoad = LocalShouldLoad.current
LaunchedEffect(keyword) {
if (viewModel.initialized) {
if (shouldLoad) {
viewModel.send(SearchForumUiIntent.Refresh(keyword))
} else {
viewModel.initialized = false
}
}
}
val isRefreshing by viewModel.uiState.collectPartialAsState(
prop1 = SearchForumUiState::isRefreshing,
initial = false

View File

@ -15,6 +15,7 @@ import androidx.compose.material.pullrefresh.PullRefreshIndicator
import androidx.compose.material.pullrefresh.pullRefresh
import androidx.compose.material.pullrefresh.rememberPullRefreshState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -34,6 +35,7 @@ import com.huanchengfly.tieba.post.ui.widgets.compose.Card
import com.huanchengfly.tieba.post.ui.widgets.compose.ForumInfoChip
import com.huanchengfly.tieba.post.ui.widgets.compose.LazyLoad
import com.huanchengfly.tieba.post.ui.widgets.compose.LoadMoreLayout
import com.huanchengfly.tieba.post.ui.widgets.compose.LocalShouldLoad
import com.huanchengfly.tieba.post.ui.widgets.compose.Sizes
import com.huanchengfly.tieba.post.ui.widgets.compose.ThreadAgreeBtn
import com.huanchengfly.tieba.post.ui.widgets.compose.ThreadContent
@ -86,6 +88,16 @@ fun SearchThreadPage(
prop1 = SearchThreadUiState::sortType,
initial = initialSortType
)
val shouldLoad = LocalShouldLoad.current
LaunchedEffect(keyword) {
if (viewModel.initialized) {
if (shouldLoad) {
viewModel.send(SearchThreadUiIntent.Refresh(keyword, sortType))
} else {
viewModel.initialized = false
}
}
}
onGlobalEvent<SearchThreadUiEvent.SwitchSortType> {
viewModel.send(SearchThreadUiIntent.Refresh(keyword, it.sortType))

View File

@ -19,6 +19,7 @@ import androidx.compose.material.pullrefresh.PullRefreshIndicator
import androidx.compose.material.pullrefresh.pullRefresh
import androidx.compose.material.pullrefresh.rememberPullRefreshState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
@ -37,6 +38,7 @@ import com.huanchengfly.tieba.post.ui.page.LocalNavigator
import com.huanchengfly.tieba.post.ui.widgets.Chip
import com.huanchengfly.tieba.post.ui.widgets.compose.Avatar
import com.huanchengfly.tieba.post.ui.widgets.compose.LazyLoad
import com.huanchengfly.tieba.post.ui.widgets.compose.LocalShouldLoad
import com.huanchengfly.tieba.post.ui.widgets.compose.Sizes
import com.huanchengfly.tieba.post.utils.StringUtil
import kotlinx.collections.immutable.persistentListOf
@ -53,6 +55,16 @@ fun SearchUserPage(
viewModel.send(SearchUserUiIntent.Refresh(keyword))
viewModel.initialized = true
}
val shouldLoad = LocalShouldLoad.current
LaunchedEffect(keyword) {
if (viewModel.initialized) {
if (shouldLoad) {
viewModel.send(SearchUserUiIntent.Refresh(keyword))
} else {
viewModel.initialized = false
}
}
}
val isRefreshing by viewModel.uiState.collectPartialAsState(
prop1 = SearchUserUiState::isRefreshing,
initial = false