From fe8009e6bf06d45bc9d648ffe9b9ffc40e197325 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 12 Aug 2025 14:40:48 +0200 Subject: [PATCH] Remove FeatureFlag.MarkAsUnread --- .../home/impl/roomlist/RoomListContextMenu.kt | 58 +++++++++---------- .../home/impl/roomlist/RoomListPresenter.kt | 4 -- .../home/impl/roomlist/RoomListState.kt | 1 - .../RoomListStateContextMenuShownProvider.kt | 1 - .../impl/roomlist/RoomListPresenterTest.kt | 8 --- .../libraries/featureflag/api/FeatureFlags.kt | 7 --- 6 files changed, 28 insertions(+), 51 deletions(-) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListContextMenu.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListContextMenu.kt index f729667e53..6ef73770f6 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListContextMenu.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListContextMenu.kt @@ -101,36 +101,34 @@ private fun RoomListModalBottomSheetContent( ) } ) - if (contextMenu.markAsUnreadFeatureFlagEnabled) { - if (contextMenu.hasNewContent) { - ListItem( - headlineContent = { - Text( - text = stringResource(id = R.string.screen_roomlist_mark_as_read), - style = MaterialTheme.typography.bodyLarge, - ) - }, - onClick = onRoomMarkReadClick, - leadingContent = ListItemContent.Icon( - iconSource = IconSource.Vector(CompoundIcons.MarkAsRead()) - ), - style = ListItemStyle.Primary, - ) - } else { - ListItem( - headlineContent = { - Text( - text = stringResource(id = R.string.screen_roomlist_mark_as_unread), - style = MaterialTheme.typography.bodyLarge, - ) - }, - onClick = onRoomMarkUnreadClick, - leadingContent = ListItemContent.Icon( - iconSource = IconSource.Vector(CompoundIcons.MarkAsUnread()) - ), - style = ListItemStyle.Primary, - ) - } + if (contextMenu.hasNewContent) { + ListItem( + headlineContent = { + Text( + text = stringResource(id = R.string.screen_roomlist_mark_as_read), + style = MaterialTheme.typography.bodyLarge, + ) + }, + onClick = onRoomMarkReadClick, + leadingContent = ListItemContent.Icon( + iconSource = IconSource.Vector(CompoundIcons.MarkAsRead()) + ), + style = ListItemStyle.Primary, + ) + } else { + ListItem( + headlineContent = { + Text( + text = stringResource(id = R.string.screen_roomlist_mark_as_unread), + style = MaterialTheme.typography.bodyLarge, + ) + }, + onClick = onRoomMarkUnreadClick, + leadingContent = ListItemContent.Icon( + iconSource = IconSource.Vector(CompoundIcons.MarkAsUnread()) + ), + style = ListItemStyle.Primary, + ) } ListItem( headlineContent = { diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenter.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenter.kt index 1cab846021..ba5007c57c 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenter.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenter.kt @@ -36,8 +36,6 @@ import io.element.android.features.leaveroom.api.LeaveRoomState import io.element.android.libraries.architecture.AsyncData import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.core.coroutine.mapState -import io.element.android.libraries.featureflag.api.FeatureFlagService -import io.element.android.libraries.featureflag.api.FeatureFlags import io.element.android.libraries.fullscreenintent.api.FullScreenIntentPermissionsState import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId @@ -74,7 +72,6 @@ class RoomListPresenter @Inject constructor( private val client: MatrixClient, private val leaveRoomPresenter: Presenter, private val roomListDataSource: RoomListDataSource, - private val featureFlagService: FeatureFlagService, private val filtersPresenter: Presenter, private val searchPresenter: Presenter, private val sessionPreferencesStore: SessionPreferencesStore, @@ -244,7 +241,6 @@ class RoomListPresenter @Inject constructor( roomName = event.roomSummary.name, isDm = event.roomSummary.isDm, isFavorite = event.roomSummary.isFavorite, - markAsUnreadFeatureFlagEnabled = featureFlagService.isFeatureEnabled(FeatureFlags.MarkAsUnread), hasNewContent = event.roomSummary.hasNewContent, displayClearRoomCacheAction = appPreferencesStore.isDeveloperModeEnabledFlow().first(), ) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListState.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListState.kt index 4cfa82fbfc..4a301f0897 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListState.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListState.kt @@ -41,7 +41,6 @@ data class RoomListState( val roomName: String?, val isDm: Boolean, val isFavorite: Boolean, - val markAsUnreadFeatureFlagEnabled: Boolean, val hasNewContent: Boolean, val displayClearRoomCacheAction: Boolean, ) : ContextMenu diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListStateContextMenuShownProvider.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListStateContextMenuShownProvider.kt index 0cd3117de4..856b7662af 100644 --- a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListStateContextMenuShownProvider.kt +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/roomlist/RoomListStateContextMenuShownProvider.kt @@ -28,7 +28,6 @@ internal fun aContextMenuShown( roomId = RoomId("!aRoom:aDomain"), roomName = roomName, isDm = isDm, - markAsUnreadFeatureFlagEnabled = true, hasNewContent = hasNewContent, isFavorite = isFavorite, displayClearRoomCacheAction = false, diff --git a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenterTest.kt b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenterTest.kt index 11db1b80a5..044c150ad2 100644 --- a/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenterTest.kt +++ b/features/home/impl/src/test/kotlin/io/element/android/features/home/impl/roomlist/RoomListPresenterTest.kt @@ -32,8 +32,6 @@ import io.element.android.libraries.dateformatter.api.DateFormatter import io.element.android.libraries.dateformatter.test.FakeDateFormatter import io.element.android.libraries.eventformatter.api.RoomLastMessageFormatter import io.element.android.libraries.eventformatter.test.FakeRoomLastMessageFormatter -import io.element.android.libraries.featureflag.api.FeatureFlagService -import io.element.android.libraries.featureflag.test.FakeFeatureFlagService import io.element.android.libraries.fullscreenintent.api.aFullScreenIntentPermissionsState import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId @@ -217,7 +215,6 @@ class RoomListPresenterTest { roomName = summary.name, isDm = false, isFavorite = false, - markAsUnreadFeatureFlagEnabled = true, hasNewContent = false, displayClearRoomCacheAction = false, ) @@ -235,7 +232,6 @@ class RoomListPresenterTest { roomName = summary.name, isDm = false, isFavorite = true, - markAsUnreadFeatureFlagEnabled = true, hasNewContent = false, displayClearRoomCacheAction = false, ) @@ -263,7 +259,6 @@ class RoomListPresenterTest { roomName = summary.name, isDm = false, isFavorite = false, - markAsUnreadFeatureFlagEnabled = true, // true here. hasNewContent = false, displayClearRoomCacheAction = true, @@ -295,7 +290,6 @@ class RoomListPresenterTest { roomName = summary.name, isDm = false, isFavorite = false, - markAsUnreadFeatureFlagEnabled = true, hasNewContent = false, displayClearRoomCacheAction = false, ) @@ -604,7 +598,6 @@ class RoomListPresenterTest { dateFormatter: DateFormatter = FakeDateFormatter(), roomLastMessageFormatter: RoomLastMessageFormatter = FakeRoomLastMessageFormatter(), sessionPreferencesStore: SessionPreferencesStore = InMemorySessionPreferencesStore(), - featureFlagService: FeatureFlagService = FakeFeatureFlagService(), analyticsService: AnalyticsService = FakeAnalyticsService(), filtersPresenter: Presenter = Presenter { aRoomListFiltersState() }, searchPresenter: Presenter = Presenter { aRoomListSearchState() }, @@ -626,7 +619,6 @@ class RoomListPresenterTest { sessionCoroutineScope = backgroundScope, dateTimeObserver = FakeDateTimeObserver(), ), - featureFlagService = featureFlagService, searchPresenter = searchPresenter, sessionPreferencesStore = sessionPreferencesStore, filtersPresenter = filtersPresenter, 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 c583e9df8e..f6fe792cff 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 @@ -21,13 +21,6 @@ enum class FeatureFlags( override val defaultValue: (BuildMeta) -> Boolean, override val isFinished: Boolean, ) : Feature { - MarkAsUnread( - key = "feature.markAsUnread", - title = "Mark as unread", - description = "Allow user to mark a room as unread", - defaultValue = { true }, - isFinished = false, - ), RoomDirectorySearch( key = "feature.roomdirectorysearch", title = "Room directory search",