feat: display role icons in info sheet too

This commit is contained in:
infi 2026-06-20 16:15:04 +02:00
parent 126011a3e3
commit 54a2b2750c
2 changed files with 27 additions and 4 deletions

View File

@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.requiredSize
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@ -12,11 +13,20 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import chat.stoat.composables.generic.RemoteImage
import chat.stoat.core.model.data.STOAT_FILES
import chat.stoat.core.model.schemas.AutumnResource
@Composable
fun RoleListEntry(label: String, brush: Brush, modifier: Modifier = Modifier) {
fun RoleListEntry(
label: String,
brush: Brush,
icon: AutumnResource?,
modifier: Modifier = Modifier
) {
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = modifier
@ -27,6 +37,17 @@ fun RoleListEntry(label: String, brush: Brush, modifier: Modifier = Modifier) {
overflow = TextOverflow.Ellipsis
)
if (icon != null) {
Spacer(Modifier.requiredSize(4.dp))
RemoteImage(
url = "$STOAT_FILES/icons/${icon.id}",
contentScale = ContentScale.Fit,
description = null,
modifier = Modifier
.size(16.dp)
)
}
Spacer(Modifier.weight(1f))
Box(

View File

@ -190,7 +190,8 @@ fun UserInfoSheet(
RoleListEntry(
label = role.name ?: "null",
brush = role.colour?.let { BrushCompat.parseColour(it) }
?: Brush.solidColor(LocalContentColor.current)
?: Brush.solidColor(LocalContentColor.current),
icon = role.icon
)
}
}
@ -205,8 +206,9 @@ fun UserInfoSheet(
role?.let {
RoleListEntry(
label = role.name ?: "null",
brush = role.colour?.let { BrushCompat.parseColour(it) }
?: Brush.solidColor(LocalContentColor.current)
brush = role.colour?.let { c -> BrushCompat.parseColour(c) }
?: Brush.solidColor(LocalContentColor.current),
icon = role.icon
)
}
}