diff --git a/app/src/main/java/com/aiosman/riderpro/MainActivity.kt b/app/src/main/java/com/aiosman/riderpro/MainActivity.kt index 6a7fd17..b1dd66e 100644 --- a/app/src/main/java/com/aiosman/riderpro/MainActivity.kt +++ b/app/src/main/java/com/aiosman/riderpro/MainActivity.kt @@ -6,6 +6,8 @@ import android.app.NotificationManager import android.content.Context import android.content.Intent import android.content.pm.PackageManager +import android.icu.util.Calendar +import android.icu.util.TimeZone import android.net.Uri import android.os.Build import android.os.Bundle @@ -28,6 +30,7 @@ import com.aiosman.riderpro.data.AccountService import com.aiosman.riderpro.data.AccountServiceImpl import com.aiosman.riderpro.ui.Navigation import com.aiosman.riderpro.ui.NavigationRoute +import com.aiosman.riderpro.ui.navigateToPost import com.aiosman.riderpro.ui.post.NewPostViewModel import com.aiosman.riderpro.utils.Utils import com.google.android.libraries.places.api.Places @@ -59,8 +62,14 @@ class MainActivity : ComponentActivity() { val accountService: AccountService = AccountServiceImpl() try { val resp = accountService.getMyAccount() - accountService.updateUserLanguage( - Utils.getCurrentLanguage() + val calendar: Calendar = Calendar.getInstance() + val tz: TimeZone = calendar.timeZone + val offsetInMillis: Int = tz.rawOffset + accountService.updateUserExtra( + Utils.getCurrentLanguage(), + // 时区偏移量单位是秒 + offsetInMillis / 1000, + tz.displayName ) // 设置当前登录用户 ID AppState.UserId = resp.id @@ -122,19 +131,20 @@ class MainActivity : ComponentActivity() { navController.navigate(NavigationRoute.Followers.route) return@Navigation } + if (action == "followCount") { + navController.navigate(NavigationRoute.Followers.route) + return@Navigation + } if (commentId == null) { commentId = "0" } if (postId != null) { Log.d("MainActivity", "Navigation to Post$postId") - navController.navigate( - NavigationRoute.Post.route - .replace( - "{id}", - postId - ) - .replace("{highlightCommentId}", commentId) + navController.navigateToPost( + id = postId.toInt(), + highlightCommentId = commentId.toInt(), + initImagePagerIndex = 0 ) } // 处理分享过来的图片 diff --git a/app/src/main/java/com/aiosman/riderpro/data/AccountService.kt b/app/src/main/java/com/aiosman/riderpro/data/AccountService.kt index 5beb893..c354f24 100644 --- a/app/src/main/java/com/aiosman/riderpro/data/AccountService.kt +++ b/app/src/main/java/com/aiosman/riderpro/data/AccountService.kt @@ -352,9 +352,9 @@ interface AccountService { suspend fun resetPassword(email: String) /** - * 更新用户语言 + * 更新用户额外信息 */ - suspend fun updateUserLanguage(language: String) + suspend fun updateUserExtra(language: String, timeOffset: Int, timezone: String) } class AccountServiceImpl : AccountService { @@ -486,8 +486,8 @@ class AccountServiceImpl : AccountService { } } - override suspend fun updateUserLanguage(language: String) { - ApiClient.api.updateUserLang(UpdateUserLangRequestBody(language)) + override suspend fun updateUserExtra(language: String, timeOffset: Int, timezone: String) { + ApiClient.api.updateUserExtra(UpdateUserLangRequestBody(language, timeOffset, timezone)) } } \ No newline at end of file diff --git a/app/src/main/java/com/aiosman/riderpro/data/api/RiderProAPI.kt b/app/src/main/java/com/aiosman/riderpro/data/api/RiderProAPI.kt index 10a954c..ba99fed 100644 --- a/app/src/main/java/com/aiosman/riderpro/data/api/RiderProAPI.kt +++ b/app/src/main/java/com/aiosman/riderpro/data/api/RiderProAPI.kt @@ -101,6 +101,10 @@ data class ResetPasswordRequestBody( data class UpdateUserLangRequestBody( @SerializedName("language") val lang: String, + @SerializedName("timeOffset") + val timeOffset: Int, + @SerializedName("timezone") + val timezone: String, ) interface RiderProAPI { @@ -291,8 +295,8 @@ interface RiderProAPI { @Path("id") id: Int ): Response> - @PATCH("account/my/lang") - suspend fun updateUserLang( + @PATCH("account/my/extra") + suspend fun updateUserExtra( @Body body: UpdateUserLangRequestBody ): Response diff --git a/app/src/main/java/com/aiosman/riderpro/ui/Navi.kt b/app/src/main/java/com/aiosman/riderpro/ui/Navi.kt index c2bf1fc..18ac639 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/Navi.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/Navi.kt @@ -61,7 +61,7 @@ sealed class NavigationRoute( data object LocationDetail : NavigationRoute("LocationDetail/{x}/{y}") data object OfficialPhoto : NavigationRoute("OfficialPhoto") data object OfficialPhotographer : NavigationRoute("OfficialPhotographer") - data object Post : NavigationRoute("Post/{id}/{highlightCommentId}") + data object Post : NavigationRoute("Post/{id}/{highlightCommentId}/{initImagePagerIndex}") data object ModificationList : NavigationRoute("ModificationList") data object MyMessage : NavigationRoute("MyMessage") data object Comments : NavigationRoute("Comments") @@ -137,19 +137,23 @@ fun NavigationController( route = NavigationRoute.Post.route, arguments = listOf( navArgument("id") { type = NavType.StringType }, - navArgument("highlightCommentId") { type = NavType.IntType } + navArgument("highlightCommentId") { type = NavType.IntType }, + navArgument("initImagePagerIndex") { type = NavType.IntType } ), ) { backStackEntry -> CompositionLocalProvider( LocalAnimatedContentScope provides this, ) { val id = backStackEntry.arguments?.getString("id") - val highlightCommentId = backStackEntry.arguments?.getInt("highlightCommentId")?.let { - if (it == 0) null else it - } + val highlightCommentId = + backStackEntry.arguments?.getInt("highlightCommentId")?.let { + if (it == 0) null else it + } + val initIndex = backStackEntry.arguments?.getInt("initImagePagerIndex") PostScreen( id!!, - highlightCommentId + highlightCommentId, + initImagePagerIndex = initIndex ) } } @@ -364,4 +368,17 @@ fun Navigation( } } } +} + +fun NavHostController.navigateToPost( + id: Int, + highlightCommentId: Int? = 0, + initImagePagerIndex: Int? = null +) { + navigate( + route = NavigationRoute.Post.route + .replace("{id}", id.toString()) + .replace("{highlightCommentId}", highlightCommentId.toString()) + .replace("{initImagePagerIndex}", initImagePagerIndex.toString()) + ) } \ No newline at end of file diff --git a/app/src/main/java/com/aiosman/riderpro/ui/favourite/FavouriteListPage.kt b/app/src/main/java/com/aiosman/riderpro/ui/favourite/FavouriteListPage.kt index cedfc17..f76ce16 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/favourite/FavouriteListPage.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/favourite/FavouriteListPage.kt @@ -31,6 +31,7 @@ import com.aiosman.riderpro.ui.composables.CustomAsyncImage import com.aiosman.riderpro.ui.composables.StatusBarSpacer import com.aiosman.riderpro.ui.favourite.FavouriteListViewModel.refreshPager import com.aiosman.riderpro.ui.modifiers.noRippleClickable +import com.aiosman.riderpro.ui.navigateToPost @OptIn(ExperimentalMaterialApi::class) @Composable @@ -79,11 +80,10 @@ fun FavouriteListPage() { .padding(2.dp) .noRippleClickable { - navController.navigate( - NavigationRoute.Post.route.replace( - "{id}", - momentItem.id.toString() - ).replace("{highlightCommentId}", "0") + navController.navigateToPost( + id = momentItem.id, + highlightCommentId = 0, + initImagePagerIndex = 0 ) } ) { diff --git a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/message/MessageList.kt b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/message/MessageList.kt index 8f6e728..226e867 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/message/MessageList.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/message/MessageList.kt @@ -7,12 +7,9 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.asPaddingValues import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width @@ -28,10 +25,6 @@ import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -51,14 +44,13 @@ import com.aiosman.riderpro.R import com.aiosman.riderpro.entity.CommentEntity import com.aiosman.riderpro.exp.timeAgo import com.aiosman.riderpro.ui.NavigationRoute -import com.aiosman.riderpro.ui.composables.BottomNavigationPlaceholder import com.aiosman.riderpro.ui.composables.CustomAsyncImage import com.aiosman.riderpro.ui.composables.StatusBarSpacer import com.aiosman.riderpro.ui.favourite.FavouriteNoticeViewModel import com.aiosman.riderpro.ui.follower.FollowerNoticeViewModel import com.aiosman.riderpro.ui.like.LikeNoticeViewModel import com.aiosman.riderpro.ui.modifiers.noRippleClickable -import com.aiosman.riderpro.ui.post.PostViewModel +import com.aiosman.riderpro.ui.navigateToPost import com.google.accompanist.systemuicontroller.rememberSystemUiController import kotlinx.coroutines.launch @@ -179,14 +171,10 @@ fun NotificationsScreen() { comment.parentCommentId?.let { highlightCommentId = it } - navController.navigate( - NavigationRoute.Post.route.replace( - "{id}", - comment.postId.toString() - ).replace( - "{highlightCommentId}", - highlightCommentId.toString() - ) + navController.navigateToPost( + id = comment.post!!.id, + highlightCommentId = highlightCommentId, + initImagePagerIndex = 0 ) } } diff --git a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/moment/Moment.kt b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/moment/Moment.kt index d980fbb..5f08635 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/moment/Moment.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/moment/Moment.kt @@ -61,7 +61,6 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import androidx.paging.LoadState import androidx.paging.compose.collectAsLazyPagingItems import com.aiosman.riderpro.LocalNavController import com.aiosman.riderpro.R @@ -76,8 +75,8 @@ import com.aiosman.riderpro.ui.composables.AnimatedLikeIcon import com.aiosman.riderpro.ui.composables.CustomAsyncImage import com.aiosman.riderpro.ui.composables.RelPostCard import com.aiosman.riderpro.ui.modifiers.noRippleClickable +import com.aiosman.riderpro.ui.navigateToPost import com.aiosman.riderpro.ui.post.NewPostViewModel -import com.aiosman.riderpro.ui.post.PostViewModel import kotlinx.coroutines.launch /** @@ -178,10 +177,10 @@ fun MomentCard( modifier = Modifier .fillMaxWidth() .noRippleClickable { - navController.navigate( - route = NavigationRoute.Post.route - .replace("{id}", momentEntity.id.toString()) - .replace("{highlightCommentId}", "0") + navController.navigateToPost( + momentEntity.id, + highlightCommentId = 0, + initImagePagerIndex = imageIndex ) } ) { @@ -203,8 +202,11 @@ fun MomentCard( onFavoriteClick = onFavoriteClick, imageIndex = imageIndex, onCommentClick = { -// PostViewModel.preTransit(momentEntity) - navController.navigate("Post/${momentEntity.id}") + navController.navigateToPost( + momentEntity.id, + highlightCommentId = 0, + initImagePagerIndex = imageIndex + ) } ) } diff --git a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/moment/MomentViewModel.kt b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/moment/MomentViewModel.kt index 74f54a9..f789062 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/moment/MomentViewModel.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/moment/MomentViewModel.kt @@ -33,7 +33,7 @@ object MomentViewModel : ViewModel() { var refreshing by mutableStateOf(false) var isFirstLoad = true fun refreshPager(pullRefresh: Boolean = false) { - if (!isFirstLoad) { + if (!isFirstLoad && !pullRefresh) { return } isFirstLoad = false diff --git a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/profile/MyProfileViewModel.kt b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/profile/MyProfileViewModel.kt index b22cd37..552bf7e 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/profile/MyProfileViewModel.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/profile/MyProfileViewModel.kt @@ -40,9 +40,9 @@ object MyProfileViewModel : ViewModel() { var refreshing by mutableStateOf(false) var firstLoad = true fun loadProfile(pullRefresh: Boolean = false) { - if (!firstLoad && !pullRefresh) { - return - } +// if (!firstLoad && !pullRefresh) { +// return +// } viewModelScope.launch { if (pullRefresh){ refreshing = true diff --git a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/profile/Profile.kt b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/profile/Profile.kt index 26e28a0..db2be7a 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/profile/Profile.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/profile/Profile.kt @@ -78,6 +78,8 @@ import com.aiosman.riderpro.ui.NavigationRoute import com.aiosman.riderpro.ui.composables.CustomAsyncImage import com.aiosman.riderpro.ui.composables.MenuItem import com.aiosman.riderpro.ui.modifiers.noRippleClickable +import com.aiosman.riderpro.ui.navigateToPost +import com.aiosman.riderpro.ui.post.NewPostViewModel import com.aiosman.riderpro.ui.post.PostViewModel import kotlinx.coroutines.launch @@ -673,9 +675,9 @@ fun ProfileEmptyMomentCard( .fillMaxSize() .background(Color(0xFFF5F5F5)) .noRippleClickable { + NewPostViewModel.asNewPost() navController.navigate(NavigationRoute.NewPost.route) } - ) { Icon( Icons.Default.Add, @@ -808,12 +810,10 @@ fun MomentCardPicture(imageUrl: String, momentEntity: MomentEntity) { .aspectRatio(3f / 2f) .padding(top = 16.dp) .noRippleClickable { -// PostViewModel.preTransit(momentEntity) - navController.navigate( - NavigationRoute.Post.route.replace( - "{id}", - momentEntity.id.toString() - ).replace("{highlightCommentId}", "0") + navController.navigateToPost( + id = momentEntity.id, + highlightCommentId = 0, + initImagePagerIndex = 0 ) }, contentDescription = "", diff --git a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/search/DiscoverScreen.kt b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/search/DiscoverScreen.kt index e81c31e..9192b68 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/search/DiscoverScreen.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/search/DiscoverScreen.kt @@ -6,17 +6,14 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.asPaddingValues import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.systemBars import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.shape.RoundedCornerShape @@ -50,8 +47,7 @@ import com.aiosman.riderpro.ui.NavigationRoute import com.aiosman.riderpro.ui.composables.CustomAsyncImage import com.aiosman.riderpro.ui.composables.StatusBarSpacer import com.aiosman.riderpro.ui.modifiers.noRippleClickable -import com.aiosman.riderpro.ui.post.PostViewModel -import com.google.accompanist.systemuicontroller.rememberSystemUiController +import com.aiosman.riderpro.ui.navigateToPost @OptIn(ExperimentalFoundationApi::class, ExperimentalMaterialApi::class) @@ -156,12 +152,10 @@ fun DiscoverView() { .padding(2.dp) .noRippleClickable { -// PostViewModel.preTransit(momentItem) - navController.navigate( - NavigationRoute.Post.route.replace( - "{id}", - momentItem.id.toString() - ).replace("{highlightCommentId}", "0") + navController.navigateToPost( + id = momentItem.id, + highlightCommentId = 0, + initImagePagerIndex = 0 ) } ) { diff --git a/app/src/main/java/com/aiosman/riderpro/ui/like/LikePage.kt b/app/src/main/java/com/aiosman/riderpro/ui/like/LikePage.kt index 033ec16..bfea935 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/like/LikePage.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/like/LikePage.kt @@ -46,6 +46,7 @@ import com.aiosman.riderpro.ui.composables.CustomAsyncImage import com.aiosman.riderpro.ui.composables.StatusBarMaskLayout import com.aiosman.riderpro.ui.index.tabs.profile.MyProfileViewModel import com.aiosman.riderpro.ui.modifiers.noRippleClickable +import com.aiosman.riderpro.ui.navigateToPost import java.util.Date @Preview @@ -154,11 +155,10 @@ fun ActionPostNoticeItem( modifier = Modifier .weight(1f) .noRippleClickable { - navController.navigate( - NavigationRoute.Post.route.replace( - "{id}", - postId.toString() - ).replace("{highlightCommentId}", "0") + navController.navigateToPost( + id = postId, + highlightCommentId = 0, + initImagePagerIndex = 0 ) } ) { @@ -192,11 +192,10 @@ fun LikeCommentNoticeItem( Box( modifier = Modifier.padding(vertical = 16.dp).noRippleClickable { item.comment?.postId.let { - navController.navigate( - NavigationRoute.Post.route.replace( - "{id}", - it.toString() - ).replace("{highlightCommentId}", "0") + navController.navigateToPost( + id = it ?: 0, + highlightCommentId = item.comment?.id ?: 0, + initImagePagerIndex = 0 ) } diff --git a/app/src/main/java/com/aiosman/riderpro/ui/login/emailsignup.kt b/app/src/main/java/com/aiosman/riderpro/ui/login/emailsignup.kt index 8949499..c5c90df 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/login/emailsignup.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/login/emailsignup.kt @@ -1,5 +1,7 @@ package com.aiosman.riderpro.ui.login +import android.icu.util.Calendar +import android.icu.util.TimeZone import android.widget.Toast import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -156,8 +158,13 @@ fun EmailSignupScreen() { try { val resp = accountService.getMyAccount() AppState.UserId = resp.id - accountService.updateUserLanguage( - Utils.getCurrentLanguage() + val calendar: Calendar = Calendar.getInstance() + val tz: TimeZone = calendar.timeZone + val offsetInMillis: Int = tz.rawOffset + accountService.updateUserExtra( + Utils.getCurrentLanguage(), + offsetInMillis / 1000, + tz.displayName ) Messaging.RegistDevice(scope, context) } catch (e: ServiceException) { diff --git a/app/src/main/java/com/aiosman/riderpro/ui/login/signup.kt b/app/src/main/java/com/aiosman/riderpro/ui/login/signup.kt index 5cf0800..32aa272 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/login/signup.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/login/signup.kt @@ -1,6 +1,8 @@ package com.aiosman.riderpro.ui.login import android.content.ContentValues.TAG +import android.icu.util.Calendar +import android.icu.util.TimeZone import android.util.Log import android.widget.Toast import androidx.compose.foundation.Image @@ -85,8 +87,13 @@ fun SignupScreen() { // 获取token 信息 try { val resp = accountService.getMyAccount() - accountService.updateUserLanguage( - Utils.getCurrentLanguage() + val calendar: Calendar = Calendar.getInstance() + val tz: TimeZone = calendar.timeZone + val offsetInMillis: Int = tz.rawOffset + accountService.updateUserExtra( + Utils.getCurrentLanguage(), + offsetInMillis / 1000, + tz.displayName ) AppState.UserId = resp.id Messaging.RegistDevice(coroutineScope, context) diff --git a/app/src/main/java/com/aiosman/riderpro/ui/login/userauth.kt b/app/src/main/java/com/aiosman/riderpro/ui/login/userauth.kt index f3e643c..d73c003 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/login/userauth.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/login/userauth.kt @@ -1,5 +1,7 @@ package com.aiosman.riderpro.ui.login +import android.icu.util.Calendar +import android.icu.util.TimeZone import android.widget.Toast import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -44,6 +46,7 @@ import com.aiosman.riderpro.ui.composables.StatusBarSpacer import com.aiosman.riderpro.ui.composables.TextInputField import com.aiosman.riderpro.ui.modifiers.noRippleClickable import com.aiosman.riderpro.utils.GoogleLogin +import com.aiosman.riderpro.utils.Utils import kotlinx.coroutines.launch @@ -81,6 +84,14 @@ fun UserAuthScreen() { saveData() } accountService.getMyAccount() + val calendar: Calendar = Calendar.getInstance() + val tz: TimeZone = calendar.timeZone + val offsetInMillis: Int = tz.rawOffset + accountService.updateUserExtra( + Utils.getCurrentLanguage(), + offsetInMillis / 1000, + tz.displayName + ) Messaging.RegistDevice(scope, context) navController.navigate(NavigationRoute.Index.route) { popUpTo(NavigationRoute.Login.route) { inclusive = true } diff --git a/app/src/main/java/com/aiosman/riderpro/ui/post/Post.kt b/app/src/main/java/com/aiosman/riderpro/ui/post/Post.kt index 807ec6d..d441447 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/post/Post.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/post/Post.kt @@ -100,7 +100,8 @@ import kotlinx.coroutines.launch @Composable fun PostScreen( id: String, - highlightCommentId: Int? + highlightCommentId: Int?, + initImagePagerIndex: Int? ) { val viewModel = viewModel( key = "PostViewModel_$id", @@ -331,7 +332,8 @@ fun PostScreen( .aspectRatio(383f / 527f) ) { PostImageView( - viewModel.moment?.images ?: emptyList() + viewModel.moment?.images ?: emptyList(), + initialPage = initImagePagerIndex ) } @@ -440,7 +442,7 @@ fun CommentContent( } }, - ) + ) } } @@ -719,8 +721,9 @@ fun Header( @Composable fun PostImageView( images: List, + initialPage: Int? = 0 ) { - val pagerState = rememberPagerState(pageCount = { images.size }) + val pagerState = rememberPagerState(pageCount = { images.size }, initialPage = initialPage ?: 0) val navController = LocalNavController.current val sharedTransitionScope = LocalSharedTransitionScope.current val animatedVisibilityScope = LocalAnimatedContentScope.current