feat: bot display for user info sheet

Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
Infi 2024-02-19 00:49:15 +01:00
parent 4652bcf455
commit 6ea48cc33b
2 changed files with 45 additions and 9 deletions

View File

@ -1,10 +1,13 @@
package chat.revolt.components.screens.settings package chat.revolt.components.screens.settings
import android.widget.Toast import android.widget.Toast
import androidx.compose.animation.animateContentSize
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material.icons.filled.MoreVert
import androidx.compose.material3.Button import androidx.compose.material3.Button
@ -22,9 +25,12 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.platform.LocalClipboardManager import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@ -51,6 +57,7 @@ fun UserButtons(
val context = LocalContext.current val context = LocalContext.current
val clipboard = LocalClipboardManager.current val clipboard = LocalClipboardManager.current
var botEasterEgg by remember { mutableStateOf(false) }
var menuOpen by remember { mutableStateOf(false) } var menuOpen by remember { mutableStateOf(false) }
if (user.id == null) return Row { if (user.id == null) return Row {
@ -67,19 +74,46 @@ fun UserButtons(
} }
Row( Row(
horizontalArrangement = Arrangement.spacedBy(8.dp) horizontalArrangement = Arrangement.spacedBy(8.dp),
verticalAlignment = Alignment.CenterVertically
) { ) {
when (user.relationship) { when (user.relationship) {
"None" -> { "None" -> {
Button( if (user.bot == null) {
onClick = { Button(
scope.launch { onClick = {
friendUser("${user.username}#${user.discriminator}") scope.launch {
} friendUser("${user.username}#${user.discriminator}")
}, }
modifier = Modifier.weight(1f) },
modifier = Modifier.weight(1f)
) {
Text(stringResource(R.string.user_info_sheet_add_friend))
}
}
Row(
horizontalArrangement = Arrangement.spacedBy(8.dp, alignment = Alignment.Start),
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier
.animateContentSize()
.clip(MaterialTheme.shapes.small)
.clickable { botEasterEgg = true }
.padding(8.dp)
.weight(1f)
) { ) {
Text(stringResource(R.string.user_info_sheet_add_friend)) Icon(
painter = painterResource(R.drawable.ic_robot_24dp),
contentDescription = null
)
Text(
if (botEasterEgg) {
stringResource(R.string.user_info_sheet_user_is_bot_easter_egg)
} else {
stringResource(R.string.user_info_sheet_user_is_bot)
},
style = MaterialTheme.typography.bodyMedium
)
} }
} }

View File

@ -319,6 +319,8 @@
<string name="user_info_sheet_report">Report</string> <string name="user_info_sheet_report">Report</string>
<string name="user_info_sheet_copy_id">Copy ID</string> <string name="user_info_sheet_copy_id">Copy ID</string>
<string name="user_info_sheet_failed_to_open_dm">Could not open DM with this user.</string> <string name="user_info_sheet_failed_to_open_dm">Could not open DM with this user.</string>
<string name="user_info_sheet_user_is_bot">This is a bot.</string>
<string name="user_info_sheet_user_is_bot_easter_egg">This is a bot. It has a plan.</string>
<string name="user_badge_developer">Developer</string> <string name="user_badge_developer">Developer</string>
<string name="user_badge_translator">Translator</string> <string name="user_badge_translator">Translator</string>