From 23f73f2e1ab7607a8743f63d44456513a7ae2021 Mon Sep 17 00:00:00 2001 From: HuanCheng65 <22636177+HuanCheng65@users.noreply.github.com> Date: Sat, 23 Sep 2023 14:05:55 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=9B=B4=E6=8D=A2=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E8=AF=8D=E5=90=8E=E4=B8=8D=E8=87=AA=E5=8A=A8=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tieba/post/ui/page/search/SearchViewModel.kt | 4 ++-- .../post/ui/page/search/forum/SearchForumPage.kt | 13 +++++++++++++ .../post/ui/page/search/thread/SearchThreadPage.kt | 12 ++++++++++++ .../post/ui/page/search/user/SearchUserPage.kt | 12 ++++++++++++ 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/search/SearchViewModel.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/search/SearchViewModel.kt index 4b5bbf12..5099ee10 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/search/SearchViewModel.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/search/SearchViewModel.kt @@ -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 } diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/search/forum/SearchForumPage.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/search/forum/SearchForumPage.kt index 8c52b87f..c827cc22 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/search/forum/SearchForumPage.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/search/forum/SearchForumPage.kt @@ -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 diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/search/thread/SearchThreadPage.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/search/thread/SearchThreadPage.kt index d701ea6b..ea877736 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/search/thread/SearchThreadPage.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/search/thread/SearchThreadPage.kt @@ -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 { viewModel.send(SearchThreadUiIntent.Refresh(keyword, it.sortType)) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/search/user/SearchUserPage.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/search/user/SearchUserPage.kt index ba1cfe56..a812046b 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/search/user/SearchUserPage.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/search/user/SearchUserPage.kt @@ -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