diff --git a/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyPresenter.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyPresenter.kt index 9230c1183a..48ab41a820 100644 --- a/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyPresenter.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyPresenter.kt @@ -78,9 +78,6 @@ class SecurityAndPrivacyPresenter( val isKnockEnabled by remember { featureFlagService.isFeatureEnabledFlow(FeatureFlags.Knock) }.collectAsState(false) - val isSpaceSettingsEnabled by remember { - featureFlagService.isFeatureEnabledFlow(FeatureFlags.SpaceSettings) - }.collectAsState(false) val saveAction = remember { mutableStateOf>(AsyncAction.Uninitialized) } val homeserverName = remember { matrixClient.userIdServerName() } @@ -248,7 +245,6 @@ class SecurityAndPrivacyPresenter( saveAction = saveAction.value, permissions = permissions, isSpace = roomInfo.isSpace, - isSpaceSettingsEnabled = isSpaceSettingsEnabled, selectableJoinedSpaces = selectableJoinedSpaces, spaceSelectionMode = spaceSelectionMode, eventSink = ::handleEvent, diff --git a/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyState.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyState.kt index 6ec47ba183..26e77b3c70 100644 --- a/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyState.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyState.kt @@ -29,7 +29,6 @@ data class SecurityAndPrivacyState( val homeserverName: String, val showEnableEncryptionConfirmation: Boolean, private val isKnockEnabled: Boolean, - private val isSpaceSettingsEnabled: Boolean, val saveAction: AsyncAction, val isSpace: Boolean, private val permissions: SecurityAndPrivacyPermissions, @@ -37,7 +36,7 @@ data class SecurityAndPrivacyState( private val spaceSelectionMode: SpaceSelectionMode, val eventSink: (SecurityAndPrivacyEvent) -> Unit ) { - val isSpaceMemberSelectable = isSpaceSettingsEnabled && spaceSelectionMode != SpaceSelectionMode.None + val isSpaceMemberSelectable = spaceSelectionMode != SpaceSelectionMode.None // Show SpaceMember option in two cases: // - SpaceMember is the current saved value diff --git a/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyStateProvider.kt b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyStateProvider.kt index 95cb45d641..19124302e3 100644 --- a/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyStateProvider.kt +++ b/features/securityandprivacy/impl/src/main/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyStateProvider.kt @@ -138,7 +138,6 @@ fun aSecurityAndPrivacyState( isSpace: Boolean = false, selectableJoinedSpaces: Set = emptySet(), spaceSelectionMode: SpaceSelectionMode = SpaceSelectionMode.None, - isSpaceSettingsEnabled: Boolean = true, eventSink: (SecurityAndPrivacyEvent) -> Unit = {} ) = SecurityAndPrivacyState( editedSettings = editedSettings, @@ -151,6 +150,5 @@ fun aSecurityAndPrivacyState( isSpace = isSpace, selectableJoinedSpaces = selectableJoinedSpaces.toImmutableSet(), spaceSelectionMode = spaceSelectionMode, - isSpaceSettingsEnabled = isSpaceSettingsEnabled, eventSink = eventSink, ) diff --git a/features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyPresenterTest.kt b/features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyPresenterTest.kt index d2844c79f0..34b4222053 100644 --- a/features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyPresenterTest.kt +++ b/features/securityandprivacy/impl/src/test/kotlin/io/element/android/features/securityandprivacy/impl/root/SecurityAndPrivacyPresenterTest.kt @@ -416,11 +416,6 @@ class SecurityAndPrivacyPresenterTest { val presenter = createSecurityAndPrivacyPresenter( room = room, matrixClient = client, - featureFlagService = FakeFeatureFlagService( - initialState = mapOf( - FeatureFlags.SpaceSettings.key to true, - ) - ) ) presenter.test { skipItems(1) @@ -461,11 +456,6 @@ class SecurityAndPrivacyPresenterTest { room = room, navigator = navigator, matrixClient = client, - featureFlagService = FakeFeatureFlagService( - initialState = mapOf( - FeatureFlags.SpaceSettings.key to true, - ) - ) ) presenter.test { skipItems(1) @@ -587,7 +577,6 @@ class SecurityAndPrivacyPresenterTest { featureFlagService = FakeFeatureFlagService( initialState = mapOf( FeatureFlags.Knock.key to true, - FeatureFlags.SpaceSettings.key to true, ) ) ) @@ -633,7 +622,6 @@ class SecurityAndPrivacyPresenterTest { featureFlagService = FakeFeatureFlagService( initialState = mapOf( FeatureFlags.Knock.key to true, - FeatureFlags.SpaceSettings.key to true, ) ) ) @@ -859,9 +847,6 @@ class SecurityAndPrivacyPresenterTest { val presenter = createSecurityAndPrivacyPresenter( room = room, matrixClient = client, - featureFlagService = FakeFeatureFlagService( - initialState = mapOf(FeatureFlags.SpaceSettings.key to true) - ) ) presenter.test { skipItems(1) @@ -901,9 +886,6 @@ class SecurityAndPrivacyPresenterTest { val presenter = createSecurityAndPrivacyPresenter( room = room, matrixClient = client, - featureFlagService = FakeFeatureFlagService( - initialState = mapOf(FeatureFlags.SpaceSettings.key to true) - ) ) presenter.test { skipItems(1) @@ -975,7 +957,6 @@ class SecurityAndPrivacyPresenterTest { featureFlagService = FakeFeatureFlagService( initialState = mapOf( FeatureFlags.Knock.key to true, - FeatureFlags.SpaceSettings.key to true, ) ) ) diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpacePresenter.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpacePresenter.kt index 807d139e6a..5ce6575493 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpacePresenter.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/root/SpacePresenter.kt @@ -29,8 +29,6 @@ import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.coroutine.mapState import io.element.android.libraries.di.annotations.SessionCoroutineScope -import io.element.android.libraries.featureflag.api.FeatureFlagService -import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias @@ -66,7 +64,6 @@ class SpacePresenter( private val joinRoom: JoinRoom, private val acceptDeclineInvitePresenter: Presenter, @SessionCoroutineScope private val sessionCoroutineScope: CoroutineScope, - private val featureFlagService: FeatureFlagService, private val spaceService: SpaceService, ) : Presenter { private var children by mutableStateOf>(persistentListOf()) @@ -99,16 +96,13 @@ class SpacePresenter( val permissions by room.permissionsAsState(SpacePermissions.DEFAULT) { perms -> perms.spacePermissions() } - val isSpaceSettingsEnabled by remember { - featureFlagService.isFeatureEnabledFlow(FeatureFlags.SpaceSettings) - }.collectAsState(false) val roomInfo by room.roomInfoFlow.collectAsState() val canAccessSpaceSettings by remember { - derivedStateOf { isSpaceSettingsEnabled && permissions.settingsPermissions.hasAny(roomInfo.joinRule) } + derivedStateOf { permissions.settingsPermissions.hasAny(roomInfo.joinRule) } } val canEditSpaceGraph by remember { - derivedStateOf { isSpaceSettingsEnabled && permissions.canEditSpaceGraph } + derivedStateOf { permissions.canEditSpaceGraph } } val (joinActions, setJoinActions) = remember { mutableStateOf(emptyMap>()) } diff --git a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/root/SpacePresenterTest.kt b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/root/SpacePresenterTest.kt index 1d38e2e0f7..e183de6f27 100644 --- a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/root/SpacePresenterTest.kt +++ b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/root/SpacePresenterTest.kt @@ -19,8 +19,6 @@ import io.element.android.features.invite.api.toInviteData import io.element.android.features.invite.test.InMemorySeenInvitesStore import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.Presenter -import io.element.android.libraries.featureflag.api.FeatureFlags -import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.core.RoomIdOrAlias @@ -75,16 +73,7 @@ class SpacePresenterTest { } @Test - fun `present - canAccessSpaceSettings false when space settings ff is enabled but no permissions`() = runTest { - val presenter = createSpacePresenter(spaceSettingsEnabled = true) - presenter.test { - val state = awaitItem() - assertThat(state.canAccessSpaceSettings).isFalse() - } - } - - @Test - fun `present - canAccessSpaceSettings true when space settings ff is enabled and has permissions`() = runTest { + fun `present - canAccessSpaceSettings true when has permissions`() = runTest { val room = FakeBaseRoom( roomPermissions = FakeRoomPermissions( canSendState = { true } @@ -92,7 +81,6 @@ class SpacePresenterTest { ) val presenter = createSpacePresenter( room = room, - spaceSettingsEnabled = true, ) presenter.test { skipItems(1) @@ -627,7 +615,6 @@ class SpacePresenterTest { lambda = { _, _, _ -> Result.success(Unit) }, ), acceptDeclineInvitePresenter: Presenter = Presenter { anAcceptDeclineInviteState() }, - spaceSettingsEnabled: Boolean = false, spaceService: FakeSpaceService = FakeSpaceService(), ): SpacePresenter { return SpacePresenter( @@ -638,11 +625,6 @@ class SpacePresenterTest { joinRoom = joinRoom, acceptDeclineInvitePresenter = acceptDeclineInvitePresenter, sessionCoroutineScope = this, - featureFlagService = FakeFeatureFlagService( - initialState = mapOf( - FeatureFlags.SpaceSettings.key to spaceSettingsEnabled, - ) - ), spaceService = spaceService, ) } diff --git a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt index a8e59e5c6d..5a80354b07 100644 --- a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt +++ b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt @@ -77,13 +77,6 @@ enum class FeatureFlags( defaultValue = { true }, isFinished = false, ), - SpaceSettings( - key = "feature.spaceSettings", - title = "Space settings", - description = "Allow managing space settings such as details, permissions and privacy.", - defaultValue = { true }, - isFinished = false, - ), RoomListSpaceFilters( key = "feature.roomListSpaceFilters", title = "Room list space filters",