Merge branch 'main' into zhong_1
@@ -35,6 +35,7 @@ import com.aiosman.ravenow.LocalSharedTransitionScope
|
|||||||
import com.aiosman.ravenow.ui.about.AboutScreen
|
import com.aiosman.ravenow.ui.about.AboutScreen
|
||||||
import com.aiosman.ravenow.ui.account.AccountEditScreen2
|
import com.aiosman.ravenow.ui.account.AccountEditScreen2
|
||||||
import com.aiosman.ravenow.ui.account.AccountSetting
|
import com.aiosman.ravenow.ui.account.AccountSetting
|
||||||
|
import com.aiosman.ravenow.ui.account.BlockedUsersScreen
|
||||||
import com.aiosman.ravenow.ui.account.MbtiSelectScreen
|
import com.aiosman.ravenow.ui.account.MbtiSelectScreen
|
||||||
import com.aiosman.ravenow.ui.account.RemoveAccountScreen
|
import com.aiosman.ravenow.ui.account.RemoveAccountScreen
|
||||||
import com.aiosman.ravenow.ui.account.ResetPasswordScreen
|
import com.aiosman.ravenow.ui.account.ResetPasswordScreen
|
||||||
@@ -135,6 +136,7 @@ sealed class NavigationRoute(
|
|||||||
data object ZodiacSelect : NavigationRoute("ZodiacSelect")
|
data object ZodiacSelect : NavigationRoute("ZodiacSelect")
|
||||||
data object ScanQr : NavigationRoute("ScanQr")
|
data object ScanQr : NavigationRoute("ScanQr")
|
||||||
data object AiPromptEdit : NavigationRoute("AiPromptEdit/{chatAIId}")
|
data object AiPromptEdit : NavigationRoute("AiPromptEdit/{chatAIId}")
|
||||||
|
data object BlockedUsersScreen : NavigationRoute("BlockedUsersScreen")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -439,6 +441,9 @@ fun NavigationController(
|
|||||||
composable(route = NavigationRoute.ChangePasswordScreen.route) {
|
composable(route = NavigationRoute.ChangePasswordScreen.route) {
|
||||||
ChangePasswordScreen()
|
ChangePasswordScreen()
|
||||||
}
|
}
|
||||||
|
composable(route = NavigationRoute.BlockedUsersScreen.route) {
|
||||||
|
BlockedUsersScreen()
|
||||||
|
}
|
||||||
composable(route = NavigationRoute.RemoveAccountScreen.route) {
|
composable(route = NavigationRoute.RemoveAccountScreen.route) {
|
||||||
RemoveAccountScreen()
|
RemoveAccountScreen()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -161,9 +161,7 @@ fun AccountSetting() {
|
|||||||
SecurityOptionItem(
|
SecurityOptionItem(
|
||||||
iconRes = R.mipmap.icons_block,
|
iconRes = R.mipmap.icons_block,
|
||||||
label = stringResource(R.string.blocked_users),
|
label = stringResource(R.string.blocked_users),
|
||||||
onClick = {
|
onClick = { navController.navigate(NavigationRoute.BlockedUsersScreen.route) }
|
||||||
// TODO: 导航到屏蔽用户页面
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
SecurityOptionItem(
|
SecurityOptionItem(
|
||||||
|
|||||||
@@ -0,0 +1,127 @@
|
|||||||
|
package com.aiosman.ravenow.ui.account
|
||||||
|
|
||||||
|
import androidx.compose.foundation.Image
|
||||||
|
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.fillMaxSize
|
||||||
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.layout.size
|
||||||
|
import androidx.compose.foundation.layout.width
|
||||||
|
import androidx.compose.material.Text
|
||||||
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.graphics.ColorFilter
|
||||||
|
import androidx.compose.ui.res.painterResource
|
||||||
|
import androidx.compose.ui.res.stringResource
|
||||||
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
|
import androidx.compose.ui.unit.sp
|
||||||
|
import com.aiosman.ravenow.LocalAppTheme
|
||||||
|
import com.aiosman.ravenow.LocalNavController
|
||||||
|
import com.aiosman.ravenow.R
|
||||||
|
import com.aiosman.ravenow.ui.composables.StatusBarSpacer
|
||||||
|
import com.aiosman.ravenow.ui.modifiers.noRippleClickable
|
||||||
|
|
||||||
|
private object BlockedUsersConstants {
|
||||||
|
const val BACK_BUTTON_SIZE = 36
|
||||||
|
const val BACK_BUTTON_ICON_SIZE = 24
|
||||||
|
const val BACK_BUTTON_START_PADDING = 19
|
||||||
|
const val HEADER_VERTICAL_PADDING = 16
|
||||||
|
const val TITLE_OFFSET_X = 19
|
||||||
|
const val TITLE_TEXT_SIZE = 17
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
private fun CircularBackButton(
|
||||||
|
onClick: () -> Unit,
|
||||||
|
modifier: Modifier = Modifier
|
||||||
|
) {
|
||||||
|
val appColors = LocalAppTheme.current
|
||||||
|
Image(
|
||||||
|
painter = painterResource(id = R.drawable.rider_pro_back_icon),
|
||||||
|
contentDescription = "返回",
|
||||||
|
modifier = modifier
|
||||||
|
.size(BlockedUsersConstants.BACK_BUTTON_ICON_SIZE.dp)
|
||||||
|
.noRippleClickable { onClick() },
|
||||||
|
colorFilter = ColorFilter.tint(appColors.text)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 被屏蔽的用户界面
|
||||||
|
*/
|
||||||
|
@Composable
|
||||||
|
fun BlockedUsersScreen() {
|
||||||
|
val appColors = LocalAppTheme.current
|
||||||
|
val navController = LocalNavController.current
|
||||||
|
|
||||||
|
Column(
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxSize()
|
||||||
|
.background(appColors.background),
|
||||||
|
) {
|
||||||
|
StatusBarSpacer()
|
||||||
|
|
||||||
|
// 顶部标题栏
|
||||||
|
Box(
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxWidth()
|
||||||
|
.padding(vertical = BlockedUsersConstants.HEADER_VERTICAL_PADDING.dp)
|
||||||
|
) {
|
||||||
|
Row(
|
||||||
|
modifier = Modifier.fillMaxWidth(),
|
||||||
|
verticalAlignment = Alignment.CenterVertically
|
||||||
|
) {
|
||||||
|
CircularBackButton(
|
||||||
|
onClick = { navController.navigateUp() },
|
||||||
|
modifier = Modifier.padding(start = BlockedUsersConstants.BACK_BUTTON_START_PADDING.dp)
|
||||||
|
)
|
||||||
|
Spacer(modifier = Modifier.width(12.dp))
|
||||||
|
Text(
|
||||||
|
text = stringResource(R.string.blocked_users),
|
||||||
|
fontWeight = FontWeight.W800,
|
||||||
|
fontSize = BlockedUsersConstants.TITLE_TEXT_SIZE.sp,
|
||||||
|
color = appColors.text
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 缺省状态
|
||||||
|
Box(
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxSize()
|
||||||
|
.padding(top = 149.dp),
|
||||||
|
contentAlignment = Alignment.TopCenter
|
||||||
|
) {
|
||||||
|
Column(
|
||||||
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
|
modifier = Modifier.fillMaxWidth()
|
||||||
|
) {
|
||||||
|
Image(
|
||||||
|
painter = painterResource(id = R.mipmap.frame_23),
|
||||||
|
contentDescription = null,
|
||||||
|
modifier = Modifier.size(181.dp, 153.dp)
|
||||||
|
)
|
||||||
|
Spacer(modifier = Modifier.size(9.dp))
|
||||||
|
Text(
|
||||||
|
text = stringResource(R.string.no_users_isolated_yet),
|
||||||
|
color = appColors.text,
|
||||||
|
fontSize = 16.sp,
|
||||||
|
fontWeight = FontWeight.W600,
|
||||||
|
textAlign = TextAlign.Center,
|
||||||
|
modifier = Modifier.padding(horizontal = 24.dp),
|
||||||
|
maxLines = 2,
|
||||||
|
overflow = TextOverflow.Ellipsis
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -124,27 +124,18 @@ fun CommentNoticeScreen() {
|
|||||||
modifier = Modifier.fillMaxWidth()
|
modifier = Modifier.fillMaxWidth()
|
||||||
) {
|
) {
|
||||||
androidx.compose.foundation.Image(
|
androidx.compose.foundation.Image(
|
||||||
painter = painterResource(
|
painter = painterResource(id = R.mipmap.invalid_name_5),
|
||||||
id = if(AppState.darkMode) R.mipmap.tietie_dark
|
|
||||||
else R.mipmap.invalid_name_11),
|
|
||||||
contentDescription = "No Comment",
|
contentDescription = "No Comment",
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.size(width = 181.dp, height = 153.dp)
|
.size(width = 181.dp, height = 153.dp)
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(24.dp))
|
Spacer(modifier = Modifier.height(9.dp))
|
||||||
Text(
|
Text(
|
||||||
text = "等一位旅人~",
|
text = stringResource(R.string.no_one_pinged_yet),
|
||||||
color = AppColors.text,
|
color = AppColors.text,
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
fontWeight = FontWeight.W600
|
fontWeight = FontWeight.W600
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.size(8.dp))
|
|
||||||
Text(
|
|
||||||
text = "去发布动态,让更多人参与对话",
|
|
||||||
color = AppColors.text,
|
|
||||||
fontSize = 14.sp,
|
|
||||||
fontWeight = FontWeight.W400
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -93,33 +93,29 @@ fun UnderlineTabItem(
|
|||||||
label = "padding"
|
label = "padding"
|
||||||
)
|
)
|
||||||
|
|
||||||
Column(
|
Box(
|
||||||
modifier = modifier
|
modifier = modifier
|
||||||
.noRippleClickable { onClick() },
|
.noRippleClickable { onClick() },
|
||||||
verticalArrangement = Arrangement.Center,
|
contentAlignment = Alignment.Center
|
||||||
horizontalAlignment = Alignment.CenterHorizontally
|
|
||||||
) {
|
) {
|
||||||
Box(
|
// 文本层 - 始终居中,不受下划线影响
|
||||||
|
Text(
|
||||||
|
text = text,
|
||||||
|
fontSize = animatedFontSize.sp,
|
||||||
|
fontWeight = FontWeight.ExtraBold,
|
||||||
|
color = if (isSelected) AppColors.text else AppColors.text.copy(alpha = 0.6f),
|
||||||
|
textAlign = androidx.compose.ui.text.style.TextAlign.Center,
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.padding(horizontal = animatedPadding)
|
.padding(horizontal = animatedPadding)
|
||||||
.padding(top = 13.dp, bottom = 0.dp),
|
)
|
||||||
contentAlignment = Alignment.BottomCenter
|
|
||||||
) {
|
|
||||||
Text(
|
|
||||||
text = text,
|
|
||||||
fontSize = animatedFontSize.sp,
|
|
||||||
fontWeight = FontWeight.ExtraBold,
|
|
||||||
color = if (isSelected) AppColors.text else AppColors.text.copy(alpha = 0.6f),
|
|
||||||
textAlign = androidx.compose.ui.text.style.TextAlign.Center
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 选中状态下显示图标
|
// 下划线层 - 固定在底部,不影响文本位置
|
||||||
if (isSelected) {
|
if (isSelected) {
|
||||||
Box(
|
Box(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
|
.align(Alignment.BottomCenter)
|
||||||
.size(24.dp)
|
.size(24.dp)
|
||||||
.offset(y = (-4).dp),
|
.offset(y = (15).dp),
|
||||||
contentAlignment = Alignment.Center
|
contentAlignment = Alignment.Center
|
||||||
) {
|
) {
|
||||||
Image(
|
Image(
|
||||||
|
|||||||
@@ -134,8 +134,8 @@ fun FavouriteListPage() {
|
|||||||
) {
|
) {
|
||||||
Image(
|
Image(
|
||||||
painter = painterResource(
|
painter = painterResource(
|
||||||
id = if (com.aiosman.ravenow.AppState.darkMode) R.mipmap.invalid_dark
|
id = if (com.aiosman.ravenow.AppState.darkMode) R.mipmap.empty_img
|
||||||
else R.mipmap.invalid_name_1),
|
else R.mipmap.empty_img),
|
||||||
contentDescription = "No favourites",
|
contentDescription = "No favourites",
|
||||||
modifier = Modifier.size(181.dp, 153.dp)
|
modifier = Modifier.size(181.dp, 153.dp)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -125,15 +125,13 @@ fun FollowerListScreen(userId: Int) {
|
|||||||
modifier = Modifier.fillMaxWidth()
|
modifier = Modifier.fillMaxWidth()
|
||||||
) {
|
) {
|
||||||
Image(
|
Image(
|
||||||
painter = painterResource(
|
painter = painterResource(id = R.mipmap.frame_31),
|
||||||
id = if(AppState.darkMode) R.mipmap.frame_4
|
|
||||||
else R.mipmap.invalid_name_8),
|
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.size(181.dp, 153.dp)
|
modifier = Modifier.size(181.dp, 153.dp)
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.size(9.dp)) // 调整间距为9dp
|
Spacer(modifier = Modifier.size(9.dp)) // 调整间距为9dp
|
||||||
androidx.compose.material.Text(
|
androidx.compose.material.Text(
|
||||||
text = stringResource(R.string.follower_empty_title),
|
text = stringResource(R.string.awaiting_traveler),
|
||||||
color = appColors.text,
|
color = appColors.text,
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
fontWeight = FontWeight.W600,
|
fontWeight = FontWeight.W600,
|
||||||
@@ -142,17 +140,6 @@ fun FollowerListScreen(userId: Int) {
|
|||||||
maxLines = 2,
|
maxLines = 2,
|
||||||
overflow = TextOverflow.Ellipsis
|
overflow = TextOverflow.Ellipsis
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.size(8.dp))
|
|
||||||
androidx.compose.material.Text(
|
|
||||||
text = stringResource(R.string.follower_empty_subtitle),
|
|
||||||
color = appColors.text,
|
|
||||||
fontSize = 14.sp,
|
|
||||||
fontWeight = FontWeight.W400,
|
|
||||||
textAlign = TextAlign.Center,
|
|
||||||
modifier = Modifier.padding(horizontal = 24.dp),
|
|
||||||
maxLines = 3,
|
|
||||||
overflow = TextOverflow.Ellipsis
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -115,16 +115,14 @@ fun FollowerNoticeScreen() {
|
|||||||
modifier = Modifier.fillMaxWidth()
|
modifier = Modifier.fillMaxWidth()
|
||||||
) {
|
) {
|
||||||
Image(
|
Image(
|
||||||
painter = painterResource(
|
painter = painterResource(id = R.mipmap.invalid_name_5),
|
||||||
id = if(AppState.darkMode) R.mipmap.frame_4
|
|
||||||
else R.mipmap.invalid_name_8),
|
|
||||||
contentDescription = "No Followers",
|
contentDescription = "No Followers",
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.size(width = 181.dp, height = 153.dp)
|
.size(width = 181.dp, height = 153.dp)
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
Spacer(modifier = Modifier.height(9.dp))
|
||||||
androidx.compose.material.Text(
|
androidx.compose.material.Text(
|
||||||
text = stringResource(R.string.follower_empty_title),
|
text = stringResource(R.string.no_one_pinged_yet),
|
||||||
color = AppColors.text,
|
color = AppColors.text,
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
fontWeight = FontWeight.W600,
|
fontWeight = FontWeight.W600,
|
||||||
@@ -133,17 +131,6 @@ fun FollowerNoticeScreen() {
|
|||||||
maxLines = 2,
|
maxLines = 2,
|
||||||
overflow = TextOverflow.Ellipsis
|
overflow = TextOverflow.Ellipsis
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.size(8.dp))
|
|
||||||
androidx.compose.material.Text(
|
|
||||||
text = stringResource(R.string.follower_empty_subtitle),
|
|
||||||
color = AppColors.text,
|
|
||||||
fontSize = 14.sp,
|
|
||||||
fontWeight = FontWeight.W400,
|
|
||||||
textAlign = TextAlign.Center,
|
|
||||||
modifier = Modifier.padding(horizontal = 24.dp),
|
|
||||||
maxLines = 3,
|
|
||||||
overflow = TextOverflow.Ellipsis
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
@@ -127,15 +127,13 @@ fun FollowingListScreen(userId: Int) {
|
|||||||
modifier = Modifier.fillMaxWidth()
|
modifier = Modifier.fillMaxWidth()
|
||||||
) {
|
) {
|
||||||
Image(
|
Image(
|
||||||
painter = painterResource(
|
painter = painterResource(id = R.mipmap.frame_31),
|
||||||
id = if(AppState.darkMode) R.mipmap.frame_3
|
|
||||||
else R.mipmap.invalid_name_9),
|
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
modifier = Modifier.size(181.dp, 153.dp)
|
modifier = Modifier.size(181.dp, 153.dp)
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.size(9.dp)) // 调整间距为9dp
|
Spacer(modifier = Modifier.size(9.dp)) // 调整间距为9dp
|
||||||
androidx.compose.material.Text(
|
androidx.compose.material.Text(
|
||||||
text = stringResource(R.string.following_empty_title),
|
text = stringResource(R.string.awaiting_traveler),
|
||||||
color = appColors.text,
|
color = appColors.text,
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
fontWeight = FontWeight.W600,
|
fontWeight = FontWeight.W600,
|
||||||
@@ -144,17 +142,6 @@ fun FollowingListScreen(userId: Int) {
|
|||||||
maxLines = 2,
|
maxLines = 2,
|
||||||
overflow = TextOverflow.Ellipsis
|
overflow = TextOverflow.Ellipsis
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.size(8.dp))
|
|
||||||
androidx.compose.material.Text(
|
|
||||||
text = stringResource(R.string.following_empty_subtitle),
|
|
||||||
color = appColors.secondaryText,
|
|
||||||
fontSize = 14.sp,
|
|
||||||
fontWeight = FontWeight.W400,
|
|
||||||
textAlign = TextAlign.Center,
|
|
||||||
modifier = Modifier.padding(horizontal = 24.dp),
|
|
||||||
maxLines = 3,
|
|
||||||
overflow = TextOverflow.Ellipsis
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ import com.aiosman.ravenow.ui.composables.CustomAsyncImage
|
|||||||
import com.aiosman.ravenow.ui.composables.rememberDebouncer
|
import com.aiosman.ravenow.ui.composables.rememberDebouncer
|
||||||
import com.aiosman.ravenow.ui.modifiers.noRippleClickable
|
import com.aiosman.ravenow.ui.modifiers.noRippleClickable
|
||||||
import com.aiosman.ravenow.utils.NetworkUtils
|
import com.aiosman.ravenow.utils.NetworkUtils
|
||||||
|
import com.aiosman.ravenow.ui.network.ReloadButton
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 智能体聊天列表页面
|
* 智能体聊天列表页面
|
||||||
@@ -97,16 +98,15 @@ fun AgentChatListScreen() {
|
|||||||
if (isNetworkAvailable) {
|
if (isNetworkAvailable) {
|
||||||
Spacer(modifier = Modifier.height(39.dp))
|
Spacer(modifier = Modifier.height(39.dp))
|
||||||
Image(
|
Image(
|
||||||
painter = painterResource(
|
painter = painterResource(id = R.mipmap.invalid_name_3),
|
||||||
id = if(AppState.darkMode) R.mipmap.juhao_dark
|
|
||||||
else R.mipmap.invalid_name_5),
|
|
||||||
contentDescription = "null data",
|
contentDescription = "null data",
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.size(width = 181.dp, height = 153.dp)
|
.width(181.dp)
|
||||||
|
.height(153.dp)
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
Spacer(modifier = Modifier.height(9.dp))
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(R.string.agent_chat_empty_title),
|
text = stringResource(R.string.no_one_knocked_yet),
|
||||||
color = AppColors.text,
|
color = AppColors.text,
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
fontWeight = FontWeight.W600,
|
fontWeight = FontWeight.W600,
|
||||||
@@ -115,16 +115,6 @@ fun AgentChatListScreen() {
|
|||||||
maxLines = 2,
|
maxLines = 2,
|
||||||
overflow = TextOverflow.Ellipsis
|
overflow = TextOverflow.Ellipsis
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(8.dp))
|
|
||||||
Text(
|
|
||||||
text = stringResource(R.string.agent_chat_empty_subtitle),
|
|
||||||
color = AppColors.secondaryText,
|
|
||||||
fontSize = 14.sp,
|
|
||||||
textAlign = TextAlign.Center,
|
|
||||||
modifier = Modifier.padding(horizontal = 24.dp),
|
|
||||||
maxLines = 3,
|
|
||||||
overflow = TextOverflow.Ellipsis
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Spacer(modifier = Modifier.height(39.dp))
|
Spacer(modifier = Modifier.height(39.dp))
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ import com.aiosman.ravenow.ui.composables.CustomAsyncImage
|
|||||||
import com.aiosman.ravenow.ui.composables.rememberDebouncer
|
import com.aiosman.ravenow.ui.composables.rememberDebouncer
|
||||||
import com.aiosman.ravenow.ui.modifiers.noRippleClickable
|
import com.aiosman.ravenow.ui.modifiers.noRippleClickable
|
||||||
import com.aiosman.ravenow.utils.NetworkUtils
|
import com.aiosman.ravenow.utils.NetworkUtils
|
||||||
|
import com.aiosman.ravenow.ui.network.ReloadButton
|
||||||
import androidx.compose.material.Button
|
import androidx.compose.material.Button
|
||||||
import androidx.compose.material.ButtonDefaults
|
import androidx.compose.material.ButtonDefaults
|
||||||
import androidx.compose.ui.text.font.FontFamily
|
import androidx.compose.ui.text.font.FontFamily
|
||||||
@@ -227,16 +228,15 @@ fun AllChatListScreen() {
|
|||||||
if (isNetworkAvailable) {
|
if (isNetworkAvailable) {
|
||||||
Spacer(modifier = Modifier.height(39.dp))
|
Spacer(modifier = Modifier.height(39.dp))
|
||||||
Image(
|
Image(
|
||||||
painter = painterResource(
|
painter = painterResource(id = R.mipmap.invalid_name_3),
|
||||||
id = if(AppState.darkMode) R.mipmap.piao_dark
|
|
||||||
else R.mipmap.invalid_name_2),
|
|
||||||
contentDescription = "null data",
|
contentDescription = "null data",
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.size(width = 181.dp, height = 153.dp)
|
.width(181.dp)
|
||||||
|
.height(153.dp)
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
Spacer(modifier = Modifier.height(9.dp))
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(R.string.friend_chat_empty_title),
|
text = stringResource(R.string.no_one_knocked_yet),
|
||||||
color = AppColors.text,
|
color = AppColors.text,
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
fontWeight = FontWeight.W600,
|
fontWeight = FontWeight.W600,
|
||||||
@@ -245,16 +245,6 @@ fun AllChatListScreen() {
|
|||||||
maxLines = 2,
|
maxLines = 2,
|
||||||
overflow = TextOverflow.Ellipsis
|
overflow = TextOverflow.Ellipsis
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(8.dp))
|
|
||||||
Text(
|
|
||||||
text = stringResource(R.string.friend_chat_empty_subtitle),
|
|
||||||
color = AppColors.secondaryText,
|
|
||||||
fontSize = 14.sp,
|
|
||||||
textAlign = TextAlign.Center,
|
|
||||||
modifier = Modifier.padding(horizontal = 24.dp),
|
|
||||||
maxLines = 3,
|
|
||||||
overflow = TextOverflow.Ellipsis
|
|
||||||
)
|
|
||||||
} else {
|
} else {
|
||||||
Spacer(modifier = Modifier.height(39.dp))
|
Spacer(modifier = Modifier.height(39.dp))
|
||||||
Image(
|
Image(
|
||||||
|
|||||||
@@ -84,16 +84,15 @@ fun FriendChatListScreen() {
|
|||||||
if (isNetworkAvailable) {
|
if (isNetworkAvailable) {
|
||||||
Spacer(modifier = Modifier.height(39.dp))
|
Spacer(modifier = Modifier.height(39.dp))
|
||||||
Image(
|
Image(
|
||||||
painter = painterResource(
|
painter = painterResource(id = R.mipmap.invalid_name_3),
|
||||||
id = if(AppState.darkMode) R.mipmap.piao_dark
|
|
||||||
else R.mipmap.invalid_name_2),
|
|
||||||
contentDescription = "null data",
|
contentDescription = "null data",
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.size(width = 181.dp, height = 153.dp)
|
.width(181.dp)
|
||||||
|
.height(153.dp)
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
Spacer(modifier = Modifier.height(9.dp))
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(R.string.friend_chat_empty_title),
|
text = stringResource(R.string.no_one_knocked_yet),
|
||||||
color = AppColors.text,
|
color = AppColors.text,
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
fontWeight = FontWeight.W600,
|
fontWeight = FontWeight.W600,
|
||||||
@@ -102,16 +101,6 @@ fun FriendChatListScreen() {
|
|||||||
maxLines = 2,
|
maxLines = 2,
|
||||||
overflow = TextOverflow.Ellipsis
|
overflow = TextOverflow.Ellipsis
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(8.dp))
|
|
||||||
Text(
|
|
||||||
text = stringResource(R.string.friend_chat_empty_subtitle),
|
|
||||||
color = AppColors.secondaryText,
|
|
||||||
fontSize = 14.sp,
|
|
||||||
textAlign = TextAlign.Center,
|
|
||||||
modifier = Modifier.padding(horizontal = 24.dp),
|
|
||||||
maxLines = 3,
|
|
||||||
overflow = TextOverflow.Ellipsis
|
|
||||||
)
|
|
||||||
}else {
|
}else {
|
||||||
Spacer(modifier = Modifier.height(39.dp))
|
Spacer(modifier = Modifier.height(39.dp))
|
||||||
Image(
|
Image(
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import com.aiosman.ravenow.ui.composables.CustomAsyncImage
|
|||||||
import com.aiosman.ravenow.ui.composables.rememberDebouncer
|
import com.aiosman.ravenow.ui.composables.rememberDebouncer
|
||||||
import com.aiosman.ravenow.ui.modifiers.noRippleClickable
|
import com.aiosman.ravenow.ui.modifiers.noRippleClickable
|
||||||
import com.aiosman.ravenow.utils.NetworkUtils
|
import com.aiosman.ravenow.utils.NetworkUtils
|
||||||
|
import com.aiosman.ravenow.ui.network.ReloadButton
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterialApi::class)
|
@OptIn(ExperimentalMaterialApi::class)
|
||||||
@Composable
|
@Composable
|
||||||
@@ -77,16 +78,15 @@ fun GroupChatListScreen() {
|
|||||||
if (isNetworkAvailable) {
|
if (isNetworkAvailable) {
|
||||||
Spacer(modifier = Modifier.height(39.dp))
|
Spacer(modifier = Modifier.height(39.dp))
|
||||||
Image(
|
Image(
|
||||||
painter = painterResource(
|
painter = painterResource(id = R.mipmap.invalid_name_3),
|
||||||
id = if(AppState.darkMode) R.mipmap.fei_dark
|
|
||||||
else R.mipmap.invalid_name_12),
|
|
||||||
contentDescription = "null data",
|
contentDescription = "null data",
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.size(width = 181.dp, height = 153.dp)
|
.width(181.dp)
|
||||||
|
.height(153.dp)
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
Spacer(modifier = Modifier.height(9.dp))
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(R.string.group_chat_empty),
|
text = stringResource(R.string.no_one_knocked_yet),
|
||||||
color = AppColors.text,
|
color = AppColors.text,
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
fontWeight = FontWeight.W600,
|
fontWeight = FontWeight.W600,
|
||||||
@@ -95,16 +95,6 @@ fun GroupChatListScreen() {
|
|||||||
maxLines = 2,
|
maxLines = 2,
|
||||||
overflow = TextOverflow.Ellipsis
|
overflow = TextOverflow.Ellipsis
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(8.dp))
|
|
||||||
Text(
|
|
||||||
text = stringResource(R.string.group_chat_empty_join),
|
|
||||||
color = AppColors.secondaryText,
|
|
||||||
fontSize = 14.sp,
|
|
||||||
textAlign = TextAlign.Center,
|
|
||||||
modifier = Modifier.padding(horizontal = 24.dp),
|
|
||||||
maxLines = 3,
|
|
||||||
overflow = TextOverflow.Ellipsis
|
|
||||||
)
|
|
||||||
}else {
|
}else {
|
||||||
Spacer(modifier = Modifier.height(39.dp))
|
Spacer(modifier = Modifier.height(39.dp))
|
||||||
Image(
|
Image(
|
||||||
|
|||||||
@@ -692,7 +692,7 @@ fun TopNavigationBar(
|
|||||||
if (backgroundAlpha >= 1f) Color.Black else Color.White
|
if (backgroundAlpha >= 1f) Color.Black else Color.White
|
||||||
}
|
}
|
||||||
val cardBorderColor = if (AppState.darkMode) {
|
val cardBorderColor = if (AppState.darkMode) {
|
||||||
Color.White // 暗色模式下边框应为白色
|
Color.White.copy(alpha = 0.35f) // 暗色模式下使用半透明白色,避免整体变白
|
||||||
} else {
|
} else {
|
||||||
if (backgroundAlpha >= 1f) Color.Black else Color.White
|
if (backgroundAlpha >= 1f) Color.Black else Color.White
|
||||||
}
|
}
|
||||||
@@ -747,8 +747,11 @@ fun TopNavigationBar(
|
|||||||
val cardBackgroundColor = remember(backgroundAlpha) {
|
val cardBackgroundColor = remember(backgroundAlpha) {
|
||||||
val smoothProgress = backgroundAlpha.coerceIn(0f, 1f)
|
val smoothProgress = backgroundAlpha.coerceIn(0f, 1f)
|
||||||
if (AppState.darkMode) {
|
if (AppState.darkMode) {
|
||||||
// 暗色模式:从半透明白色逐渐变为更不透明的白色
|
// 暗色模式:保持在半透明灰白区间,避免滚动到顶部后变纯白
|
||||||
Color.White.copy(alpha = 0.52f + (0.48f * smoothProgress))
|
val minAlpha = 0.18f
|
||||||
|
val maxAlpha = 0.35f
|
||||||
|
val alpha = minAlpha + (maxAlpha - minAlpha) * smoothProgress
|
||||||
|
Color.White.copy(alpha = alpha)
|
||||||
} else {
|
} else {
|
||||||
// 亮色模式:从半透明白色逐渐变为完全不透明的白色
|
// 亮色模式:从半透明白色逐渐变为完全不透明的白色
|
||||||
Color.White.copy(alpha = 0.52f + (0.48f * smoothProgress))
|
Color.White.copy(alpha = 0.52f + (0.48f * smoothProgress))
|
||||||
|
|||||||
@@ -199,18 +199,16 @@ fun GalleryGrid(
|
|||||||
horizontalAlignment = Alignment.CenterHorizontally
|
horizontalAlignment = Alignment.CenterHorizontally
|
||||||
) {
|
) {
|
||||||
Image(
|
Image(
|
||||||
painter = painterResource(
|
painter = painterResource(id = R.mipmap.l_empty_img),
|
||||||
id = if(AppState.darkMode) R.mipmap.shuihu_dark
|
|
||||||
else R.mipmap.invalid_name_7),
|
|
||||||
contentDescription = "暂无图片",
|
contentDescription = "暂无图片",
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.size(width = 181.dp, height = 153.dp),
|
.size(width = 181.dp, height = 153.dp),
|
||||||
)
|
)
|
||||||
|
|
||||||
Spacer(modifier = Modifier.height(if(AppState.darkMode) 9.dp else 24.dp))
|
Spacer(modifier = Modifier.height(9.dp))
|
||||||
|
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(R.string.your_story_not_started),
|
text = stringResource(R.string.cosmos_awaits),
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
color = AppColors.text,
|
color = AppColors.text,
|
||||||
fontWeight = FontWeight.W600,
|
fontWeight = FontWeight.W600,
|
||||||
@@ -219,19 +217,6 @@ fun GalleryGrid(
|
|||||||
maxLines = 2,
|
maxLines = 2,
|
||||||
overflow = TextOverflow.Ellipsis
|
overflow = TextOverflow.Ellipsis
|
||||||
)
|
)
|
||||||
|
|
||||||
Spacer(modifier = Modifier.height(8.dp))
|
|
||||||
|
|
||||||
Text(
|
|
||||||
text = stringResource(R.string.publish_moment_greeting),
|
|
||||||
fontSize = 14.sp,
|
|
||||||
color = AppColors.secondaryText,
|
|
||||||
fontWeight = FontWeight.W400,
|
|
||||||
textAlign = TextAlign.Center,
|
|
||||||
modifier = Modifier.padding(horizontal = 24.dp),
|
|
||||||
maxLines = 3,
|
|
||||||
overflow = TextOverflow.Ellipsis
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
LazyVerticalGrid(
|
LazyVerticalGrid(
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ fun GroupChatEmptyContent(
|
|||||||
|
|
||||||
// 空状态文本
|
// 空状态文本
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(R.string.empty_nothing),
|
text = stringResource(R.string.cosmos_awaits),
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
fontWeight = FontWeight.SemiBold,
|
fontWeight = FontWeight.SemiBold,
|
||||||
color = AppColors.text,
|
color = AppColors.text,
|
||||||
|
|||||||
@@ -269,27 +269,24 @@ fun AgentEmptyContentWithSegments() {
|
|||||||
|
|
||||||
Spacer(modifier = Modifier.height(8.dp))
|
Spacer(modifier = Modifier.height(8.dp))
|
||||||
|
|
||||||
// 空状态内容(使用智能体原本的图标和文字)
|
// 空状态内容(与动态、群聊保持一致)
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
horizontalAlignment = Alignment.CenterHorizontally
|
horizontalAlignment = Alignment.CenterHorizontally
|
||||||
) {
|
) {
|
||||||
if (isNetworkAvailable) {
|
if (isNetworkAvailable) {
|
||||||
Image(
|
Image(
|
||||||
painter = painterResource(
|
painter = painterResource(id = R.mipmap.l_empty_img),
|
||||||
id = if(AppState.darkMode) R.mipmap.ai_dark
|
|
||||||
else R.mipmap.ai),
|
|
||||||
contentDescription = "暂无Agent",
|
contentDescription = "暂无Agent",
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.size(width = 181.dp, height = 153.dp)
|
.size(width = 181.dp, height = 153.dp)
|
||||||
.align(Alignment.CenterHorizontally),
|
.align(Alignment.CenterHorizontally),
|
||||||
)
|
)
|
||||||
|
|
||||||
// 根据是否为深色模式调整间距
|
Spacer(modifier = Modifier.height(9.dp))
|
||||||
Spacer(modifier = Modifier.height(if(AppState.darkMode) 9.dp else 24.dp))
|
|
||||||
|
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(R.string.exclusive_ai_waiting),
|
text = stringResource(R.string.cosmos_awaits),
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
color = AppColors.text,
|
color = AppColors.text,
|
||||||
fontWeight = FontWeight.W600,
|
fontWeight = FontWeight.W600,
|
||||||
@@ -298,19 +295,6 @@ fun AgentEmptyContentWithSegments() {
|
|||||||
maxLines = 2,
|
maxLines = 2,
|
||||||
overflow = TextOverflow.Ellipsis
|
overflow = TextOverflow.Ellipsis
|
||||||
)
|
)
|
||||||
|
|
||||||
Spacer(modifier = Modifier.height(8.dp))
|
|
||||||
|
|
||||||
Text(
|
|
||||||
text = stringResource(R.string.ai_companion_not_tool),
|
|
||||||
fontSize = 14.sp,
|
|
||||||
color = AppColors.secondaryText,
|
|
||||||
fontWeight = FontWeight.W400,
|
|
||||||
textAlign = TextAlign.Center,
|
|
||||||
modifier = Modifier.padding(horizontal = 24.dp),
|
|
||||||
maxLines = 3,
|
|
||||||
overflow = TextOverflow.Ellipsis
|
|
||||||
)
|
|
||||||
} else {
|
} else {
|
||||||
Image(
|
Image(
|
||||||
painter = painterResource(id = R.mipmap.invalid_name_10),
|
painter = painterResource(id = R.mipmap.invalid_name_10),
|
||||||
|
|||||||
@@ -122,27 +122,18 @@ fun LikeNoticeScreen() {
|
|||||||
horizontalAlignment = Alignment.CenterHorizontally
|
horizontalAlignment = Alignment.CenterHorizontally
|
||||||
) {
|
) {
|
||||||
Image(
|
Image(
|
||||||
painter = painterResource(
|
painter = painterResource(id = R.mipmap.invalid_name_5),
|
||||||
id = if(AppState.darkMode) R.mipmap.sanqiu_dark
|
|
||||||
else R.mipmap.invalid_name_6),
|
|
||||||
contentDescription = "No Notice",
|
contentDescription = "No Notice",
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.size(width = 181.dp, height = 153.dp)
|
.size(width = 181.dp, height = 153.dp)
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(if (AppState.darkMode) 9.dp else 24.dp))
|
Spacer(modifier = Modifier.height(9.dp))
|
||||||
Text(
|
Text(
|
||||||
text = "你的赞在赶来的路上",
|
text = stringResource(R.string.no_one_pinged_yet),
|
||||||
color = AppColors.text,
|
color = AppColors.text,
|
||||||
fontSize = 16.sp,
|
fontSize = 16.sp,
|
||||||
fontWeight = FontWeight.W600,
|
fontWeight = FontWeight.W600,
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.size(8.dp))
|
|
||||||
Text(
|
|
||||||
text = "智能体和朋友看到后,说不定马上就来~",
|
|
||||||
color = AppColors.text,
|
|
||||||
fontSize = 14.sp,
|
|
||||||
fontWeight = FontWeight.W400
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
BIN
app/src/main/res/mipmap-hdpi/empty_img.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
app/src/main/res/mipmap-hdpi/frame_23.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
app/src/main/res/mipmap-hdpi/frame_31.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
app/src/main/res/mipmap-mdpi/empty_img.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
app/src/main/res/mipmap-mdpi/frame_23.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
app/src/main/res/mipmap-mdpi/frame_31.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
app/src/main/res/mipmap-xhdpi/empty_img.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
app/src/main/res/mipmap-xhdpi/frame_23.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
app/src/main/res/mipmap-xhdpi/frame_31.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/empty_img.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/frame_23.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
app/src/main/res/mipmap-xxhdpi/frame_31.png
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/empty_img.png
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/frame_23.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
app/src/main/res/mipmap-xxxhdpi/frame_31.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
@@ -14,7 +14,7 @@
|
|||||||
<string name="followers_upper">フォロワー</string>
|
<string name="followers_upper">フォロワー</string>
|
||||||
<string name="posts">投稿</string>
|
<string name="posts">投稿</string>
|
||||||
<string name="favourites_upper">お気に入り</string>
|
<string name="favourites_upper">お気に入り</string>
|
||||||
<string name="favourites_null">あれ、何もない。..</string>
|
<string name="favourites_null">ここはまだ空っぽだよ</string>
|
||||||
<string name="notifications_upper">通知</string>
|
<string name="notifications_upper">通知</string>
|
||||||
<string name="following_upper">フォロー中</string>
|
<string name="following_upper">フォロー中</string>
|
||||||
<string name="unfollow_upper">フォロー解除</string>
|
<string name="unfollow_upper">フォロー解除</string>
|
||||||
@@ -392,6 +392,11 @@
|
|||||||
<string name="explore">探検する</string>
|
<string name="explore">探検する</string>
|
||||||
<string name="reply_to_user">返信@%1$s</string>
|
<string name="reply_to_user">返信@%1$s</string>
|
||||||
<string name="error_select_at_least_one_image">少なくとも1枚の画像を選択してください。</string>
|
<string name="error_select_at_least_one_image">少なくとも1枚の画像を選択してください。</string>
|
||||||
|
<string name="awaiting_traveler">旅人を待ってるよ</string>
|
||||||
|
<string name="no_one_pinged_yet">まだ誰からも声がかからないよ</string>
|
||||||
|
<string name="cosmos_awaits">小さな宇宙は、あなた待ち。</string>
|
||||||
|
<string name="no_one_knocked_yet">まだ誰もノックしてないよ</string>
|
||||||
|
<string name="no_users_isolated_yet">まだユーザーが隔離されていません</string>
|
||||||
|
|
||||||
<!-- Create Group Chat Confirm -->
|
<!-- Create Group Chat Confirm -->
|
||||||
<string name="create_group_chat_confirm_title">グループチャットを作成</string>
|
<string name="create_group_chat_confirm_title">グループチャットを作成</string>
|
||||||
|
|||||||
@@ -162,7 +162,7 @@
|
|||||||
<string name="chat_all">全部</string>
|
<string name="chat_all">全部</string>
|
||||||
<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="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>
|
||||||
@@ -408,4 +408,9 @@
|
|||||||
<string name="spend_room_memory">房间记忆添加</string>
|
<string name="spend_room_memory">房间记忆添加</string>
|
||||||
<string name="spend_chat_background">自定义聊天背景</string>
|
<string name="spend_chat_background">自定义聊天背景</string>
|
||||||
<string name="spend_schedule_event">日程事件解锁</string>
|
<string name="spend_schedule_event">日程事件解锁</string>
|
||||||
|
<string name="awaiting_traveler">等一位旅人~</string>
|
||||||
|
<string name="no_one_pinged_yet">还没有人来打扰你</string>
|
||||||
|
<string name="cosmos_awaits">小宇宙等你探索。</string>
|
||||||
|
<string name="no_one_knocked_yet">还没有人敲门</string>
|
||||||
|
<string name="no_users_isolated_yet">还没有用户被隔离</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
<string name="followers_upper">FOLLOWERS</string>
|
<string name="followers_upper">FOLLOWERS</string>
|
||||||
<string name="posts">Posts</string>
|
<string name="posts">Posts</string>
|
||||||
<string name="favourites_upper">FAVOURITES</string>
|
<string name="favourites_upper">FAVOURITES</string>
|
||||||
<string name="favourites_null">Well,nothing </string>
|
<string name="favourites_null">It’s still empty here </string>
|
||||||
<string name="notifications_upper">NOTIFICATIONS</string>
|
<string name="notifications_upper">NOTIFICATIONS</string>
|
||||||
<string name="following_upper">FOLLOWING</string>
|
<string name="following_upper">FOLLOWING</string>
|
||||||
<string name="unfollow_upper">UNFOLLOW</string>
|
<string name="unfollow_upper">UNFOLLOW</string>
|
||||||
@@ -403,4 +403,9 @@
|
|||||||
<string name="spend_room_memory">Room Memory Addition</string>
|
<string name="spend_room_memory">Room Memory Addition</string>
|
||||||
<string name="spend_chat_background">Custom Chat Background</string>
|
<string name="spend_chat_background">Custom Chat Background</string>
|
||||||
<string name="spend_schedule_event">Schedule Event Unlock</string>
|
<string name="spend_schedule_event">Schedule Event Unlock</string>
|
||||||
|
<string name="awaiting_traveler">Awaiting a traveler</string>
|
||||||
|
<string name="no_one_pinged_yet">No one has pinged you yet</string>
|
||||||
|
<string name="cosmos_awaits">Your cosmos awaits.</string>
|
||||||
|
<string name="no_one_knocked_yet">No one\'s knocked yet</string>
|
||||||
|
<string name="no_users_isolated_yet">No users have been isolated yet</string>
|
||||||
</resources>
|
</resources>
|
||||||