Browse Source

Add room moderation feature flag (#2495)

pull/2497/head
Jorge Martin Espinosa 7 months ago committed by GitHub
parent
commit
97f2620997
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 6
      features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt
  2. 2
      features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsState.kt
  3. 2
      features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt
  4. 2
      features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt
  5. 7
      libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt
  6. 1
      libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/StaticFeatureFlagProvider.kt

6
features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsPresenter.kt

@ -80,6 +80,10 @@ class RoomDetailsPresenter @Inject constructor( @@ -80,6 +80,10 @@ class RoomDetailsPresenter @Inject constructor(
val roomTopic by remember { derivedStateOf { roomInfo?.topic ?: room.topic } }
val isFavorite by remember { derivedStateOf { roomInfo?.isFavorite.orFalse() } }
val isRoomModerationEnabled by produceState(initialValue = false) {
value = featureFlagService.isFeatureEnabled(FeatureFlags.RoomModeration)
}
LaunchedEffect(Unit) {
canShowNotificationSettings.value = featureFlagService.isFeatureEnabled(FeatureFlags.NotificationSettings)
if (canShowNotificationSettings.value) {
@ -152,7 +156,7 @@ class RoomDetailsPresenter @Inject constructor( @@ -152,7 +156,7 @@ class RoomDetailsPresenter @Inject constructor(
leaveRoomState = leaveRoomState,
roomNotificationSettings = roomNotificationSettingsState.roomNotificationSettings(),
isFavorite = isFavorite,
displayAdminSettings = !room.isDm && isUserAdmin,
displayRolesAndPermissionsSettings = isRoomModerationEnabled && !room.isDm && isUserAdmin,
eventSink = ::handleEvents,
)
}

2
features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsState.kt

@ -37,7 +37,7 @@ data class RoomDetailsState( @@ -37,7 +37,7 @@ data class RoomDetailsState(
val leaveRoomState: LeaveRoomState,
val roomNotificationSettings: RoomNotificationSettings?,
val isFavorite: Boolean,
val displayAdminSettings: Boolean,
val displayRolesAndPermissionsSettings: Boolean,
val eventSink: (RoomDetailsEvent) -> Unit
)

2
features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsStateProvider.kt

@ -110,7 +110,7 @@ fun aRoomDetailsState( @@ -110,7 +110,7 @@ fun aRoomDetailsState(
leaveRoomState = leaveRoomState,
roomNotificationSettings = roomNotificationSettings,
isFavorite = isFavorite,
displayAdminSettings = displayAdminSettings,
displayRolesAndPermissionsSettings = displayAdminSettings,
eventSink = eventSink
)

2
features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/RoomDetailsView.kt

@ -176,7 +176,7 @@ fun RoomDetailsView( @@ -176,7 +176,7 @@ fun RoomDetailsView(
}
)
if (state.displayAdminSettings) {
if (state.displayRolesAndPermissionsSettings) {
ListItem(
headlineContent = { Text("Roles and permissions") },
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Admin())),

7
libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt

@ -82,4 +82,11 @@ enum class FeatureFlags( @@ -82,4 +82,11 @@ enum class FeatureFlags(
defaultValue = true,
isFinished = false,
),
RoomModeration(
key = "feature.roomModeration",
title = "Room moderation",
description = "Add moderation features to the room for users with permissions",
defaultValue = true,
isFinished = false,
),
}

1
libraries/featureflag/impl/src/main/kotlin/io/element/android/libraries/featureflag/impl/StaticFeatureFlagProvider.kt

@ -41,6 +41,7 @@ class StaticFeatureFlagProvider @Inject constructor() : @@ -41,6 +41,7 @@ class StaticFeatureFlagProvider @Inject constructor() :
FeatureFlags.Mentions -> true
FeatureFlags.MarkAsUnread -> false
FeatureFlags.RoomListFilters -> false
FeatureFlags.RoomModeration -> false
}
} else {
false

Loading…
Cancel
Save