Merge remote-tracking branch 'origin/main'

This commit is contained in:
2025-09-03 18:07:59 +08:00
15 changed files with 216 additions and 82 deletions

View File

@@ -34,6 +34,7 @@ import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.paging.LoadState
import androidx.paging.compose.collectAsLazyPagingItems
import com.aiosman.ravenow.AppState
import com.aiosman.ravenow.LocalAppTheme
import com.aiosman.ravenow.LocalNavController
import com.aiosman.ravenow.R
@@ -89,7 +90,9 @@ fun CommentNoticeScreen() {
modifier = Modifier.fillMaxWidth()
) {
androidx.compose.foundation.Image(
painter = painterResource(id = R.mipmap.qst_pl_qs_img),
painter = painterResource(
id =if(AppState.darkMode) R.mipmap.qst_pl_qs_as_img
else R.mipmap.qst_pl_qs_img),
contentDescription = "No Comment",
modifier = Modifier.size(181.dp)
)

View File

@@ -71,7 +71,7 @@ fun FollowerListScreen(userId: Int) {
Box(
modifier = Modifier
.fillMaxSize()
.padding(top = 188.dp),
.padding(top = 149.dp),
contentAlignment = Alignment.TopCenter
) {
Column(
@@ -79,22 +79,24 @@ fun FollowerListScreen(userId: Int) {
modifier = Modifier.fillMaxWidth()
) {
Image(
painter = painterResource(id = R.mipmap.rider_pro_followers_empty),
painter = painterResource(
id =if(AppState.darkMode) R.mipmap.qst_fs_qs_as_img
else R.mipmap.qst_fs_qs_img),
contentDescription = null,
modifier = Modifier.size(140.dp)
modifier = Modifier.size(181.dp)
)
Spacer(modifier = Modifier.size(24.dp))
androidx.compose.material.Text(
text = "No one's paying attention to you yet",
text = "还没有人关注哦",
color = appColors.text,
fontSize = 16.sp,
fontWeight = FontWeight.W600
)
Spacer(modifier = Modifier.size(8.dp))
androidx.compose.material.Text(
text = "Your vibe attracts your tribe.",
text = "去发布动态,吸引更多粉丝~",
color = appColors.text,
fontSize = 16.sp,
fontSize = 14.sp,
fontWeight = FontWeight.W400
)
}

View File

@@ -78,7 +78,9 @@ fun FollowerNoticeScreen() {
modifier = Modifier.fillMaxWidth()
) {
Image(
painter = painterResource(id = R.mipmap.qst_fs_qs_img),
painter = painterResource(
id =if(AppState.darkMode) R.mipmap.qst_fs_qs_as_img
else R.mipmap.qst_fs_qs_img),
contentDescription = "No Followers",
modifier = Modifier.size(181.dp)
)

View File

@@ -81,7 +81,9 @@ fun FollowingListScreen(userId: Int) {
modifier = Modifier.fillMaxWidth()
) {
Image(
painter = painterResource(id = R.mipmap.qst_gz_qs_img_my),
painter = painterResource(
id =if(AppState.darkMode) R.mipmap.qst_gz_qs_as_img_my
else R.mipmap.qst_gz_qs_img_my),
contentDescription = null,
modifier = Modifier.size(181.dp)
)

View File

@@ -38,6 +38,7 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.compose.ui.res.stringResource
import com.aiosman.ravenow.AppState
import com.aiosman.ravenow.LocalAppTheme
import com.aiosman.ravenow.LocalNavController
import com.aiosman.ravenow.R
@@ -89,12 +90,14 @@ fun AgentChatListScreen() {
horizontalAlignment = Alignment.CenterHorizontally,
) {
Spacer(modifier = Modifier.height(80.dp))
Spacer(modifier = Modifier.height(39.dp))
Image(
painter = painterResource(id = R.mipmap.icon_agent_chat_empty),
painter = painterResource(
id = if(AppState.darkMode) R.mipmap.qs_znt_qs_as_img
else R.mipmap.qs_znt_qs_img),
contentDescription = "null data",
modifier = Modifier
.size(140.dp)
.size(181.dp)
)
Spacer(modifier = Modifier.height(24.dp))
Text(

View File

@@ -27,6 +27,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.aiosman.ravenow.AppState
import com.aiosman.ravenow.LocalAppTheme
import com.aiosman.ravenow.LocalNavController
import com.aiosman.ravenow.R
@@ -74,7 +75,9 @@ fun FriendChatListScreen() {
Spacer(modifier = Modifier.height(39.dp))
Image(
painter = painterResource(id = R.mipmap.qs_py_qs_img),
painter = painterResource(
id = if(AppState.darkMode) R.mipmap.qs_py_qs_as_img
else R.mipmap.qs_py_qs_img),
contentDescription = "null data",
modifier = Modifier
.size(181.dp)

View File

@@ -26,6 +26,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.aiosman.ravenow.AppState
import com.aiosman.ravenow.LocalAppTheme
import com.aiosman.ravenow.LocalNavController
import com.aiosman.ravenow.R
@@ -71,7 +72,9 @@ fun GroupChatListScreen() {
) {
Spacer(modifier = Modifier.height(39.dp))
Image(
painter = painterResource(id = R.mipmap.qs_ql_qs_img),
painter = painterResource(
id = if(AppState.darkMode) R.mipmap.qs_ql_qs_as_img
else R.mipmap.qs_ql_qs_img),
contentDescription = "null data",
modifier = Modifier
.size(181.dp)

View File

@@ -37,6 +37,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.paging.compose.collectAsLazyPagingItems
import com.aiosman.ravenow.AppState
import com.aiosman.ravenow.LocalAppTheme
import com.aiosman.ravenow.R
import com.aiosman.ravenow.ui.composables.MomentCard
@@ -86,7 +87,9 @@ fun TimelineMomentsList() {
modifier = Modifier.fillMaxWidth()
) {
Image(
painter = painterResource(id = R.mipmap.qst_gz_qs_img),
painter = painterResource(
id = if(AppState.darkMode) R.mipmap.qst_gz_qs_as_img
else R.mipmap.qst_gz_qs_img),
contentDescription = null,
modifier = Modifier.size(140.dp)
)

View File

@@ -82,6 +82,7 @@ import com.aiosman.ravenow.ui.composables.toolbar.CollapsingToolbarScaffold
import com.aiosman.ravenow.ui.composables.toolbar.ScrollStrategy
import com.aiosman.ravenow.ui.composables.toolbar.rememberCollapsingToolbarScaffoldState
import com.aiosman.ravenow.ui.index.IndexViewModel
import com.aiosman.ravenow.ui.index.tabs.profile.composable.GalleryGrid
import com.aiosman.ravenow.ui.post.MenuActionItem
import com.aiosman.ravenow.ui.index.tabs.profile.composable.OtherProfileAction
import com.aiosman.ravenow.ui.index.tabs.profile.composable.SelfProfileAction
@@ -599,58 +600,12 @@ fun ProfileV3(
showAgentTab = !isAiAccount
)
Spacer(modifier = Modifier.height(8.dp))
HorizontalPager(
state = pagerState,
) { idx ->
when (idx) {
0 ->
LazyVerticalGrid(
columns = GridCells.Fixed(3),
state = gridState,
modifier = Modifier.fillMaxSize().padding(bottom = 8.dp),
) {
items(moments.size) { idx ->
val moment = moments[idx] ?: return@items
Box(
modifier = Modifier
.fillMaxWidth()
.aspectRatio(1f)
.padding(2.dp)
.noRippleClickable {
navController.navigateToPost(
id = moment.id,
highlightCommentId = 0,
initImagePagerIndex = 0
)
}
) {
CustomAsyncImage(
imageUrl = moment.images[0].thumbnail,
contentDescription = "",
modifier = Modifier.fillMaxSize(),
context = LocalContext.current
)
if (moment.images.size > 1) {
Box(
modifier = Modifier
.padding(top = 8.dp, end = 8.dp)
.align(Alignment.TopEnd)
) {
Image(
modifier = Modifier.size(24.dp),
painter = painterResource(R.drawable.rider_pro_picture_more),
contentDescription = "",
)
}
}
}
}
item {
Spacer(modifier = Modifier.height(120.dp))
}
}
HorizontalPager(
state = pagerState,
) { idx ->
when (idx) {
0 ->
GalleryGrid(moments = moments)
1 ->
UserAgentsList(
agents = agents,

View File

@@ -4,6 +4,7 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
@@ -16,6 +17,27 @@ import com.aiosman.ravenow.entity.MomentEntity
import com.aiosman.ravenow.ui.composables.CustomAsyncImage
import com.aiosman.ravenow.ui.modifiers.noRippleClickable
import com.aiosman.ravenow.ui.navigateToPost
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.ui.Alignment
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.sp
import com.aiosman.ravenow.LocalAppTheme
import com.aiosman.ravenow.R
import androidx.compose.material3.Text
import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.foundation.lazy.grid.itemsIndexed
import androidx.compose.foundation.lazy.grid.rememberLazyGridState
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import com.aiosman.ravenow.AppState
@Composable
fun GalleryItem(
@@ -23,6 +45,7 @@ fun GalleryItem(
idx: Int = 0
) {
val navController = LocalNavController.current
val AppColors = LocalAppTheme.current
Box(
modifier = Modifier
@@ -46,16 +69,142 @@ fun GalleryItem(
moment.id
)
}
) {
CustomAsyncImage(
LocalContext.current,
moment.images[0].thumbnail,
modifier = Modifier
.fillMaxSize(),
contentDescription = "",
contentScale = ContentScale.Crop,
)
// 检查图片列表是否为空
if (moment.images.isEmpty()) {
// 显示占位符内容类似于EmptyAgentsView
Column(
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 60.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
painter = painterResource(R.mipmap.qs_dt_qs_img),
contentDescription = "暂无图片",
modifier = Modifier.size(181.dp),
)
Spacer(modifier = Modifier.height(24.dp))
Text(
text = "故事还没开始",
fontSize = 12.sp,
color = AppColors.text,
fontWeight = FontWeight.W600
)
Spacer(modifier = Modifier.height(8.dp))
Text(
text = "发布一条动态,和世界打个招呼吧",
fontSize = 14.sp,
color = AppColors.secondaryText,
fontWeight = FontWeight.W400
)
}
} else {
CustomAsyncImage(
LocalContext.current,
moment.images[0].thumbnail,
modifier = Modifier
.fillMaxSize(),
contentDescription = "",
contentScale = ContentScale.Crop,
)
}
}
}
}
@Composable
fun GalleryGrid(
moments: List<MomentEntity>
) {
val navController = LocalNavController.current
val AppColors = LocalAppTheme.current
val gridState = rememberLazyGridState()
if (moments.isEmpty()) {
Column(
modifier = Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState())
.padding(vertical = 60.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
painter = painterResource(
id = if(AppState.darkMode) R.mipmap.qs_dt_qs_as_img
else R.mipmap.qs_dt_qs_img),
contentDescription = "暂无图片",
modifier = Modifier.size(181.dp),
)
Spacer(modifier = Modifier.height(24.dp))
Text(
text = "故事还没开始",
fontSize = 12.sp,
color = AppColors.text,
fontWeight = FontWeight.W600
)
Spacer(modifier = Modifier.height(8.dp))
Text(
text = "发布一条动态,和世界打个招呼吧",
fontSize = 14.sp,
color = AppColors.secondaryText,
fontWeight = FontWeight.W400
)
}
} else {
LazyVerticalGrid(
columns = GridCells.Fixed(3),
state = gridState,
modifier = Modifier.fillMaxSize().padding(bottom = 8.dp),
) {
itemsIndexed(moments) { idx, moment ->
if (moment != null) {
Box(
modifier = Modifier
.fillMaxWidth()
.aspectRatio(1f)
.padding(2.dp)
.noRippleClickable {
navController.navigateToPost(
id = moment.id,
highlightCommentId = 0,
initImagePagerIndex = 0
)
}
) {
CustomAsyncImage(
imageUrl = moment.images[0].thumbnail,
contentDescription = "",
modifier = Modifier.fillMaxSize(),
context = LocalContext.current
)
if (moment.images.size > 1) {
Box(
modifier = Modifier
.padding(top = 8.dp, end = 8.dp)
.align(Alignment.TopEnd)
) {
Image(
modifier = Modifier.size(24.dp),
painter = painterResource(R.drawable.rider_pro_picture_more),
contentDescription = "",
)
}
}
}
}
}
item {
Spacer(modifier = Modifier.height(120.dp))
}
}
}
}

View File

@@ -35,6 +35,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.aiosman.ravenow.AppState
import com.aiosman.ravenow.GuestLoginCheckOut
import com.aiosman.ravenow.GuestLoginCheckOutScene
import com.aiosman.ravenow.LocalAppTheme
@@ -203,7 +204,9 @@ fun EmptyAgentsView() {
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
painter = painterResource(R.mipmap.qs_ai_qs_img),
painter = painterResource(
id =if(AppState.darkMode) R.mipmap.qs_ai_qs_as_img
else R.mipmap.qs_ai_qs_img),
contentDescription = "暂无Agent",
modifier = Modifier.size(181.dp),
)

View File

@@ -318,7 +318,9 @@ fun MomentResultTab() {
verticalArrangement = Arrangement.Center
) {
androidx.compose.foundation.Image(
painter = painterResource(id = R.mipmap.syss_yh_qs_img),
painter = painterResource(
id = if(AppState.darkMode) R.mipmap.syss_yh_qs_as_img
else R.mipmap.syss_yh_qs_img),
contentDescription = "No Comment",
modifier = Modifier.size(140.dp)
)
@@ -379,7 +381,9 @@ fun UserResultTab() {
verticalArrangement = Arrangement.Center
) {
androidx.compose.foundation.Image(
painter = painterResource(id = R.mipmap.syss_yh_qs_img),
painter = painterResource(
id = if(AppState.darkMode) R.mipmap.syss_yh_qs_as_img
else R.mipmap.syss_yh_qs_img),
contentDescription = "No Comment",
modifier = Modifier.size(140.dp)
)

View File

@@ -94,7 +94,9 @@ fun LikeNoticeScreen() {
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
painter = painterResource(id = R.mipmap.qst_z_qs_img),
painter = painterResource(
id =if(AppState.darkMode) R.mipmap.qst_z_qs_as_img
else R.mipmap.qst_z_qs_img),
contentDescription = "No Notice",
modifier = Modifier.size(181.dp)
)

Binary file not shown.

After

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 866 B