群聊消息页面、群聊成员页面UI调整

进入群聊后判断当前用户是否为群主,若为群主则显示“添加成员、群资料设置、群可见性、删除成员”组件;替换组件图标
This commit is contained in:
2025-11-19 18:37:43 +08:00
parent 2f602e37b1
commit f89564e60a
11 changed files with 211 additions and 159 deletions

View File

@@ -44,6 +44,7 @@ import com.aiosman.ravenow.ui.composables.PointsPaymentDialog
import com.aiosman.ravenow.ui.composables.StatusBarSpacer import com.aiosman.ravenow.ui.composables.StatusBarSpacer
import com.aiosman.ravenow.ui.index.NavItem import com.aiosman.ravenow.ui.index.NavItem
import com.aiosman.ravenow.ui.modifiers.noRippleClickable import com.aiosman.ravenow.ui.modifiers.noRippleClickable
import com.aiosman.ravenow.ui.navigateToAddGroupMember
import com.aiosman.ravenow.ui.navigateToGroupMembers import com.aiosman.ravenow.ui.navigateToGroupMembers
import com.aiosman.ravenow.ui.navigateToGroupProfileSettings import com.aiosman.ravenow.ui.navigateToGroupProfileSettings
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -173,7 +174,7 @@ fun GroupChatInfoScreen(groupId: String) {
) )
Spacer(modifier = Modifier.width(4.dp)) Spacer(modifier = Modifier.width(4.dp))
Text( Text(
text = "${viewModel.groupInfo?.memberCount ?: 0}", text = "${viewModel.groupInfo?.memberCount ?: 0}${stringResource(R.string.people)}",
style = androidx.compose.ui.text.TextStyle( style = androidx.compose.ui.text.TextStyle(
color = AppColors.text.copy(alpha = 0.7f), color = AppColors.text.copy(alpha = 0.7f),
fontSize = 11.sp fontSize = 11.sp
@@ -187,38 +188,42 @@ fun GroupChatInfoScreen(groupId: String) {
item { item {
Spacer(modifier = Modifier.height(10.dp)) Spacer(modifier = Modifier.height(10.dp))
Row( Row(
modifier = Modifier.fillMaxWidth(), modifier = Modifier
.padding(horizontal = 24.dp)
.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceEvenly horizontalArrangement = Arrangement.SpaceEvenly
) { ) {
// 添加其他人 if (viewModel.groupInfo?.isCreator == true) {
Column( // 添加其他人
horizontalAlignment = Alignment.CenterHorizontally, Column(
modifier = Modifier.noRippleClickable { horizontalAlignment = Alignment.CenterHorizontally,
// TODO: 实现添加其他人功能 modifier = Modifier.noRippleClickable {
} navController.navigateToAddGroupMember(groupId, viewModel.groupInfo?.groupName)
) { }
Box(
modifier = Modifier
.size(30.dp)
.clip(CircleShape),
contentAlignment = Alignment.Center
) { ) {
Image( Box(
painter = painterResource(R.drawable.rider_pro_add_other), modifier = Modifier
modifier = Modifier.size(20.dp), .size(30.dp)
contentDescription = null, .clip(CircleShape),
colorFilter = ColorFilter.tint( contentAlignment = Alignment.Center
AppColors.text) ) {
Image(
painter = painterResource(R.drawable.rider_pro_add_other),
modifier = Modifier.size(20.dp),
contentDescription = null,
colorFilter = ColorFilter.tint(
AppColors.text)
)
}
Spacer(modifier = Modifier.height(5.dp))
Text(
text = stringResource(R.string.group_chat_info_add_member),
style = androidx.compose.ui.text.TextStyle(
color = AppColors.text,
fontSize = 11.sp
)
) )
} }
Spacer(modifier = Modifier.height(5.dp))
Text(
text = stringResource(R.string.group_chat_info_add_member),
style = androidx.compose.ui.text.TextStyle(
color = AppColors.text,
fontSize = 11.sp
)
)
} }
// 通知设置 // 通知设置
@@ -258,11 +263,11 @@ fun GroupChatInfoScreen(groupId: String) {
) )
} }
// 退出群聊 // 分享群聊
Column( Column(
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.noRippleClickable { modifier = Modifier.noRippleClickable {
// TODO: 实现退出群聊功能 // TODO: 实现分享功能
} }
) { ) {
Box( Box(
@@ -272,7 +277,7 @@ fun GroupChatInfoScreen(groupId: String) {
contentAlignment = Alignment.Center contentAlignment = Alignment.Center
) { ) {
Image( Image(
painter = painterResource(R.drawable.group_info_edit), painter = painterResource(R.mipmap.icon_share),
modifier = Modifier.size(20.dp), modifier = Modifier.size(20.dp),
contentDescription = null, contentDescription = null,
colorFilter = ColorFilter.tint(AppColors.text) colorFilter = ColorFilter.tint(AppColors.text)
@@ -303,10 +308,9 @@ fun GroupChatInfoScreen(groupId: String) {
) { ) {
Row(verticalAlignment = Alignment.CenterVertically) { Row(verticalAlignment = Alignment.CenterVertically) {
Image( Image(
painter = painterResource(R.drawable.group_info_edit), painter = painterResource(R.mipmap.icons_brain),
modifier = Modifier.size(16.dp), modifier = Modifier.size(20.dp),
contentDescription = null, contentDescription = null,
colorFilter = ColorFilter.tint(AppColors.text)
) )
Spacer(modifier = Modifier.width(6.dp)) Spacer(modifier = Modifier.width(6.dp))
Column(modifier = Modifier.weight(1f)) { Column(modifier = Modifier.weight(1f)) {
@@ -315,7 +319,6 @@ fun GroupChatInfoScreen(groupId: String) {
style = androidx.compose.ui.text.TextStyle( style = androidx.compose.ui.text.TextStyle(
color = AppColors.text, color = AppColors.text,
fontSize = 15.sp, fontSize = 15.sp,
fontWeight = FontWeight.Bold
) )
) )
Spacer(modifier = Modifier.height(2.dp)) Spacer(modifier = Modifier.height(2.dp))
@@ -379,81 +382,84 @@ fun GroupChatInfoScreen(groupId: String) {
item { item {
Spacer(modifier = Modifier.height(13.dp)) Spacer(modifier = Modifier.height(13.dp))
// 群资料设置 // 仅当当前用户是群聊创建者时显示以下组件
Row( if (viewModel.groupInfo?.isCreator == true) {
modifier = Modifier // 群资料设置
.fillMaxWidth() Row(
.clip(RoundedCornerShape(8.dp)) modifier = Modifier
.padding(12.dp) .fillMaxWidth()
.noRippleClickable { .clip(RoundedCornerShape(8.dp))
navController.navigateToGroupProfileSettings(groupId) .padding(12.dp)
}, .noRippleClickable {
verticalAlignment = Alignment.CenterVertically navController.navigateToGroupProfileSettings(groupId)
) { },
Image( verticalAlignment = Alignment.CenterVertically
painter = painterResource(R.drawable.group_info_edit), ) {
modifier = Modifier.size(20.dp), Image(
contentDescription = null, painter = painterResource(R.mipmap.fengm),
colorFilter = ColorFilter.tint( modifier = Modifier.size(20.dp),
AppColors.text) contentDescription = null,
) colorFilter = ColorFilter.tint(
Spacer(modifier = Modifier.width(10.dp)) AppColors.text)
Text( )
text = stringResource(R.string.group_chat_info_group_settings), Spacer(modifier = Modifier.width(10.dp))
style = androidx.compose.ui.text.TextStyle( Text(
color = AppColors.text, text = stringResource(R.string.group_chat_info_group_settings),
fontSize = 15.sp style = androidx.compose.ui.text.TextStyle(
), color = AppColors.text,
modifier = Modifier.weight(1f) fontSize = 15.sp
) ),
Image( modifier = Modifier.weight(1f)
painter = painterResource(R.drawable.rave_now_nav_right), )
modifier = Modifier.size(16.dp), Image(
contentDescription = null, painter = painterResource(R.drawable.rave_now_nav_right),
) modifier = Modifier.size(16.dp),
} contentDescription = null,
)
// 群可见性 }
Row(
modifier = Modifier // 群可见性
.fillMaxWidth() Row(
.clip(RoundedCornerShape(8.dp)) modifier = Modifier
.padding(12.dp) .fillMaxWidth()
.noRippleClickable { .clip(RoundedCornerShape(8.dp))
showVisibilityDialog = true .padding(12.dp)
}, .noRippleClickable {
verticalAlignment = Alignment.CenterVertically showVisibilityDialog = true
) { },
Image( verticalAlignment = Alignment.CenterVertically
painter = painterResource(R.mipmap.rider_pro_change_password), ) {
modifier = Modifier.size(20.dp), Image(
contentDescription = null, painter = painterResource(R.mipmap.rider_pro_change_password),
colorFilter = ColorFilter.tint(AppColors.text) modifier = Modifier.size(20.dp),
) contentDescription = null,
Spacer(modifier = Modifier.width(10.dp)) colorFilter = ColorFilter.tint(AppColors.text)
Text( )
text = stringResource(R.string.group_chat_info_group_visibility), Spacer(modifier = Modifier.width(10.dp))
style = androidx.compose.ui.text.TextStyle( Text(
color = AppColors.text, text = stringResource(R.string.group_chat_info_group_visibility),
fontSize = 15.sp style = androidx.compose.ui.text.TextStyle(
), color = AppColors.text,
modifier = Modifier.weight(1f) fontSize = 15.sp
) ),
// 未解锁时才显示"待解锁" modifier = Modifier.weight(1f)
if (viewModel.groupInfo?.privateFeePaid != true) { )
Text( // 未解锁时才显示"待解锁"
text = stringResource(R.string.group_chat_info_locked), if (viewModel.groupInfo?.privateFeePaid != true) {
style = androidx.compose.ui.text.TextStyle( Text(
color = AppColors.text.copy(alpha = 0.5f), text = stringResource(R.string.group_chat_info_locked),
fontSize = 11.sp style = androidx.compose.ui.text.TextStyle(
color = AppColors.text.copy(alpha = 0.5f),
fontSize = 11.sp
)
)
}
Image(
painter = painterResource(R.drawable.rave_now_nav_right),
modifier = Modifier.size(16.dp),
contentDescription = null,
) )
)
} }
Image(
painter = painterResource(R.drawable.rave_now_nav_right),
modifier = Modifier.size(16.dp),
contentDescription = null,
)
} }
// 成员管理 // 成员管理
@@ -468,15 +474,21 @@ fun GroupChatInfoScreen(groupId: String) {
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Image( Image(
painter = painterResource(R.drawable.group_info_users), painter = painterResource(R.mipmap.icons_users),
modifier = Modifier.size(20.dp), modifier = Modifier.size(25.dp),
contentDescription = null, contentDescription = null,
colorFilter = ColorFilter.tint( colorFilter = ColorFilter.tint(
AppColors.text) AppColors.text)
) )
Spacer(modifier = Modifier.width(10.dp)) Spacer(modifier = Modifier.width(10.dp))
Text( Text(
text = stringResource(R.string.group_chat_info_member_manage), text = stringResource(
if (viewModel.groupInfo?.isCreator == true) {
R.string.group_chat_info_member_manage
} else {
R.string.group_members_title
}
),
style = androidx.compose.ui.text.TextStyle( style = androidx.compose.ui.text.TextStyle(
color = AppColors.text, color = AppColors.text,
fontSize = 15.sp fontSize = 15.sp
@@ -499,8 +511,8 @@ fun GroupChatInfoScreen(groupId: String) {
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Image( Image(
painter = painterResource(R.drawable.group_info_edit), painter = painterResource(R.mipmap.iconsgallery),
modifier = Modifier.size(20.dp), modifier = Modifier.size(25.dp),
contentDescription = null, contentDescription = null,
colorFilter = ColorFilter.tint( colorFilter = ColorFilter.tint(
AppColors.text) AppColors.text)
@@ -520,36 +532,70 @@ fun GroupChatInfoScreen(groupId: String) {
contentDescription = null, contentDescription = null,
) )
} }
// 解散群聊 if (viewModel.groupInfo?.isCreator == true) {
Row( // 解散群聊(仅群主)
modifier = Modifier Row(
.fillMaxWidth() modifier = Modifier
.clip(RoundedCornerShape(8.dp)) .fillMaxWidth()
.padding(12.dp) .clip(RoundedCornerShape(8.dp))
.noRippleClickable { }, .padding(12.dp)
verticalAlignment = Alignment.CenterVertically .noRippleClickable { },
) { verticalAlignment = Alignment.CenterVertically
Image( ) {
painter = painterResource(R.drawable.group_info_exit), Spacer(modifier = Modifier.width(3.dp))
modifier = Modifier.size(20.dp), Image(
contentDescription = null, painter = painterResource(R.mipmap.iconslogout),
colorFilter = ColorFilter.tint(Color(0xFFFF3B30)) modifier = Modifier.size(20.dp),
) contentDescription = null,
Spacer(modifier = Modifier.width(10.dp)) colorFilter = ColorFilter.tint(Color(0xFFFF3B30))
Text( )
text = stringResource(R.string.group_chat_info_dissolve), Spacer(modifier = Modifier.width(11.dp))
style = androidx.compose.ui.text.TextStyle( Text(
color = Color(0xFFFF3B30), text = stringResource(R.string.group_chat_info_dissolve),
fontSize = 15.sp style = androidx.compose.ui.text.TextStyle(
), color = Color(0xFFFF3B30),
modifier = Modifier.weight(1f) fontSize = 15.sp
) ),
Image( modifier = Modifier.weight(1f)
painter = painterResource(R.drawable.rave_now_nav_right), )
modifier = Modifier.size(18.dp), Image(
contentDescription = null, painter = painterResource(R.drawable.rave_now_nav_right),
colorFilter = ColorFilter.tint(Color(0xFFFF3B30)) modifier = Modifier.size(18.dp),
) contentDescription = null
)
}
} else {
// 退出群聊(非群主)
Row(
modifier = Modifier
.fillMaxWidth()
.clip(RoundedCornerShape(8.dp))
.padding(12.dp)
.noRippleClickable { },
verticalAlignment = Alignment.CenterVertically
) {
Spacer(modifier = Modifier.width(3.dp))
Image(
painter = painterResource(R.drawable.group_info_exit),
modifier = Modifier.size(20.dp),
contentDescription = null,
colorFilter = ColorFilter.tint(Color(0xFFFF3B30))
)
Spacer(modifier = Modifier.width(11.dp))
Text(
text = stringResource(R.string.group_chat_info_quit),
style = androidx.compose.ui.text.TextStyle(
color = Color(0xFFFF3B30),
fontSize = 15.sp
),
modifier = Modifier.weight(1f)
)
Image(
painter = painterResource(R.drawable.rave_now_nav_right),
modifier = Modifier.size(18.dp),
contentDescription = null
)
}
} }
} }
} }

View File

@@ -107,16 +107,16 @@ fun GroupMembersScreen(groupId: String) {
textAlign = TextAlign.Center textAlign = TextAlign.Center
) )
androidx.compose.foundation.Image( // androidx.compose.foundation.Image(
painter = painterResource(R.drawable.rider_pro_add_other), // painter = painterResource(R.drawable.rider_pro_add_other),
contentDescription = stringResource(R.string.group_chat_info_add_member), // contentDescription = stringResource(R.string.group_chat_info_add_member),
colorFilter = ColorFilter.tint(AppColors.text), // colorFilter = ColorFilter.tint(AppColors.text),
modifier = Modifier // modifier = Modifier
.size(24.dp) // .size(24.dp)
.noRippleClickable { // .noRippleClickable {
navController.navigateToAddGroupMember(groupId, viewModel.groupInfo?.groupName) // navController.navigateToAddGroupMember(groupId, viewModel.groupInfo?.groupName)
} // }
) // )
} }
} }
@@ -391,7 +391,7 @@ private fun MemberItem(
Spacer(modifier = Modifier.weight(1f)) Spacer(modifier = Modifier.weight(1f))
// 菜单按钮 // 菜单按钮
if (isAdmin) {
IconButton( IconButton(
onClick = { onMenuClick(itemPosition, itemHeight) }, onClick = { onMenuClick(itemPosition, itemHeight) },
modifier = Modifier.size(24.dp) modifier = Modifier.size(24.dp)
@@ -404,6 +404,7 @@ private fun MemberItem(
.size(24.dp) .size(24.dp)
) )
} }
}
Spacer(modifier = Modifier.width(8.dp)) Spacer(modifier = Modifier.width(8.dp))

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 847 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 B

View File

@@ -220,6 +220,7 @@
<string name="no_memory">記憶がありません</string> <string name="no_memory">記憶がありません</string>
<string name="add_memory">上部のボタンをクリックしてグループ記憶を追加してください</string> <string name="add_memory">上部のボタンをクリックしてグループ記憶を追加してください</string>
<string name="recent_search">けんさくりれき</string> <string name="recent_search">けんさくりれき</string>
<string name="people"></string>
<!-- Create Bottom Sheet --> <!-- Create Bottom Sheet -->
<string name="create_title">作成</string> <string name="create_title">作成</string>
@@ -249,7 +250,7 @@
<string name="Reload">再ロード</string> <string name="Reload">再ロード</string>
<!-- Login page --> <!-- Login page -->
<string name="join_party_carnival">パーティーに参加して、一緒に盛り上がろ</string> <string name="join_party_carnival">Paip.AIに参加して、パーティーを楽しも</string>
<!-- Tab labels --> <!-- Tab labels -->
<string name="tab_recommend">おすすめ</string> <string name="tab_recommend">おすすめ</string>
@@ -290,6 +291,7 @@
<string name="group_chat_info_member_manage">メンバー管理</string> <string name="group_chat_info_member_manage">メンバー管理</string>
<string name="group_chat_info_wallpaper">グループチャット壁紙</string> <string name="group_chat_info_wallpaper">グループチャット壁紙</string>
<string name="group_chat_info_dissolve">グループチャットを解散</string> <string name="group_chat_info_dissolve">グループチャットを解散</string>
<string name="group_chat_info_quit">グループチャット終了</string>
<string name="group_chat_info_add_group_memory">グループメモリを追加</string> <string name="group_chat_info_add_group_memory">グループメモリを追加</string>
<string name="group_chat_info_member_count">%d人のメンバー</string> <string name="group_chat_info_member_count">%d人のメンバー</string>
<string name="group_chat_info_memory_input_hint">グループの記憶内容を入力、例えば、グループのメンバーは科学技術と設計を議論するのが好きである....</string> <string name="group_chat_info_memory_input_hint">グループの記憶内容を入力、例えば、グループのメンバーは科学技術と設計を議論するのが好きである....</string>
@@ -358,7 +360,7 @@
<string name="how_to_earn">獲得方法</string> <string name="how_to_earn">獲得方法</string>
<string name="total_earned">合計獲得</string> <string name="total_earned">合計獲得</string>
<string name="total_spent">合計支出</string> <string name="total_spent">合計支出</string>
<string name="my_pai_coin">マイパイコイン</string> <string name="my_pai_coin">私のPai coin</string>
<string name="recharge">チャージ</string> <string name="recharge">チャージ</string>
<string name="current_balance">現在の残高</string> <string name="current_balance">現在の残高</string>
<string name="load_more">さらに読み込む</string> <string name="load_more">さらに読み込む</string>

View File

@@ -163,7 +163,7 @@
<string name="public_label">公开</string> <string name="public_label">公开</string>
<string name="private_label">私有</string> <string name="private_label">私有</string>
<string name="favourites_null">这里还空着呢~</string> <string name="favourites_null">这里还空着呢~</string>
<string name="people"></string>
<string name="agent_chat_list_title">智能体聊天</string> <string name="agent_chat_list_title">智能体聊天</string>
<string name="agent_chat_empty_title">AI 在等你的开场白</string> <string name="agent_chat_empty_title">AI 在等你的开场白</string>
<string name="agent_chat_empty_subtitle">去首页探索一下,主动发起对话!</string> <string name="agent_chat_empty_subtitle">去首页探索一下,主动发起对话!</string>
@@ -292,6 +292,7 @@
<string name="group_chat_info_member_manage">成员管理</string> <string name="group_chat_info_member_manage">成员管理</string>
<string name="group_chat_info_wallpaper">群聊壁纸</string> <string name="group_chat_info_wallpaper">群聊壁纸</string>
<string name="group_chat_info_dissolve">解散群聊</string> <string name="group_chat_info_dissolve">解散群聊</string>
<string name="group_chat_info_quit">退出群聊</string>
<string name="group_chat_info_add_group_memory">添加群记忆</string> <string name="group_chat_info_add_group_memory">添加群记忆</string>
<string name="group_chat_info_member_count">%d 位成员</string> <string name="group_chat_info_member_count">%d 位成员</string>
<string name="group_chat_info_memory_input_hint">输入群记忆内容,例如:群成员喜欢讨论科技和设计....</string> <string name="group_chat_info_memory_input_hint">输入群记忆内容,例如:群成员喜欢讨论科技和设计....</string>
@@ -362,7 +363,7 @@
<string name="how_to_earn">如何赚取</string> <string name="how_to_earn">如何赚取</string>
<string name="total_earned">总获得</string> <string name="total_earned">总获得</string>
<string name="total_spent">总支出</string> <string name="total_spent">总支出</string>
<string name="my_pai_coin">我的派币</string> <string name="my_pai_coin">我的Pai coin</string>
<string name="recharge">充值</string> <string name="recharge">充值</string>
<string name="current_balance">当前余额</string> <string name="current_balance">当前余额</string>
<string name="load_more">加载更多</string> <string name="load_more">加载更多</string>

View File

@@ -219,6 +219,7 @@
<string name="no_memory">No memory yet</string> <string name="no_memory">No memory yet</string>
<string name="add_memory">Click the button above to add group memory</string> <string name="add_memory">Click the button above to add group memory</string>
<string name="recent_search">Recent Search</string> <string name="recent_search">Recent Search</string>
<string name="people">people</string>
<!-- Create Bottom Sheet --> <!-- Create Bottom Sheet -->
<string name="create_title">Create</string> <string name="create_title">Create</string>
@@ -248,7 +249,7 @@
<string name="Reload">Reload</string> <string name="Reload">Reload</string>
<!-- Login page --> <!-- Login page -->
<string name="join_party_carnival">Join the party, let\'s celebrate together</string> <string name="join_party_carnival">Join Paip.AI, let\'s Party</string>
<!-- Tab labels --> <!-- Tab labels -->
<string name="tab_recommend">Recommend</string> <string name="tab_recommend">Recommend</string>
@@ -289,6 +290,7 @@
<string name="group_chat_info_member_manage">Member Management</string> <string name="group_chat_info_member_manage">Member Management</string>
<string name="group_chat_info_wallpaper">Group Chat Wallpaper</string> <string name="group_chat_info_wallpaper">Group Chat Wallpaper</string>
<string name="group_chat_info_dissolve">Dissolve Group Chat</string> <string name="group_chat_info_dissolve">Dissolve Group Chat</string>
<string name="group_chat_info_quit">Quit the group</string>
<string name="group_chat_info_add_group_memory">Add Group Memory</string> <string name="group_chat_info_add_group_memory">Add Group Memory</string>
<string name="group_chat_info_member_count">%d members</string> <string name="group_chat_info_member_count">%d members</string>
<string name="group_chat_info_memory_input_hint">Input group memory content, for example: Group members enjoy discussing technology and design …</string> <string name="group_chat_info_memory_input_hint">Input group memory content, for example: Group members enjoy discussing technology and design …</string>