feat: display server official/verified badge
Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
parent
45009d180b
commit
cec19dc501
|
|
@ -41,6 +41,16 @@ data class Server(
|
|||
}
|
||||
}
|
||||
|
||||
enum class ServerFlags(val value: Long) {
|
||||
Official(1L shl 0),
|
||||
Verified(1L shl 1),
|
||||
}
|
||||
|
||||
infix fun Long?.has(flag: ServerFlags): Boolean {
|
||||
if (this == null) return false
|
||||
return this and flag.value == flag.value
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class Category(
|
||||
val id: String? = null,
|
||||
|
|
|
|||
|
|
@ -13,10 +13,13 @@ import androidx.compose.foundation.layout.Box
|
|||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.RowScope
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
|
|
@ -44,6 +47,7 @@ import androidx.compose.ui.draw.alpha
|
|||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Brush
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
|
|
@ -58,7 +62,9 @@ import chat.revolt.api.REVOLT_FILES
|
|||
import chat.revolt.api.RevoltAPI
|
||||
import chat.revolt.api.internals.ChannelUtils
|
||||
import chat.revolt.api.schemas.ChannelType
|
||||
import chat.revolt.api.schemas.ServerFlags
|
||||
import chat.revolt.api.schemas.User
|
||||
import chat.revolt.api.schemas.has
|
||||
import chat.revolt.components.generic.presenceFromStatus
|
||||
import chat.revolt.components.screens.chat.drawer.server.DrawerChannel
|
||||
import chat.revolt.sheets.ChannelContextSheet
|
||||
|
|
@ -345,6 +351,37 @@ fun RowScope.ChannelList(
|
|||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
) {
|
||||
Spacer(Modifier.width(16.dp))
|
||||
|
||||
if (server?.flags has ServerFlags.Official) {
|
||||
Icon(
|
||||
painter = painterResource(id = R.drawable.ic_revolt_decagram_24dp),
|
||||
contentDescription = stringResource(R.string.server_flag_official),
|
||||
tint = if (server?.banner != null) {
|
||||
bannerTextColour
|
||||
} else {
|
||||
LocalContentColor.current
|
||||
},
|
||||
modifier = Modifier
|
||||
.padding(end = 8.dp)
|
||||
.size(24.dp)
|
||||
)
|
||||
}
|
||||
if (server?.flags has ServerFlags.Verified) {
|
||||
Icon(
|
||||
painter = painterResource(id = R.drawable.ic_check_decagram_24dp),
|
||||
contentDescription = stringResource(R.string.server_flag_verified),
|
||||
tint = if (server?.banner != null) {
|
||||
bannerTextColour
|
||||
} else {
|
||||
LocalContentColor.current
|
||||
},
|
||||
modifier = Modifier
|
||||
.padding(end = 8.dp)
|
||||
.size(24.dp)
|
||||
)
|
||||
}
|
||||
|
||||
Text(
|
||||
text = (server?.name
|
||||
?: stringResource(R.string.unknown)),
|
||||
|
|
@ -358,10 +395,15 @@ fun RowScope.ChannelList(
|
|||
modifier = Modifier
|
||||
.then(
|
||||
if (server?.banner != null) {
|
||||
Modifier.padding(16.dp)
|
||||
Modifier.padding(
|
||||
start = 0.dp,
|
||||
end = 16.dp,
|
||||
top = 16.dp,
|
||||
bottom = 16.dp
|
||||
)
|
||||
} else {
|
||||
Modifier.padding(
|
||||
start = 24.dp,
|
||||
start = 0.dp,
|
||||
end = 24.dp,
|
||||
top = 16.dp,
|
||||
bottom = 16.dp
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:height="24dp"
|
||||
android:width="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M23,12L20.56,9.22L20.9,5.54L17.29,4.72L15.4,1.54L12,3L8.6,1.54L6.71,4.72L3.1,5.53L3.44,9.21L1,12L3.44,14.78L3.1,18.47L6.71,19.29L8.6,22.47L12,21L15.4,22.46L17.29,19.28L20.9,18.46L20.56,14.78L23,12M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9L10,17Z" />
|
||||
</vector>
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:height="24dp"
|
||||
android:width="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M8.6,1.539L6.711,4.721L3.1,5.529L3.439,9.211L1,12L3.439,14.779L3.1,18.471L6.711,19.289L8.6,22.471L12,21L15.4,22.461L17.289,19.279L20.9,18.461L20.561,14.779L23,12L20.561,9.221L20.9,5.539L17.289,4.721L15.4,1.539L12,3L8.6,1.539zM7.965,7.66L12.789,7.66C14.919,7.66 15.982,8.884 15.982,10.393C15.995,10.968 15.812,11.53 15.461,11.986C15.11,12.443 14.613,12.766 14.053,12.902L16.059,16.34L13.668,16.34L11.859,13.064L11.352,13.064L11.352,16.34L9.234,16.34L9.234,9.42L7.965,7.66zM11.352,9.416L11.352,11.566L12.664,11.566C13.457,11.566 13.828,11.159 13.828,10.479C13.828,9.835 13.456,9.416 12.664,9.416L11.352,9.416z" />
|
||||
</vector>
|
||||
|
|
@ -187,6 +187,9 @@
|
|||
<string name="copy">Copy</string>
|
||||
<string name="copied">Copied to clipboard</string>
|
||||
|
||||
<string name="server_flag_official">Official Server</string>
|
||||
<string name="server_flag_verified">Verified Server</string>
|
||||
|
||||
<string name="channel_link_invalid">You can\'t view this channel</string>
|
||||
<string name="channel_link_invalid_description">This channel may have been deleted or you may not have permission to view it.</string>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue