Mark as unread: add a feature flag, disabled on release build.

This commit is contained in:
Benoit Marty 2024-02-08 11:49:14 +01:00
parent f6e4f073a3
commit dc65e60e66
7 changed files with 48 additions and 30 deletions

View file

@ -88,36 +88,38 @@ private fun RoomListModalBottomSheetContent(
) )
} }
) )
ListItem( if (contextMenu.markAsUnreadFeatureFlagEnabled) {
headlineContent = { ListItem(
Text( headlineContent = {
text = stringResource( Text(
id = if (contextMenu.hasNewContent) { text = stringResource(
R.string.screen_roomlist_mark_as_read id = if (contextMenu.hasNewContent) {
} else { R.string.screen_roomlist_mark_as_read
R.string.screen_roomlist_mark_as_unread } else {
} R.string.screen_roomlist_mark_as_unread
), }
style = MaterialTheme.typography.bodyLarge, ),
) style = MaterialTheme.typography.bodyLarge,
}, )
modifier = Modifier.clickable { },
if (contextMenu.hasNewContent) { modifier = Modifier.clickable {
onRoomMarkReadClicked() if (contextMenu.hasNewContent) {
} else { onRoomMarkReadClicked()
onRoomMarkUnreadClicked() } else {
} onRoomMarkUnreadClicked()
}, }
/* TODO Design },
leadingContent = ListItemContent.Icon( /* TODO Design
iconSource = IconSource.Vector( leadingContent = ListItemContent.Icon(
CompoundIcons.Settings, iconSource = IconSource.Vector(
contentDescription = stringResource(id = CommonStrings.common_settings) CompoundIcons.Settings,
) contentDescription = stringResource(id = CommonStrings.common_settings)
), )
*/ ),
style = ListItemStyle.Primary, */
) style = ListItemStyle.Primary,
)
}
ListItem( ListItem(
headlineContent = { headlineContent = {
Text( Text(

View file

@ -111,6 +111,9 @@ class RoomListPresenter @Inject constructor(
} }
} }
val markAsUnreadFeatureFlagEnabled by featureFlagService.isFeatureEnabledFlow(FeatureFlags.MarkAsUnread)
.collectAsState(initial = null)
// Avatar indicator // Avatar indicator
val showAvatarIndicator by indicatorService.showRoomListTopBarIndicator() val showAvatarIndicator by indicatorService.showRoomListTopBarIndicator()
@ -135,6 +138,7 @@ class RoomListPresenter @Inject constructor(
roomId = event.roomListRoomSummary.roomId, roomId = event.roomListRoomSummary.roomId,
roomName = event.roomListRoomSummary.name, roomName = event.roomListRoomSummary.name,
isDm = event.roomListRoomSummary.isDm, isDm = event.roomListRoomSummary.isDm,
markAsUnreadFeatureFlagEnabled = markAsUnreadFeatureFlagEnabled == true,
hasNewContent = event.roomListRoomSummary.hasNewContent hasNewContent = event.roomListRoomSummary.hasNewContent
) )
} }

View file

@ -49,6 +49,7 @@ data class RoomListState(
val roomId: RoomId, val roomId: RoomId,
val roomName: String, val roomName: String,
val isDm: Boolean, val isDm: Boolean,
val markAsUnreadFeatureFlagEnabled: Boolean,
val hasNewContent: Boolean, val hasNewContent: Boolean,
) : ContextMenu ) : ContextMenu
} }

View file

@ -106,5 +106,6 @@ internal fun aContextMenuShown(
roomId = RoomId("!aRoom:aDomain"), roomId = RoomId("!aRoom:aDomain"),
roomName = roomName, roomName = roomName,
isDm = isDm, isDm = isDm,
markAsUnreadFeatureFlagEnabled = true,
hasNewContent = hasNewContent, hasNewContent = hasNewContent,
) )

View file

@ -356,6 +356,7 @@ class RoomListPresenterTests {
roomId = summary.roomId, roomId = summary.roomId,
roomName = summary.name, roomName = summary.name,
isDm = false, isDm = false,
markAsUnreadFeatureFlagEnabled = true,
hasNewContent = false, hasNewContent = false,
) )
) )
@ -382,6 +383,7 @@ class RoomListPresenterTests {
roomId = summary.roomId, roomId = summary.roomId,
roomName = summary.name, roomName = summary.name,
isDm = false, isDm = false,
markAsUnreadFeatureFlagEnabled = true,
hasNewContent = false, hasNewContent = false,
) )
) )

View file

@ -75,4 +75,11 @@ enum class FeatureFlags(
defaultValue = true, defaultValue = true,
isFinished = false, isFinished = false,
), ),
MarkAsUnread(
key = "feature.markAsUnread",
title = "Mark as unread",
description = "Allow user to mark a room as unread",
defaultValue = true,
isFinished = false,
),
} }

View file

@ -40,6 +40,7 @@ class StaticFeatureFlagProvider @Inject constructor() :
FeatureFlags.PinUnlock -> true FeatureFlags.PinUnlock -> true
FeatureFlags.Mentions -> true FeatureFlags.Mentions -> true
FeatureFlags.SecureStorage -> true FeatureFlags.SecureStorage -> true
FeatureFlags.MarkAsUnread -> false
} }
} else { } else {
false false