diff --git a/app/src/main/java/chat/revolt/composables/screens/chat/ChannelHeader.kt b/app/src/main/java/chat/revolt/composables/screens/chat/ChannelHeader.kt index a841cd63..fad9385e 100644 --- a/app/src/main/java/chat/revolt/composables/screens/chat/ChannelHeader.kt +++ b/app/src/main/java/chat/revolt/composables/screens/chat/ChannelHeader.kt @@ -64,10 +64,20 @@ fun ChannelHeader( } channel.channelType?.let { - ChannelIcon( - channelType = it, - modifier = Modifier.alpha(0.6f) - ) + when (it) { + ChannelType.TextChannel, ChannelType.VoiceChannel -> { + ChannelIcon( + channel = channel, + modifier = Modifier.alpha(0.6f) + ) + } + else -> { + ChannelIcon( + channelType = it, + modifier = Modifier.alpha(0.6f) + ) + } + } } Spacer(modifier = Modifier.width(8.dp)) diff --git a/app/src/main/java/chat/revolt/composables/screens/chat/ChannelIcon.kt b/app/src/main/java/chat/revolt/composables/screens/chat/ChannelIcon.kt index 59e00931..105cdacf 100644 --- a/app/src/main/java/chat/revolt/composables/screens/chat/ChannelIcon.kt +++ b/app/src/main/java/chat/revolt/composables/screens/chat/ChannelIcon.kt @@ -1,15 +1,21 @@ package chat.revolt.composables.screens.chat +import androidx.compose.foundation.layout.size import androidx.compose.material3.Icon import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import androidx.compose.ui.unit.dp import chat.revolt.R +import chat.revolt.api.REVOLT_FILES +import chat.revolt.api.schemas.Channel import chat.revolt.api.schemas.ChannelType +import chat.revolt.composables.generic.RemoteImage @Composable fun ChannelIcon(channelType: ChannelType, modifier: Modifier = Modifier) { @@ -56,6 +62,29 @@ fun ChannelIcon(channelType: ChannelType, modifier: Modifier = Modifier) { } } +@Composable +fun ChannelIcon( + channel: Channel, + modifier: Modifier = Modifier, + size: androidx.compose.ui.unit.Dp = 24.dp +) { + val channelType = channel.channelType ?: ChannelType.TextChannel + + if (channel.icon?.id != null) { + RemoteImage( + url = "$REVOLT_FILES/icons/${channel.icon.id}", + description = channel.name ?: stringResource(R.string.unknown), + contentScale = ContentScale.Crop, + height = size.value.toInt(), + width = size.value.toInt(), + allowAnimation = false, + modifier = modifier.size(size) + ) + } else { + ChannelIcon(channelType = channelType, modifier = modifier) + } +} + class ChannelTypeProvider : PreviewParameterProvider { override val values: Sequence get() = sequenceOf( diff --git a/app/src/main/java/chat/revolt/composables/screens/chat/drawer/ChannelSideDrawer.kt b/app/src/main/java/chat/revolt/composables/screens/chat/drawer/ChannelSideDrawer.kt index c78fb7c4..50c64aaf 100644 --- a/app/src/main/java/chat/revolt/composables/screens/chat/drawer/ChannelSideDrawer.kt +++ b/app/src/main/java/chat/revolt/composables/screens/chat/drawer/ChannelSideDrawer.kt @@ -924,7 +924,7 @@ fun ChannelItem( ) } - else -> ChannelIcon(iconType.type) + else -> ChannelIcon(channel = channel, size = 24.dp) } } diff --git a/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt b/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt index 08e3b1f7..dc4822a5 100644 --- a/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt +++ b/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt @@ -551,6 +551,14 @@ fun ChannelScreen( ) } + ChannelType.TextChannel, ChannelType.VoiceChannel -> { + ChannelIcon( + channel = it, + size = 24.dp, + modifier = Modifier.alpha(0.8f) + ) + } + else -> { ChannelIcon( channelType = it.channelType ?: ChannelType.TextChannel,