chore: flag for others user cards

Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
Infi 2024-12-27 16:28:18 +01:00
parent 666b75dc1d
commit fd923434f0
2 changed files with 39 additions and 10 deletions

View File

@ -30,6 +30,19 @@ sealed class MediaConversationsVariates {
data class Restricted(val predicate: () -> Boolean) : MediaConversationsVariates() data class Restricted(val predicate: () -> Boolean) : MediaConversationsVariates()
} }
@FeatureFlag("UserCards")
sealed class UserCardsVariates {
@Treatment(
"Enable user cards for all users"
)
object Enabled : UserCardsVariates()
@Treatment(
"Enable user cards for users that meet certain or all criteria (implementation-specific)"
)
data class Restricted(val predicate: () -> Boolean) : UserCardsVariates()
}
object FeatureFlags { object FeatureFlags {
@FeatureFlag("LabsAccessControl") @FeatureFlag("LabsAccessControl")
var labsAccessControl by mutableStateOf<LabsAccessControlVariates>( var labsAccessControl by mutableStateOf<LabsAccessControlVariates>(
@ -55,4 +68,17 @@ object FeatureFlags {
is MediaConversationsVariates.Enabled -> true is MediaConversationsVariates.Enabled -> true
is MediaConversationsVariates.Restricted -> (mediaConversations as MediaConversationsVariates.Restricted).predicate() is MediaConversationsVariates.Restricted -> (mediaConversations as MediaConversationsVariates.Restricted).predicate()
} }
@FeatureFlag("UserCards")
var userCards by mutableStateOf<UserCardsVariates>(
UserCardsVariates.Restricted {
RevoltAPI.selfId?.endsWith("Z") == true
}
)
val userCardsGranted: Boolean
get() = when (userCards) {
is UserCardsVariates.Enabled -> true
is UserCardsVariates.Restricted -> (userCards as UserCardsVariates.Restricted).predicate()
}
} }

View File

@ -45,6 +45,7 @@ import chat.revolt.api.internals.ULID
import chat.revolt.api.internals.solidColor import chat.revolt.api.internals.solidColor
import chat.revolt.api.routes.user.fetchUserProfile import chat.revolt.api.routes.user.fetchUserProfile
import chat.revolt.api.schemas.Profile import chat.revolt.api.schemas.Profile
import chat.revolt.api.settings.FeatureFlags
import chat.revolt.components.chat.RoleListEntry import chat.revolt.components.chat.RoleListEntry
import chat.revolt.components.chat.UserBadgeList import chat.revolt.components.chat.UserBadgeList
import chat.revolt.components.chat.UserBadgeRow import chat.revolt.components.chat.UserBadgeRow
@ -128,16 +129,18 @@ fun UserInfoSheet(
item(key = "overview", span = StaggeredGridItemSpan.FullLine) { item(key = "overview", span = StaggeredGridItemSpan.FullLine) {
Box { Box {
RawUserOverview(user, profile, internalPadding = false) RawUserOverview(user, profile, internalPadding = false)
SmallFloatingActionButton( if (FeatureFlags.userCardsGranted) {
onClick = { showUserCard = true }, SmallFloatingActionButton(
modifier = Modifier onClick = { showUserCard = true },
.align(Alignment.TopEnd) modifier = Modifier
.padding(top = 8.dp, end = 8.dp) .align(Alignment.TopEnd)
) { .padding(top = 8.dp, end = 8.dp)
Icon( ) {
painter = painterResource(R.drawable.ic_badge_account_horizontal_24dp), Icon(
contentDescription = null painter = painterResource(R.drawable.ic_badge_account_horizontal_24dp),
) contentDescription = null
)
}
} }
} }
} }