Server icons updated to be same as website

This commit is contained in:
Harish Vishwakarma 2026-01-29 18:38:58 +05:30
parent 3e8865060e
commit 5f957d96f7
4 changed files with 52 additions and 29 deletions

View File

@ -180,7 +180,7 @@ fun ServerItem(
) {
// Safely convert the hex string to a Color, or return null if invalid
fun parseColorOrNull(hex: String?): Color? {
return hex?.let { raw ->
return hex?.trim()?.takeIf { it.isNotEmpty() }?.let { raw ->
val normalized = if (raw.startsWith("#")) raw else "#$raw"
try {
Color(normalized.toColorInt())
@ -190,24 +190,19 @@ fun ServerItem(
}
}
// Determine card colors based on server.showColor
val containerColor = parseColorOrNull(server.showColor)
val cardColors = if (containerColor != null) {
CardDefaults.cardColors(containerColor = containerColor)
} else {
CardDefaults.cardColors()
}
// Calculate alpha values based on disabled state
val contentAlpha = if (server.disabled) 0.5f else 1.0f
val descriptionAlpha = if (server.disabled) 0.4f else 0.7f
// Use server color for icon and text (like website), not for card background
val accentColor = parseColorOrNull(server.showColor)
val contentColor = accentColor?.copy(alpha = if (server.disabled) 0.5f else 1f)
?: MaterialTheme.colorScheme.onBackground.copy(alpha = if (server.disabled) 0.5f else 1f)
val descriptionColor = accentColor?.copy(alpha = if (server.disabled) 0.4f else 0.7f)
?: MaterialTheme.colorScheme.onBackground.copy(alpha = if (server.disabled) 0.4f else 0.7f)
Card(
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 8.dp)
.clickable(enabled = !isProcessing) { onClick() },
colors = cardColors,
colors = CardDefaults.cardColors(),
) {
Row(
modifier = Modifier
@ -215,12 +210,18 @@ fun ServerItem(
.padding(8.dp),
verticalAlignment = Alignment.CenterVertically
) {
// Left icon: boxicons (Lock / MessageDots / MessageAdd) — same as website
Image(
painter = painterResource(R.drawable.three_person),
contentDescription = "",
colorFilter = ColorFilter.tint(
color = MaterialTheme.colorScheme.onBackground.copy(alpha = contentAlpha)
)
painter = painterResource(
when {
server.disabled -> R.drawable.ic_discover_lock
isJoined -> R.drawable.ic_discover_message_dots
else -> R.drawable.ic_discover_message_add
}
),
contentDescription = null,
modifier = Modifier.size(32.dp),
colorFilter = ColorFilter.tint(contentColor)
)
Spacer(modifier = Modifier.width(12.dp))
@ -230,9 +231,7 @@ fun ServerItem(
Text(
text = server.name,
style = MaterialTheme.typography.titleMedium,
color = MaterialTheme.colorScheme.onBackground.copy(
alpha = contentAlpha
)
color = contentColor
)
Spacer(modifier = Modifier.height(4.dp))
@ -240,9 +239,7 @@ fun ServerItem(
Text(
text = server.description,
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onBackground.copy(
alpha = descriptionAlpha,
),
color = descriptionColor,
maxLines = 2,
overflow = TextOverflow.Ellipsis
)
@ -282,11 +279,7 @@ fun ServerItem(
painter = painterResource(R.drawable.icn_arrow_forward_24dp),
contentDescription = "Join server",
modifier = Modifier.align(Alignment.Center),
colorFilter = ColorFilter.tint(
color = MaterialTheme.colorScheme.onBackground.copy(
alpha = contentAlpha
)
)
colorFilter = ColorFilter.tint(contentColor)
)
}
}

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFF"
android:pathData="M12,2C9.243,2 7,4.243 7,7v3H6a2,2 0 0,0 -2,2v8a2,2 0 0,0 2,2h12a2,2 0 0,0 2,-2v-8a2,2 0 0,0 -2,-2h-1V7c0,-2.757 -2.243,-5 -5,-5zM9,7c0,-1.654 1.346,-3 3,-3s3,1.346 3,3v3H9V7zm4,10.723V20h-2v-2.277a1.993,1.993 0 0,1 0.567,-3.677A2.001,2.001 0 0,1 14,16a1.99,1.99 0 0,1 -1,1.723z"/>
</vector>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFF"
android:pathData="M20,2H4c-1.103,0 -2,0.894 -2,1.992v12.016C2,17.106 2.897,18 4,18h3v4l6.351,-4H20c1.103,0 2,-0.894 2,-1.992V3.992A1.998,1.998 0 0,0 20,2zM17,11h-4v4h-2v-4H7V9h4V5h2v4h4v2z"/>
</vector>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FFFFFF"
android:pathData="M20,2H4c-1.103,0 -2,0.894 -2,1.992v12.017C2,17.106 2.897,18 4,18h3v4l6.351,-4H20c1.103,0 2,-0.894 2,-1.992V3.992A1.998,1.998 0 0,0 20,2zM11,10a2,2 0 1,1 -2,-2c0.086,0 0.167,0.015 0.25,0.025 0.082,-0.014 0.164,-0.025 0.25,-0.025A1.5,1.5 0 0,1 11,9.5c0,0.086 -0.012,0.168 -0.025,0.25 0.01,0.083 0.025,0.165 0.025,0.25zM15,12a2,2 0 0,1 -2,-2c0,-0.086 0.015,-0.167 0.025,-0.25A1.592,1.592 0 0,1 13,9.5 1.5,1.5 0 0,1 14.5,8c0.086,0 0.168,0.011 0.25,0.025 0.083,-0.01 0.164,-0.025 0.25,-0.025a2,2 0 0,1 0,4z"/>
</vector>