diff --git a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/user/UserProfilePage.kt b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/user/UserProfilePage.kt
index 98ab4100..ce22809c 100644
--- a/app/src/main/java/com/huanchengfly/tieba/post/ui/page/user/UserProfilePage.kt
+++ b/app/src/main/java/com/huanchengfly/tieba/post/ui/page/user/UserProfilePage.kt
@@ -17,12 +17,15 @@ import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
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.layout.wrapContentHeight
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.foundation.pager.PagerState
import androidx.compose.foundation.pager.rememberPagerState
+import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.ButtonDefaults
+import androidx.compose.material.DropdownMenuItem
import androidx.compose.material.Icon
import androidx.compose.material.LocalContentColor
import androidx.compose.material.MaterialTheme
@@ -33,6 +36,7 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.ContentCopy
import androidx.compose.material.icons.rounded.Add
import androidx.compose.material.icons.rounded.Edit
+import androidx.compose.material.icons.rounded.NoAccounts
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable
import androidx.compose.runtime.LaunchedEffect
@@ -69,6 +73,8 @@ import com.huanchengfly.tieba.post.arch.emitGlobalEvent
import com.huanchengfly.tieba.post.arch.getOrNull
import com.huanchengfly.tieba.post.arch.pageViewModel
import com.huanchengfly.tieba.post.goToActivity
+import com.huanchengfly.tieba.post.models.database.Block
+import com.huanchengfly.tieba.post.toastShort
import com.huanchengfly.tieba.post.ui.common.theme.compose.ExtendedTheme
import com.huanchengfly.tieba.post.ui.page.ProvideNavigator
import com.huanchengfly.tieba.post.ui.page.editprofile.view.EditProfileActivity
@@ -78,6 +84,7 @@ import com.huanchengfly.tieba.post.ui.widgets.Chip
import com.huanchengfly.tieba.post.ui.widgets.compose.Avatar
import com.huanchengfly.tieba.post.ui.widgets.compose.BackNavigationIcon
import com.huanchengfly.tieba.post.ui.widgets.compose.Button
+import com.huanchengfly.tieba.post.ui.widgets.compose.ClickMenu
import com.huanchengfly.tieba.post.ui.widgets.compose.ErrorScreen
import com.huanchengfly.tieba.post.ui.widgets.compose.LazyLoad
import com.huanchengfly.tieba.post.ui.widgets.compose.LazyLoadHorizontalPager
@@ -91,6 +98,7 @@ import com.huanchengfly.tieba.post.ui.widgets.compose.Toolbar
import com.huanchengfly.tieba.post.ui.widgets.compose.UserHeader
import com.huanchengfly.tieba.post.ui.widgets.compose.states.StateScreen
import com.huanchengfly.tieba.post.utils.AccountUtil.LocalAccount
+import com.huanchengfly.tieba.post.utils.BlockManager
import com.huanchengfly.tieba.post.utils.StringUtil
import com.huanchengfly.tieba.post.utils.StringUtil.getShortNumString
import com.huanchengfly.tieba.post.utils.TiebaUtil
@@ -192,6 +200,57 @@ fun UserProfilePage(
BackNavigationIcon {
navigator.navigateUp()
}
+ },
+ actions = {
+ user.takeUnless { isSelf }?.let {
+ ClickMenu(
+ menuContent = {
+ DropdownMenuItem(
+ onClick = {
+ BlockManager.addBlockAsync(
+ Block(
+ category = Block.CATEGORY_BLACK_LIST,
+ type = Block.TYPE_USER,
+ username = it.get { name },
+ uid = it.get { id }.toString()
+ )
+ ) {
+ if (it) context.toastShort(R.string.toast_add_success)
+ }
+ }
+ ) {
+ Text(text = stringResource(id = R.string.menu_add_user_to_black_list))
+ }
+ DropdownMenuItem(
+ onClick = {
+ BlockManager.addBlockAsync(
+ Block(
+ category = Block.CATEGORY_WHITE_LIST,
+ type = Block.TYPE_USER,
+ username = it.get { name },
+ uid = it.get { id }.toString()
+ )
+ ) {
+ if (it) context.toastShort(R.string.toast_add_success)
+ }
+ }
+ ) {
+ Text(text = stringResource(id = R.string.menu_add_user_to_white_list))
+ }
+ },
+ triggerShape = CircleShape
+ ) {
+ Box(
+ modifier = Modifier.size(48.dp),
+ contentAlignment = Alignment.Center
+ ) {
+ Icon(
+ imageVector = Icons.Rounded.NoAccounts,
+ contentDescription = stringResource(id = R.string.btn_block)
+ )
+ }
+ }
+ }
}
)
}
@@ -538,7 +597,8 @@ private fun UserProfileDetail(
),
style = MaterialTheme.typography.h6,
maxLines = 1,
- overflow = TextOverflow.Ellipsis
+ overflow = TextOverflow.Ellipsis,
+ fontWeight = FontWeight.Bold
)
ProvideTextStyle(value = MaterialTheme.typography.body2) {
Row(
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 69fb9c9e..3b62f290 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -757,4 +757,7 @@
回复 %s
关注吧 %s
该用户已隐藏动态
+ 添加到黑名单
+ 添加到白名单
+ 屏蔽选项