fix: 更换搜索词后不自动刷新
This commit is contained in:
parent
fad09a4e87
commit
23f73f2e1a
|
|
@ -92,9 +92,9 @@ class SearchViewModel :
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed interface SearchUiIntent : UiIntent {
|
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
|
data class SubmitKeyword(val keyword: String) : SearchUiIntent
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||||
import androidx.compose.material.pullrefresh.pullRefresh
|
import androidx.compose.material.pullrefresh.pullRefresh
|
||||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.derivedStateOf
|
import androidx.compose.runtime.derivedStateOf
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.remember
|
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.Chip
|
||||||
import com.huanchengfly.tieba.post.ui.widgets.compose.Avatar
|
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.LazyLoad
|
||||||
|
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.Sizes
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
|
|
||||||
|
|
@ -51,6 +53,17 @@ fun SearchForumPage(
|
||||||
viewModel.send(SearchForumUiIntent.Refresh(keyword))
|
viewModel.send(SearchForumUiIntent.Refresh(keyword))
|
||||||
viewModel.initialized = true
|
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(
|
val isRefreshing by viewModel.uiState.collectPartialAsState(
|
||||||
prop1 = SearchForumUiState::isRefreshing,
|
prop1 = SearchForumUiState::isRefreshing,
|
||||||
initial = false
|
initial = false
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||||
import androidx.compose.material.pullrefresh.pullRefresh
|
import androidx.compose.material.pullrefresh.pullRefresh
|
||||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
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.ForumInfoChip
|
||||||
import com.huanchengfly.tieba.post.ui.widgets.compose.LazyLoad
|
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.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.Sizes
|
||||||
import com.huanchengfly.tieba.post.ui.widgets.compose.ThreadAgreeBtn
|
import com.huanchengfly.tieba.post.ui.widgets.compose.ThreadAgreeBtn
|
||||||
import com.huanchengfly.tieba.post.ui.widgets.compose.ThreadContent
|
import com.huanchengfly.tieba.post.ui.widgets.compose.ThreadContent
|
||||||
|
|
@ -86,6 +88,16 @@ fun SearchThreadPage(
|
||||||
prop1 = SearchThreadUiState::sortType,
|
prop1 = SearchThreadUiState::sortType,
|
||||||
initial = initialSortType
|
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> {
|
onGlobalEvent<SearchThreadUiEvent.SwitchSortType> {
|
||||||
viewModel.send(SearchThreadUiIntent.Refresh(keyword, it.sortType))
|
viewModel.send(SearchThreadUiIntent.Refresh(keyword, it.sortType))
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ import androidx.compose.material.pullrefresh.PullRefreshIndicator
|
||||||
import androidx.compose.material.pullrefresh.pullRefresh
|
import androidx.compose.material.pullrefresh.pullRefresh
|
||||||
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
import androidx.compose.material.pullrefresh.rememberPullRefreshState
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.derivedStateOf
|
import androidx.compose.runtime.derivedStateOf
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.remember
|
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.Chip
|
||||||
import com.huanchengfly.tieba.post.ui.widgets.compose.Avatar
|
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.LazyLoad
|
||||||
|
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.Sizes
|
||||||
import com.huanchengfly.tieba.post.utils.StringUtil
|
import com.huanchengfly.tieba.post.utils.StringUtil
|
||||||
import kotlinx.collections.immutable.persistentListOf
|
import kotlinx.collections.immutable.persistentListOf
|
||||||
|
|
@ -53,6 +55,16 @@ fun SearchUserPage(
|
||||||
viewModel.send(SearchUserUiIntent.Refresh(keyword))
|
viewModel.send(SearchUserUiIntent.Refresh(keyword))
|
||||||
viewModel.initialized = true
|
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(
|
val isRefreshing by viewModel.uiState.collectPartialAsState(
|
||||||
prop1 = SearchUserUiState::isRefreshing,
|
prop1 = SearchUserUiState::isRefreshing,
|
||||||
initial = false
|
initial = false
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue