diff --git a/app/src/main/java/com/aiosman/ravenow/ui/index/NavigationItem.kt b/app/src/main/java/com/aiosman/ravenow/ui/index/NavigationItem.kt index f7ad435..020bfc1 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/index/NavigationItem.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/index/NavigationItem.kt @@ -16,9 +16,9 @@ sealed class NavigationItem( ) { data object Home : NavigationItem("Home", - icon = { R.drawable.rider_pro_nav_home }, - selectedIcon = { R.mipmap.bars_x_buttons_home_s }, - label = { stringResource(R.string.main_home) } + icon = { R.mipmap.bars_x_buttons_home_n_copy }, + selectedIcon = { R.mipmap.bars_x_buttons_home_n_copy_2 }, + label = { stringResource(R.string.main_ai) } ) data object Ai : NavigationItem("Ai", diff --git a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/BlockConfirmDialog.kt b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/BlockConfirmDialog.kt new file mode 100644 index 0000000..1d91671 --- /dev/null +++ b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/BlockConfirmDialog.kt @@ -0,0 +1,178 @@ +package com.aiosman.ravenow.ui.index.tabs.profile + +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.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.aiosman.ravenow.LocalAppTheme +import com.aiosman.ravenow.R +import com.aiosman.ravenow.entity.AccountProfileEntity +import com.aiosman.ravenow.ui.composables.CustomAsyncImage + +/** + * 拉黑确认弹窗 + */ +@Composable +fun BlockConfirmDialog( + userProfile: AccountProfileEntity?, + onConfirmBlock: () -> Unit = {}, + onDismiss: () -> Unit = {} +) { + val AppColors = LocalAppTheme.current + + Box( + modifier = Modifier.fillMaxSize(), + contentAlignment = Alignment.BottomCenter + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .background( + color = AppColors.background, + shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp) + ) + .padding(24.dp) + ) { + // 用户头像 + Box( + modifier = Modifier + .align(Alignment.CenterHorizontally) + .padding(bottom = 16.dp) + ) { + CustomAsyncImage( + LocalContext.current, + userProfile?.avatar, + modifier = Modifier + .size(60.dp) + .clip(CircleShape) + .background( + color = AppColors.background, + shape = CircleShape + ), + contentDescription = "用户头像", + contentScale = ContentScale.Crop + ) + } + + // 确认文本 + Text( + text = stringResource(R.string.confirm_block_user, userProfile?.nickName ?: "该用户"), + + fontSize = 18.sp, + fontWeight = FontWeight.Bold, + color = AppColors.text, + modifier = Modifier + .align(Alignment.CenterHorizontally) + .padding(bottom = 24.dp) + ) + + // 说明信息 + Column( + modifier = Modifier.padding(bottom = 32.dp) + ) { + // 第一条说明 + Row( + modifier = Modifier.padding(bottom = 12.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + painter = painterResource(id = R.mipmap.icons_infor_off_eye), + contentDescription = "", + tint = AppColors.text, + modifier = Modifier.size(20.dp) + ) + Spacer(modifier = Modifier.width(12.dp)) + Text( + text = stringResource(R.string.block_description_1), + fontSize = 14.sp, + color = AppColors.text, + lineHeight = 20.sp + ) + } + + // 第二条说明 + Row( + modifier = Modifier.padding(bottom = 12.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + painter = painterResource(id = R.drawable.rider_pro_notice_mute), + contentDescription = "", + tint = AppColors.text, + modifier = Modifier.size(20.dp) + ) + Spacer(modifier = Modifier.width(12.dp)) + Text( + text = stringResource(R.string.block_description_2), + fontSize = 14.sp, + color = AppColors.text, + lineHeight = 20.sp + ) + } + + // 第三条说明 + Row( + verticalAlignment = Alignment.CenterVertically + ) { + Icon( + painter = painterResource(id = R.mipmap.icons_infor_off_bell), + contentDescription = "", + tint = AppColors.text, + modifier = Modifier.size(20.dp) + ) + Spacer(modifier = Modifier.width(12.dp)) + Text( + text = stringResource(R.string.block_description_3), + fontSize = 14.sp, + color = AppColors.text, + lineHeight = 20.sp + ) + } + } + + // 确认拉黑按钮 + androidx.compose.material3.Button( + onClick = { + onConfirmBlock() + onDismiss() + }, + modifier = Modifier + .fillMaxWidth() + .height(48.dp), + colors = androidx.compose.material3.ButtonDefaults.buttonColors( + containerColor = AppColors.text + ), + shape = RoundedCornerShape(24.dp) + ) { + Text( + stringResource(R.string.block), + color = AppColors.background, + fontSize = 16.sp, + fontWeight = FontWeight.Bold + ) + } + } + } +} diff --git a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/ProfileV3.kt b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/ProfileV3.kt index 49bb9cd..8ee1612 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/ProfileV3.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/index/tabs/profile/ProfileV3.kt @@ -99,6 +99,8 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.launch import java.io.File import androidx.compose.foundation.rememberScrollState +import androidx.compose.ui.res.stringResource + @OptIn(ExperimentalFoundationApi::class, ExperimentalMaterialApi::class, ExperimentalMaterial3Api::class) @Composable fun ProfileV3( @@ -127,6 +129,8 @@ fun ProfileV3( var showAgentMenu by remember { mutableStateOf(false) } var contextAgent by remember { mutableStateOf(null) } var showDeleteConfirmDialog by remember { mutableStateOf(false) } + var showOtherUserMenu by remember { mutableStateOf(false) } + var showBlockConfirmDialog by remember { mutableStateOf(false) } val context = LocalContext.current val scope = rememberCoroutineScope() val navController = LocalNavController.current @@ -154,9 +158,13 @@ fun ProfileV3( val toolbarAlpha by remember { derivedStateOf { - val maxScroll = 500f // 最大滚动距离,可调整 - val progress = (scrollState.value.coerceAtMost(maxScroll.toInt()) / maxScroll).coerceIn(0f, 1f) - progress + if (!isSelf) { + 1f + } else { + val maxScroll = 500f // 最大滚动距离,可调整 + val progress = (scrollState.value.coerceAtMost(maxScroll.toInt()) / maxScroll).coerceIn(0f, 1f) + progress + } } } @@ -478,7 +486,10 @@ fun ProfileV3( isSelf = isSelf, profile = profile, navController = navController, - alpha = toolbarAlpha + alpha = toolbarAlpha, + onMenuClick = { + showOtherUserMenu = true + } ) PullRefreshIndicator( @@ -486,8 +497,70 @@ fun ProfileV3( refreshState, Modifier.align(Alignment.TopCenter) ) + + // 其他用户菜单弹窗 + if (showOtherUserMenu) { + ModalBottomSheet( + onDismissRequest = { showOtherUserMenu = false }, + sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true), + containerColor = Color.Transparent, // 设置容器背景透明 + contentColor = Color.Transparent, // 设置内容背景透明 + dragHandle = null, // 移除拖拽手柄 + windowInsets = androidx.compose.foundation.layout.WindowInsets(0) // 移除窗口边距 + ) { + Box( + modifier = Modifier + .fillMaxWidth() + .background(Color.Transparent) + ) { + OtherUserMenuModal( + onBlockClick = { + showBlockConfirmDialog = true + }, + onReportClick = { + // 实现举报逻辑 + }, + onCancelClick = { + showOtherUserMenu = false + }, + onDismiss = { showOtherUserMenu = false } + ) + } + } + + // 拉黑确认弹窗 + if (showBlockConfirmDialog) { + ModalBottomSheet( + onDismissRequest = { + showBlockConfirmDialog = false + }, + sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true), + containerColor = Color.Transparent, + contentColor = Color.Transparent, + dragHandle = null, + windowInsets = androidx.compose.foundation.layout.WindowInsets(0) + ) { + Box( + modifier = Modifier + .fillMaxWidth() + .background(Color.Transparent) + ) { + BlockConfirmDialog( + userProfile = profile, + onConfirmBlock = { + // 实现拉黑逻辑 + }, + onDismiss = { + showBlockConfirmDialog = false + showOtherUserMenu = false + } + ) + } + } + } } } +} //顶部导航栏组件 @Composable @@ -496,14 +569,14 @@ fun TopNavigationBar( isSelf: Boolean, profile: AccountProfileEntity?, navController: androidx.navigation.NavController, - - alpha: Float + alpha: Float, + onMenuClick: () -> Unit = {} ) { val appColors = LocalAppTheme.current Box( modifier = Modifier .fillMaxWidth() - .graphicsLayer { this.alpha = alpha } // 应用透明度 + .graphicsLayer { this.alpha = alpha } ) { Column( modifier = Modifier @@ -555,6 +628,21 @@ fun TopNavigationBar( .size(24.dp) .padding(16.dp) ) + } else if (!isSelf) { + Box( + modifier = Modifier + .noRippleClickable { + onMenuClick() + } + .padding(16.dp) + ) { + Icon( + painter = painterResource(id = R.drawable.rider_pro_more_horizon), + contentDescription = "菜单", + tint = appColors.text, + modifier = Modifier.size(24.dp) + ) + } } } Spacer(modifier = Modifier.height(8.dp)) @@ -661,7 +749,7 @@ fun AgentMenuModal( if (isSelf) { MenuActionItem( icon = R.drawable.rider_pro_moment_delete, - text = "删除" + text = stringResource(R.string.delete) ) { onDeleteClick() } @@ -737,3 +825,96 @@ fun DeleteConfirmDialog( containerColor = AppColors.background ) } + +/** + * 其他用户主页菜单弹窗 + */ +@Composable +fun OtherUserMenuModal( + onBlockClick: () -> Unit = {}, + onReportClick: () -> Unit = {}, + onCancelClick: () -> Unit = {}, + onDismiss: () -> Unit = {} +) { + val AppColors = LocalAppTheme.current + + Box( + modifier = Modifier.fillMaxSize(), + contentAlignment = Alignment.BottomCenter + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 8.dp) + .padding(bottom = 11.dp) + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .background( + color = AppColors.background, + shape = RoundedCornerShape(8.dp) + ) + ) { + // 拉黑选项 + androidx.compose.material3.TextButton( + onClick = { + onBlockClick() + }, + modifier = Modifier.fillMaxWidth() + ) { + Text( + stringResource(R.string.block), + color = AppColors.error, + fontWeight = FontWeight.Bold, + fontSize = 16.sp + ) + } + + // 分割线 + androidx.compose.material3.HorizontalDivider( + color = AppColors.divider, + thickness = 0.5.dp + ) + + // 举报选项 + androidx.compose.material3.TextButton( + onClick = { + onReportClick() + onDismiss() + }, + modifier = Modifier.fillMaxWidth() + ) { + Text( + stringResource(R.string.report), + color = AppColors.error, + fontWeight = FontWeight.Bold, + fontSize = 16.sp + ) + } + } + + Spacer(modifier = Modifier.height(8.dp)) + + // 取消按钮 + androidx.compose.material3.TextButton( + onClick = { + onCancelClick() + onDismiss() + }, + modifier = Modifier + .fillMaxWidth() + .background( + color = AppColors.background, + shape = RoundedCornerShape(8.dp) + ) + ) { + Text( + stringResource(R.string.cancel), + color = AppColors.text, + fontSize = 16.sp + ) + } + } + } +} diff --git a/app/src/main/java/com/aiosman/ravenow/ui/login/login.kt b/app/src/main/java/com/aiosman/ravenow/ui/login/login.kt index 806097b..1ded727 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/login/login.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/login/login.kt @@ -6,6 +6,7 @@ import android.util.Log import android.widget.Toast import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.border import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.rememberScrollableState import androidx.compose.foundation.gestures.scrollable @@ -272,16 +273,10 @@ fun LoginPage() { modifier = Modifier .fillMaxWidth() .padding(horizontal = 24.dp) - .padding(top = 100.dp), + .padding(top = 60.dp), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { - Text( - text = stringResource(R.string.join_party_carnival), - fontSize = 14.sp, - color = AppColors.text - ) - Box( modifier = Modifier .size(30.dp) @@ -302,17 +297,8 @@ fun LoginPage() { ) } } - Box( - modifier = Modifier.fillMaxSize() - ) { - val lottieFile = if (AppState.darkMode) "login.lottie" else "login_light.lottie" - LottieAnimation( - composition = rememberLottieComposition(LottieCompositionSpec.Asset(lottieFile)).value, - iterations = LottieConstants.IterateForever, - modifier = Modifier.fillMaxSize() - .padding(30.dp) - ) - } + + Spacer(modifier = Modifier.height(20.dp)) Column( modifier = Modifier @@ -321,6 +307,25 @@ fun LoginPage() { horizontalAlignment = Alignment.CenterHorizontally ) { Spacer(modifier = Modifier.weight(1f)) + Box( + modifier = Modifier + .fillMaxWidth() + .height(400.dp) + + ) { + val lottieFile = if (AppState.darkMode) "login.lottie" else "login_light.lottie" + LottieAnimation( + composition = rememberLottieComposition(LottieCompositionSpec.Asset(lottieFile)).value, + iterations = LottieConstants.IterateForever, + modifier = Modifier.fillMaxSize() + ) + } + Text( + text = stringResource(R.string.join_party_carnival), + fontSize = 17.sp, + fontWeight = FontWeight.W600, + color = AppColors.text + ) // Image( // painter = painterResource(id = R.mipmap.invalid_name), // contentDescription = "Rave Now", @@ -343,7 +348,7 @@ fun LoginPage() { // color = AppColors.text // ) //注册tab - Spacer(modifier = Modifier.height(8.dp)) + Spacer(modifier = Modifier.height(48.dp)) ActionButton( modifier = Modifier.fillMaxWidth(), text = stringResource(R.string.sign_up_upper), @@ -354,25 +359,32 @@ fun LoginPage() { NavigationRoute.EmailSignUp.route, ) } -// if (showGoogleLogin) { -// Spacer(modifier = Modifier.height(16.dp)) -// ActionButton( -// modifier = Modifier.fillMaxWidth(), -// text = stringResource(R.string.sign_in_with_google), -// color = AppColors.text, -// leading = { -// Image( -// painter = painterResource(id = R.drawable.rider_pro_google), -// contentDescription = "Google", -// modifier = Modifier.size(36.dp) -// ) -// }, -// expandText = true, -// contentPadding = PaddingValues(vertical = 8.dp, horizontal = 8.dp) -// ) { -// googleLogin() -// } -// } + //苹果登录tab + Spacer(modifier = Modifier.height(16.dp)) + ActionButton( + modifier = Modifier + .fillMaxWidth() + .border( + width = 1.dp, + color = if (AppState.darkMode) Color.White else Color.Black, + shape = RoundedCornerShape(24.dp) + ), + text = stringResource(R.string.sign_in_with_apple), + color = if (AppState.darkMode) Color.White else Color.Black, + backgroundColor = if (AppState.darkMode) Color.Black else Color.White, + leading = { + Image( + painter = painterResource(id = R.mipmap.apple_logo_medium), + contentDescription = "Apple", + modifier = Modifier.size(36.dp), + colorFilter = ColorFilter.tint(if (AppState.darkMode) Color.White else Color.Black) + ) + }, + expandText = true, + contentPadding = PaddingValues(vertical = 8.dp, horizontal = 8.dp) + ) { + } + //登录tab Spacer(modifier = Modifier.height(24.dp)) Text( diff --git a/app/src/main/java/com/aiosman/ravenow/ui/login/signup.kt b/app/src/main/java/com/aiosman/ravenow/ui/login/signup.kt index 63e3852..00c29a0 100644 --- a/app/src/main/java/com/aiosman/ravenow/ui/login/signup.kt +++ b/app/src/main/java/com/aiosman/ravenow/ui/login/signup.kt @@ -211,7 +211,7 @@ fun SignupScreen() { ) Spacer(modifier = Modifier.width(8.dp)) }, - text = stringResource(R.string.sign_in_with_google), + text = stringResource(R.string.sign_in_with_apple), ) { googleLogin() diff --git a/app/src/main/res/mipmap-hdpi/apple_logo_medium.png b/app/src/main/res/mipmap-hdpi/apple_logo_medium.png new file mode 100644 index 0000000..80b01c3 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/apple_logo_medium.png differ diff --git a/app/src/main/res/mipmap-hdpi/icons_infor_off_bell.png b/app/src/main/res/mipmap-hdpi/icons_infor_off_bell.png new file mode 100644 index 0000000..0420e0c Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icons_infor_off_bell.png differ diff --git a/app/src/main/res/mipmap-hdpi/icons_infor_off_eye.png b/app/src/main/res/mipmap-hdpi/icons_infor_off_eye.png new file mode 100644 index 0000000..70a3d87 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icons_infor_off_eye.png differ diff --git a/app/src/main/res/mipmap-mdpi/apple_logo_medium.png b/app/src/main/res/mipmap-mdpi/apple_logo_medium.png new file mode 100644 index 0000000..2140eeb Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/apple_logo_medium.png differ diff --git a/app/src/main/res/mipmap-mdpi/icons_infor_off_bell.png b/app/src/main/res/mipmap-mdpi/icons_infor_off_bell.png new file mode 100644 index 0000000..5523b18 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/icons_infor_off_bell.png differ diff --git a/app/src/main/res/mipmap-mdpi/icons_infor_off_eye.png b/app/src/main/res/mipmap-mdpi/icons_infor_off_eye.png new file mode 100644 index 0000000..897fe10 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/icons_infor_off_eye.png differ diff --git a/app/src/main/res/mipmap-xhdpi/apple_logo_medium.png b/app/src/main/res/mipmap-xhdpi/apple_logo_medium.png new file mode 100644 index 0000000..d140b5c Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/apple_logo_medium.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icons_infor_off_bell.png b/app/src/main/res/mipmap-xhdpi/icons_infor_off_bell.png new file mode 100644 index 0000000..8af06a7 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icons_infor_off_bell.png differ diff --git a/app/src/main/res/mipmap-xhdpi/icons_infor_off_eye.png b/app/src/main/res/mipmap-xhdpi/icons_infor_off_eye.png new file mode 100644 index 0000000..2e9c078 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/icons_infor_off_eye.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/apple_logo_medium.png b/app/src/main/res/mipmap-xxhdpi/apple_logo_medium.png new file mode 100644 index 0000000..23db6f5 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/apple_logo_medium.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icons_infor_off_bell.png b/app/src/main/res/mipmap-xxhdpi/icons_infor_off_bell.png new file mode 100644 index 0000000..43ffbde Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icons_infor_off_bell.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/icons_infor_off_eye.png b/app/src/main/res/mipmap-xxhdpi/icons_infor_off_eye.png new file mode 100644 index 0000000..b63f5cf Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icons_infor_off_eye.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/apple_logo_medium.png b/app/src/main/res/mipmap-xxxhdpi/apple_logo_medium.png new file mode 100644 index 0000000..11149ee Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/apple_logo_medium.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icons_infor_off_bell.png b/app/src/main/res/mipmap-xxxhdpi/icons_infor_off_bell.png new file mode 100644 index 0000000..ab35f42 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icons_infor_off_bell.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icons_infor_off_eye.png b/app/src/main/res/mipmap-xxxhdpi/icons_infor_off_eye.png new file mode 100644 index 0000000..7469434 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icons_infor_off_eye.png differ diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 5936cea..7b7524b 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -33,7 +33,7 @@ パスワードを入力してください サインアップ メールで接続 - Googleで接続 + Appleで接続 戻る パスワードを再入力してください パスワードの確認 @@ -192,6 +192,8 @@ 作成中… 発見 パスワードは%1$d文字を超えることはできません + ブロック + 作成 @@ -219,13 +221,19 @@ オフラインだ.. ネットワークを確認して、この宇宙に接続してください 再ロード - + パーティーに参加して、一緒に盛り上がろう - + おすすめ ショート動画 ニュース + + + %1$sをブロックしますか? + 相手はあなたにメッセージを送信したり、あなたのプロフィールやコンテンツを見つけることができなくなります + 相手はあなたにブロックされた通知を受け取りません + 「設定」でいつでもブロックを解除できます diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 4a0f8f3..3ef7e5e 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -32,7 +32,7 @@ 输入密码 注册 使用邮箱注册 - 使用 Google 账号登录 + 使用Apple登录 返回 再次输入密码 再次输入密码 @@ -127,7 +127,7 @@ 关注 热门 首页 - 智能体 + AI 消息 我的 我的 @@ -195,6 +195,8 @@ 发现 密码不能超过 %1$d 个字符 人正在热聊… + 拉黑 + 创建 @@ -230,5 +232,11 @@ 推荐 短视频 新闻 + + + 确认拉黑%s? + 对方将无法发消息给你,也无法找到你的主页或内容 + 对方不会收到自己被你拉黑的通知 + 你可以随时"设置"中取消拉黑TA \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5ccbfed..7eb604d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -32,7 +32,7 @@ Enter your password Sign Up Connect with Email - Connect with Google + Continue with Apple BACK Enter your password again Confirm password @@ -125,7 +125,7 @@ Following Hot Home - Agent + AI Message Profile Mine @@ -191,7 +191,8 @@ Creating… Discover Password cannot exceed %1$d characters - + Block + Create AI @@ -226,4 +227,10 @@ Recommend Short Video News + + + Confirm block %1$s? + They won\'t be able to send you messages or find your profile or content + They won\'t receive a notification that you blocked them + You can unblock them anytime in "Settings" \ No newline at end of file