pref: 加载初始状态改为 false

This commit is contained in:
HuanCheng65 2023-01-06 11:31:53 +08:00
parent 657ef76505
commit cab0283f7c
No known key found for this signature in database
GPG Key ID: E9031EF91A805148
8 changed files with 52 additions and 30 deletions

View File

@ -399,7 +399,10 @@ fun PageEditProfile(
viewModel: EditProfileViewModel, viewModel: EditProfileViewModel,
onBackPressed: () -> Unit onBackPressed: () -> Unit
) { ) {
val isLoading by viewModel.uiState.collectPartialAsState(EditProfileState::isLoading, initial = true) val isLoading by viewModel.uiState.collectPartialAsState(
EditProfileState::isLoading,
initial = false
)
if (!isLoading) { if (!isLoading) {
val uiState by viewModel.uiState.collectAsState() val uiState by viewModel.uiState.collectAsState()
var sex by remember { mutableStateOf(uiState.sex) } var sex by remember { mutableStateOf(uiState.sex) }

View File

@ -164,7 +164,7 @@ fun HotTopicListPage(
) { ) {
val isRefreshing by viewModel.uiState.collectPartialAsState( val isRefreshing by viewModel.uiState.collectPartialAsState(
prop1 = HotTopicListUiState::isRefreshing, prop1 = HotTopicListUiState::isRefreshing,
initial = true initial = false
) )
val topicList by viewModel.uiState.collectPartialAsState( val topicList by viewModel.uiState.collectPartialAsState(
prop1 = HotTopicListUiState::topicList, prop1 = HotTopicListUiState::topicList,

View File

@ -38,7 +38,7 @@ fun ConcernPage(
val context = LocalContext.current val context = LocalContext.current
val isRefreshing by viewModel.uiState.collectPartialAsState( val isRefreshing by viewModel.uiState.collectPartialAsState(
prop1 = ConcernUiState::isRefreshing, prop1 = ConcernUiState::isRefreshing,
initial = true initial = false
) )
val isLoadingMore by viewModel.uiState.collectPartialAsState( val isLoadingMore by viewModel.uiState.collectPartialAsState(
prop1 = ConcernUiState::isLoadingMore, prop1 = ConcernUiState::isLoadingMore,

View File

@ -78,7 +78,7 @@ fun HotPage(
val navigator = LocalNavigator.current val navigator = LocalNavigator.current
val isLoading by viewModel.uiState.collectPartialAsState( val isLoading by viewModel.uiState.collectPartialAsState(
prop1 = HotUiState::isRefreshing, prop1 = HotUiState::isRefreshing,
initial = true initial = false
) )
val topicList by viewModel.uiState.collectPartialAsState( val topicList by viewModel.uiState.collectPartialAsState(
prop1 = HotUiState::topicList, prop1 = HotUiState::topicList,

View File

@ -70,7 +70,7 @@ fun PersonalizedPage(
val context = LocalContext.current val context = LocalContext.current
val isRefreshing by viewModel.uiState.collectPartialAsState( val isRefreshing by viewModel.uiState.collectPartialAsState(
prop1 = PersonalizedUiState::isRefreshing, prop1 = PersonalizedUiState::isRefreshing,
initial = true initial = false
) )
val isLoadingMore by viewModel.uiState.collectPartialAsState( val isLoadingMore by viewModel.uiState.collectPartialAsState(
prop1 = PersonalizedUiState::isLoadingMore, prop1 = PersonalizedUiState::isLoadingMore,

View File

@ -214,6 +214,7 @@ private fun ForumItem(
showAvatar: Boolean, showAvatar: Boolean,
isTopForum: Boolean = false isTopForum: Boolean = false
) { ) {
val navigator = LocalNavigator.current
val context = LocalContext.current val context = LocalContext.current
val menuState = rememberMenuState() val menuState = rememberMenuState()
var willUnfollow by remember { var willUnfollow by remember {
@ -276,18 +277,7 @@ private fun ForumItem(
} }
}, },
onClick = { onClick = {
PreloadUtil.startActivityWithPreload( navigator.navigate(ForumPageDestination(item.forumName))
context,
Intent(
context,
ForumActivity::class.java
).putExtra(ForumActivity.EXTRA_FORUM_NAME, item.forumName),
ForumLoader(
item.forumName,
1,
getSortType(context, item.forumName)
)
)
} }
) { ) {
Row( Row(
@ -364,7 +354,7 @@ fun HomePage(
val context = LocalContext.current val context = LocalContext.current
val isLoading by viewModel.uiState.collectPartialAsState( val isLoading by viewModel.uiState.collectPartialAsState(
prop1 = HomeUiState::isLoading, prop1 = HomeUiState::isLoading,
initial = true initial = false
) )
val forums by viewModel.uiState.collectPartialAsState( val forums by viewModel.uiState.collectPartialAsState(
prop1 = HomeUiState::forums, prop1 = HomeUiState::forums,

View File

@ -2,21 +2,31 @@ package com.huanchengfly.tieba.post.ui.page.main.notifications.list
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.Text import androidx.compose.material.Text
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.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import com.google.accompanist.swiperefresh.SwipeRefresh
import com.google.accompanist.swiperefresh.rememberSwipeRefreshState
import com.huanchengfly.tieba.post.R import com.huanchengfly.tieba.post.R
import com.huanchengfly.tieba.post.activities.FloorActivity import com.huanchengfly.tieba.post.activities.FloorActivity
import com.huanchengfly.tieba.post.activities.ThreadActivity import com.huanchengfly.tieba.post.activities.ThreadActivity
@ -24,10 +34,16 @@ import com.huanchengfly.tieba.post.activities.UserActivity
import com.huanchengfly.tieba.post.arch.collectPartialAsState import com.huanchengfly.tieba.post.arch.collectPartialAsState
import com.huanchengfly.tieba.post.arch.pageViewModel import com.huanchengfly.tieba.post.arch.pageViewModel
import com.huanchengfly.tieba.post.ui.common.theme.compose.ExtendedTheme import com.huanchengfly.tieba.post.ui.common.theme.compose.ExtendedTheme
import com.huanchengfly.tieba.post.ui.widgets.compose.* import com.huanchengfly.tieba.post.ui.widgets.compose.Avatar
import com.huanchengfly.tieba.post.ui.widgets.compose.EmoticonText
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.Sizes
import com.huanchengfly.tieba.post.ui.widgets.compose.UserHeader
import com.huanchengfly.tieba.post.utils.DateTimeUtils import com.huanchengfly.tieba.post.utils.DateTimeUtils
import com.huanchengfly.tieba.post.utils.StringUtil import com.huanchengfly.tieba.post.utils.StringUtil
@OptIn(ExperimentalMaterialApi::class)
@Composable @Composable
fun NotificationsListPage( fun NotificationsListPage(
type: NotificationsType, type: NotificationsType,
@ -43,7 +59,7 @@ fun NotificationsListPage(
val context = LocalContext.current val context = LocalContext.current
val isRefreshing by viewModel.uiState.collectPartialAsState( val isRefreshing by viewModel.uiState.collectPartialAsState(
prop1 = NotificationsListUiState::isRefreshing, prop1 = NotificationsListUiState::isRefreshing,
initial = true initial = false
) )
val isLoadingMore by viewModel.uiState.collectPartialAsState( val isLoadingMore by viewModel.uiState.collectPartialAsState(
prop1 = NotificationsListUiState::isLoadingMore, prop1 = NotificationsListUiState::isLoadingMore,
@ -61,10 +77,11 @@ fun NotificationsListPage(
prop1 = NotificationsListUiState::currentPage, prop1 = NotificationsListUiState::currentPage,
initial = 1 initial = 1
) )
val swipeRefreshState = rememberSwipeRefreshState(isRefreshing = isRefreshing) val pullRefreshState = rememberPullRefreshState(
SwipeRefresh( refreshing = isRefreshing,
state = swipeRefreshState, onRefresh = { viewModel.send(NotificationsListUiIntent.Refresh) })
onRefresh = { viewModel.send(NotificationsListUiIntent.Refresh) }, Box(
modifier = Modifier.pullRefresh(pullRefreshState)
) { ) {
LoadMoreLayout( LoadMoreLayout(
isLoading = isLoadingMore, isLoading = isLoadingMore,
@ -125,11 +142,16 @@ fun NotificationsListPage(
Spacer(modifier = Modifier.height(16.dp)) Spacer(modifier = Modifier.height(16.dp))
EmoticonText( EmoticonText(
text = quoteText, text = quoteText,
modifier = Modifier.fillMaxWidth() modifier = Modifier
.fillMaxWidth()
.clip(RoundedCornerShape(6.dp)) .clip(RoundedCornerShape(6.dp))
.clickable { .clickable {
if ("1" == it.isFloor && it.quotePid != null) { if ("1" == it.isFloor && it.quotePid != null) {
FloorActivity.launch(context, it.threadId!!, postId = it.quotePid) FloorActivity.launch(
context,
it.threadId!!,
postId = it.quotePid
)
} else { } else {
ThreadActivity.launch(context, it.threadId!!) ThreadActivity.launch(context, it.threadId!!)
} }
@ -144,5 +166,11 @@ fun NotificationsListPage(
} }
} }
} }
PullRefreshIndicator(
refreshing = isRefreshing,
state = pullRefreshState,
modifier = Modifier.align(Alignment.TopCenter)
)
} }
} }

View File

@ -24,6 +24,7 @@ import androidx.compose.material.icons.outlined.AccountCircle
import androidx.compose.material.icons.outlined.Block import androidx.compose.material.icons.outlined.Block
import androidx.compose.material.icons.outlined.CheckCircle import androidx.compose.material.icons.outlined.CheckCircle
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.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
@ -104,7 +105,7 @@ fun BlockSettingsPage(
) )
val isLoading by viewModel.uiState.collectPartialAsState( val isLoading by viewModel.uiState.collectPartialAsState(
prop1 = BlockSettingsUiState::isLoading, prop1 = BlockSettingsUiState::isLoading,
initial = true initial = false
) )
MyScaffold( MyScaffold(
backgroundColor = Color.Transparent, backgroundColor = Color.Transparent,