diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomePresenter.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomePresenter.kt index e53d20857e..3f223135c1 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomePresenter.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomePresenter.kt @@ -28,8 +28,6 @@ import io.element.android.features.rageshake.api.RageshakeFeatureAvailability import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher import io.element.android.libraries.designsystem.utils.snackbar.collectSnackbarMessageAsState -import io.element.android.libraries.featureflag.api.FeatureFlagService -import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.indicator.api.IndicatorService import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.sync.SyncService @@ -48,7 +46,6 @@ class HomePresenter( private val homeSpacesPresenter: Presenter, private val logoutPresenter: Presenter, private val rageshakeFeatureAvailability: RageshakeFeatureAvailability, - private val featureFlagService: FeatureFlagService, private val sessionStore: SessionStore, private val announcementService: AnnouncementService, ) : Presenter { @@ -69,9 +66,6 @@ class HomePresenter( val canReportBug by remember { rageshakeFeatureAvailability.isAvailable() }.collectAsState(false) val roomListState = roomListPresenter.present() val homeSpacesState = homeSpacesPresenter.present() - val isSpaceFeatureEnabled by remember { - featureFlagService.isFeatureEnabledFlow(FeatureFlags.Space) - }.collectAsState(initial = false) var currentHomeNavigationBarItemOrdinal by rememberSaveable { mutableIntStateOf(HomeNavigationBarItem.Chats.ordinal) } val currentHomeNavigationBarItem by remember { derivedStateOf { @@ -117,7 +111,6 @@ class HomePresenter( snackbarMessage = snackbarMessage, canReportBug = canReportBug, directLogoutState = directLogoutState, - isSpaceFeatureEnabled = isSpaceFeatureEnabled, eventSink = ::handleEvent, ) } diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeState.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeState.kt index 90667a8734..474fb6d5ba 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeState.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeState.kt @@ -29,10 +29,9 @@ data class HomeState( val snackbarMessage: SnackbarMessage?, val canReportBug: Boolean, val directLogoutState: DirectLogoutState, - val isSpaceFeatureEnabled: Boolean, val eventSink: (HomeEvents) -> Unit, ) { val displayActions = currentHomeNavigationBarItem == HomeNavigationBarItem.Chats val displayRoomListFilters = currentHomeNavigationBarItem == HomeNavigationBarItem.Chats && roomListState.displayFilters - val showNavigationBar = isSpaceFeatureEnabled && homeSpacesState.spaceRooms.isNotEmpty() + val showNavigationBar = homeSpacesState.spaceRooms.isNotEmpty() } diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeStateProvider.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeStateProvider.kt index 43010b1720..e68ff7aa1f 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeStateProvider.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeStateProvider.kt @@ -31,7 +31,6 @@ open class HomeStateProvider : PreviewParameterProvider { aHomeState(hasNetworkConnection = false), aHomeState(snackbarMessage = SnackbarMessage(CommonStrings.common_verification_complete)), aHomeState( - isSpaceFeatureEnabled = true, roomListState = aRoomListState( // Add more rooms to see the blur effect under the NavigationBar contentState = aRoomsContentState( @@ -42,7 +41,6 @@ open class HomeStateProvider : PreviewParameterProvider { homeSpacesState = aHomeSpacesState(), ), aHomeState( - isSpaceFeatureEnabled = true, currentHomeNavigationBarItem = HomeNavigationBarItem.Spaces, ), ) + RoomListStateProvider().values.map { @@ -60,7 +58,6 @@ internal fun aHomeState( roomListState: RoomListState = aRoomListState(), homeSpacesState: HomeSpacesState = aHomeSpacesState(), canReportBug: Boolean = true, - isSpaceFeatureEnabled: Boolean = false, directLogoutState: DirectLogoutState = aDirectLogoutState(), eventSink: (HomeEvents) -> Unit = {} ) = HomeState( @@ -73,6 +70,5 @@ internal fun aHomeState( currentHomeNavigationBarItem = currentHomeNavigationBarItem, roomListState = roomListState, homeSpacesState = homeSpacesState, - isSpaceFeatureEnabled = isSpaceFeatureEnabled, eventSink = eventSink, ) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeView.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeView.kt index 42e4f72073..1b05fc99ec 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeView.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/HomeView.kt @@ -179,14 +179,10 @@ private fun HomeScaffold( displayFilters = state.displayRoomListFilters, filtersState = roomListState.filtersState, canReportBug = state.canReportBug, - modifier = if (state.isSpaceFeatureEnabled) { - Modifier.hazeEffect( - state = hazeState, - style = HazeMaterials.thick(), - ) - } else { - Modifier.background(ElementTheme.colors.bgCanvasDefault) - } + modifier = Modifier.hazeEffect( + state = hazeState, + style = HazeMaterials.thick(), + ) ) }, bottomBar = { diff --git a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/HomePresenterTest.kt b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/HomePresenterTest.kt index 0ae3ea1ff3..266c33015d 100644 --- a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/HomePresenterTest.kt +++ b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/HomePresenterTest.kt @@ -22,9 +22,6 @@ import io.element.android.features.rageshake.api.RageshakeFeatureAvailability import io.element.android.features.rageshake.test.logs.FakeAnnouncementService import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.designsystem.utils.snackbar.SnackbarDispatcher -import io.element.android.libraries.featureflag.api.FeatureFlagService -import io.element.android.libraries.featureflag.api.FeatureFlags -import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.indicator.api.IndicatorService import io.element.android.libraries.indicator.test.FakeIndicatorService import io.element.android.libraries.matrix.api.MatrixClient @@ -35,7 +32,6 @@ import io.element.android.libraries.matrix.test.AN_EXCEPTION import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.A_USER_NAME import io.element.android.libraries.matrix.test.FakeMatrixClient -import io.element.android.libraries.matrix.test.core.aBuildMeta import io.element.android.libraries.matrix.test.sync.FakeSyncService import io.element.android.libraries.sessionstorage.api.SessionStore import io.element.android.libraries.sessionstorage.test.InMemorySessionStore @@ -54,8 +50,6 @@ class HomePresenterTest { @get:Rule val warmUpRule = WarmUpRule() - private val isSpaceEnabled = FeatureFlags.Space.defaultValue(aBuildMeta()) - @Test fun `present - should start with no user and then load user with success`() = runTest { val matrixClient = FakeMatrixClient( @@ -79,7 +73,6 @@ class HomePresenterTest { moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { - if (isSpaceEnabled) skipItems(1) val initialState = awaitItem() assertThat(initialState.currentUserAndNeighbors.first()).isEqualTo( MatrixUser(A_USER_ID, null, null) @@ -91,8 +84,7 @@ class HomePresenterTest { MatrixUser(A_USER_ID, A_USER_NAME, AN_AVATAR_URL) ) assertThat(withUserState.showAvatarIndicator).isFalse() - assertThat(withUserState.isSpaceFeatureEnabled).isEqualTo(isSpaceEnabled) - assertThat(withUserState.showNavigationBar).isEqualTo(isSpaceEnabled) + assertThat(withUserState.showNavigationBar).isTrue() } } @@ -114,23 +106,6 @@ class HomePresenterTest { } } - @Test - fun `present - space feature enabled`() = runTest { - val presenter = createHomePresenter( - featureFlagService = FakeFeatureFlagService( - initialState = mapOf(FeatureFlags.Space.key to true), - ), - sessionStore = InMemorySessionStore( - updateUserProfileResult = { _, _, _ -> }, - ), - ) - presenter.test { - skipItems(1) - val initialState = awaitItem() - assertThat(initialState.isSpaceFeatureEnabled).isTrue() - } - } - @Test fun `present - show avatar indicator`() = runTest { val indicatorService = FakeIndicatorService() @@ -143,7 +118,6 @@ class HomePresenterTest { moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { - if (isSpaceEnabled) skipItems(1) val initialState = awaitItem() assertThat(initialState.showAvatarIndicator).isFalse() indicatorService.setShowRoomListTopBarIndicator(true) @@ -168,7 +142,6 @@ class HomePresenterTest { moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { - if (isSpaceEnabled) skipItems(1) val initialState = awaitItem() assertThat(initialState.currentUserAndNeighbors.first()).isEqualTo(MatrixUser(matrixClient.sessionId)) // No new state is coming @@ -189,7 +162,6 @@ class HomePresenterTest { moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { - if (isSpaceEnabled) skipItems(1) val initialState = awaitItem() assertThat(initialState.currentHomeNavigationBarItem).isEqualTo(HomeNavigationBarItem.Chats) initialState.eventSink(HomeEvents.SelectHomeNavigationBarItem(HomeNavigationBarItem.Spaces)) @@ -207,16 +179,12 @@ class HomePresenterTest { sessionStore = InMemorySessionStore( updateUserProfileResult = { _, _, _ -> }, ), - featureFlagService = FakeFeatureFlagService( - initialState = mapOf(FeatureFlags.Space.key to true), - ), homeSpacesPresenter = homeSpacesPresenter, announcementService = FakeAnnouncementService( showAnnouncementResult = {}, ) ) presenter.test { - skipItems(1) val initialState = awaitItem() assertThat(initialState.currentHomeNavigationBarItem).isEqualTo(HomeNavigationBarItem.Chats) assertThat(initialState.showNavigationBar).isTrue() @@ -241,7 +209,6 @@ internal fun createHomePresenter( snackbarDispatcher: SnackbarDispatcher = SnackbarDispatcher(), rageshakeFeatureAvailability: RageshakeFeatureAvailability = RageshakeFeatureAvailability { flowOf(false) }, indicatorService: IndicatorService = FakeIndicatorService(), - featureFlagService: FeatureFlagService = FakeFeatureFlagService(), homeSpacesPresenter: Presenter = Presenter { aHomeSpacesState() }, sessionStore: SessionStore = InMemorySessionStore(), announcementService: AnnouncementService = FakeAnnouncementService(), @@ -250,11 +217,10 @@ internal fun createHomePresenter( syncService = syncService, snackbarDispatcher = snackbarDispatcher, indicatorService = indicatorService, - logoutPresenter = { aDirectLogoutState() }, roomListPresenter = { aRoomListState() }, homeSpacesPresenter = homeSpacesPresenter, + logoutPresenter = { aDirectLogoutState() }, rageshakeFeatureAvailability = rageshakeFeatureAvailability, - featureFlagService = featureFlagService, sessionStore = sessionStore, announcementService = announcementService, ) 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 f7227a9ac9..08bdaf942f 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 @@ -70,12 +70,6 @@ enum class FeatureFlags( defaultValue = { false }, isFinished = false, ), - Space( - key = "feature.space", - title = "Spaces", - defaultValue = { true }, - isFinished = true, - ), SpaceSettings( key = "feature.spaceSettings", title = "Space settings",