feat: polish up the system messages
Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
parent
9bf7dae138
commit
8afc3e748d
|
|
@ -4,6 +4,7 @@ import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.Spacer
|
||||||
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
|
|
@ -27,6 +28,7 @@ import androidx.compose.ui.unit.Dp
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import chat.revolt.R
|
import chat.revolt.R
|
||||||
import chat.revolt.api.schemas.Message
|
import chat.revolt.api.schemas.Message
|
||||||
|
import chat.revolt.components.generic.UIMarkdown
|
||||||
|
|
||||||
enum class SystemMessageType(val type: String) {
|
enum class SystemMessageType(val type: String) {
|
||||||
CHANNEL_OWNERSHIP_CHANGED("channel_ownership_changed"),
|
CHANNEL_OWNERSHIP_CHANGED("channel_ownership_changed"),
|
||||||
|
|
@ -42,12 +44,16 @@ enum class SystemMessageType(val type: String) {
|
||||||
TEXT("text")
|
TEXT("text")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun String?.mention(): String {
|
||||||
|
return "<@$this>"
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SystemMessage(message: Message) {
|
fun SystemMessage(message: Message) {
|
||||||
if (message.system == null) return
|
if (message.system == null) return
|
||||||
|
|
||||||
val systemMessageType =
|
val systemMessageType =
|
||||||
SystemMessageType.values().firstOrNull { it.type == message.system.type }
|
SystemMessageType.entries.firstOrNull { it.type == message.system.type }
|
||||||
|
|
||||||
if (systemMessageType == null) {
|
if (systemMessageType == null) {
|
||||||
Text(text = message.system.toString())
|
Text(text = message.system.toString())
|
||||||
|
|
@ -62,7 +68,9 @@ fun SystemMessage(message: Message) {
|
||||||
) {
|
) {
|
||||||
Row(
|
Row(
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
modifier = Modifier.padding(horizontal = 10.dp, vertical = 4.dp)
|
modifier = Modifier
|
||||||
|
.padding(horizontal = 10.dp, vertical = 4.dp)
|
||||||
|
.fillMaxWidth()
|
||||||
) {
|
) {
|
||||||
SystemMessageIconWithBackground(type = systemMessageType)
|
SystemMessageIconWithBackground(type = systemMessageType)
|
||||||
|
|
||||||
|
|
@ -70,49 +78,101 @@ fun SystemMessage(message: Message) {
|
||||||
|
|
||||||
when (systemMessageType) {
|
when (systemMessageType) {
|
||||||
SystemMessageType.CHANNEL_OWNERSHIP_CHANGED -> {
|
SystemMessageType.CHANNEL_OWNERSHIP_CHANGED -> {
|
||||||
Text(
|
UIMarkdown(
|
||||||
text = "Channel ownership changed from ${message.system.from} to ${message.system.to}"
|
stringResource(
|
||||||
|
R.string.system_message_ownership_changed,
|
||||||
|
message.system.from.mention(),
|
||||||
|
message.system.to.mention()
|
||||||
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemMessageType.CHANNEL_ICON_CHANGED -> {
|
SystemMessageType.CHANNEL_ICON_CHANGED -> {
|
||||||
Text(text = "Channel icon changed by ${message.system.by}")
|
UIMarkdown(
|
||||||
|
stringResource(
|
||||||
|
R.string.system_message_channel_icon_changed,
|
||||||
|
message.system.by.mention()
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemMessageType.CHANNEL_DESCRIPTION_CHANGED -> {
|
SystemMessageType.CHANNEL_DESCRIPTION_CHANGED -> {
|
||||||
Text(text = "Channel description changed by ${message.system.by}")
|
UIMarkdown(
|
||||||
|
stringResource(
|
||||||
|
R.string.system_message_channel_description_changed,
|
||||||
|
message.system.by.mention()
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemMessageType.CHANNEL_RENAMED -> {
|
SystemMessageType.CHANNEL_RENAMED -> {
|
||||||
Text(text = "Channel renamed to ${message.system.name} by ${message.system.by}")
|
UIMarkdown(
|
||||||
|
stringResource(
|
||||||
|
R.string.system_message_channel_renamed,
|
||||||
|
message.system.by.mention(),
|
||||||
|
"**${message.system.name ?: stringResource(R.string.unknown)}**"
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemMessageType.USER_REMOVE -> {
|
SystemMessageType.USER_REMOVE -> {
|
||||||
Text(text = "User ${message.system.id} removed by ${message.system.by}")
|
UIMarkdown(
|
||||||
|
stringResource(
|
||||||
|
R.string.system_message_user_removed,
|
||||||
|
message.system.by.mention(),
|
||||||
|
message.system.id.mention()
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemMessageType.USER_ADDED -> {
|
SystemMessageType.USER_ADDED -> {
|
||||||
Text(text = "User ${message.system.id} added by ${message.system.by}")
|
UIMarkdown(
|
||||||
|
stringResource(
|
||||||
|
R.string.system_message_user_added,
|
||||||
|
message.system.by.mention(),
|
||||||
|
message.system.id.mention()
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemMessageType.USER_BANNED -> {
|
SystemMessageType.USER_BANNED -> {
|
||||||
Text(text = "User ${message.system.id} banned")
|
UIMarkdown(
|
||||||
|
stringResource(
|
||||||
|
R.string.system_message_user_banned,
|
||||||
|
message.system.id.mention()
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemMessageType.USER_KICKED -> {
|
SystemMessageType.USER_KICKED -> {
|
||||||
Text(text = "User ${message.system.id} kicked")
|
UIMarkdown(
|
||||||
|
stringResource(
|
||||||
|
R.string.system_message_user_kicked,
|
||||||
|
message.system.id.mention()
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemMessageType.USER_LEFT -> {
|
SystemMessageType.USER_LEFT -> {
|
||||||
Text(text = "User ${message.system.id} left")
|
UIMarkdown(
|
||||||
|
stringResource(
|
||||||
|
R.string.system_message_user_left,
|
||||||
|
message.system.id.mention()
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemMessageType.USER_JOINED -> {
|
SystemMessageType.USER_JOINED -> {
|
||||||
Text(text = "User ${message.system.id} joined")
|
UIMarkdown(
|
||||||
|
stringResource(
|
||||||
|
R.string.system_message_user_joined,
|
||||||
|
message.system.id.mention()
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemMessageType.TEXT -> {
|
SystemMessageType.TEXT -> {
|
||||||
message.system.content?.let { Text(text = it) }
|
message.system.content?.let { UIMarkdown(it) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -177,6 +177,17 @@
|
||||||
<string name="system_message_user_joined_alt">User joined</string>
|
<string name="system_message_user_joined_alt">User joined</string>
|
||||||
<string name="system_message_text_alt">System message</string>
|
<string name="system_message_text_alt">System message</string>
|
||||||
|
|
||||||
|
<string name="system_message_ownership_changed">%1$s transferred ownership to %2$s</string>
|
||||||
|
<string name="system_message_channel_icon_changed">%1$s changed the channel icon</string>
|
||||||
|
<string name="system_message_channel_description_changed">%1$s changed the channel description</string>
|
||||||
|
<string name="system_message_channel_renamed">%1$s renamed the channel to %2$s</string>
|
||||||
|
<string name="system_message_user_removed">%1$s removed %2$s</string>
|
||||||
|
<string name="system_message_user_added">%1$s added %2$s</string>
|
||||||
|
<string name="system_message_user_banned">%1$s has been banned</string>
|
||||||
|
<string name="system_message_user_kicked">%1$s has been kicked</string>
|
||||||
|
<string name="system_message_user_left">%1$s left</string>
|
||||||
|
<string name="system_message_user_joined">%1$s joined</string>
|
||||||
|
|
||||||
<string name="today">Today</string>
|
<string name="today">Today</string>
|
||||||
<string name="yesterday">Yesterday</string>
|
<string name="yesterday">Yesterday</string>
|
||||||
<string name="x_days_ago">%1$d days ago</string>
|
<string name="x_days_ago">%1$d days ago</string>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue