Drop FF resolution in IsShowSingleMessageMode

ET-5623
This commit is contained in:
Niccolò Forlini
2025-12-19 13:24:58 +00:00
committed by MargeBot
parent f6f1b1f0ff
commit 55ca8563bc
5 changed files with 16 additions and 69 deletions
@@ -18,22 +18,14 @@
package ch.protonmail.android.maildetail.domain.usecase
import ch.protonmail.android.mailfeatureflags.domain.annotation.IsMessageDetailEnabled
import ch.protonmail.android.mailfeatureflags.domain.model.FeatureFlag
import ch.protonmail.android.maillabel.domain.model.ViewMode
import ch.protonmail.android.mailsettings.domain.usecase.GetUserPreferredViewMode
import me.proton.core.domain.entity.UserId
import javax.inject.Inject
class IsShowSingleMessageMode @Inject constructor(
@IsMessageDetailEnabled private val isMessageDetailFeatureEnabled: FeatureFlag<Boolean>,
private val getUserPreferredViewMode: GetUserPreferredViewMode
) {
suspend operator fun invoke(userId: UserId): Boolean {
val isFeatureEnabled = isMessageDetailFeatureEnabled.get()
val isMessageViewMode = getUserPreferredViewMode(userId) == ViewMode.NoConversationGrouping
return isFeatureEnabled && isMessageViewMode
}
suspend operator fun invoke(userId: UserId) = getUserPreferredViewMode(userId) == ViewMode.NoConversationGrouping
}
@@ -20,7 +20,6 @@ package ch.protonmail.android.maildetail.presentation.usecase
import ch.protonmail.android.mailcommon.domain.sample.UserIdSample
import ch.protonmail.android.maildetail.domain.usecase.IsShowSingleMessageMode
import ch.protonmail.android.mailfeatureflags.domain.model.FeatureFlag
import ch.protonmail.android.maillabel.domain.model.ViewMode
import ch.protonmail.android.mailsettings.domain.usecase.GetUserPreferredViewMode
import io.mockk.coEvery
@@ -30,49 +29,16 @@ import kotlin.test.Test
import kotlin.test.assertFalse
import kotlin.test.assertTrue
class IsShowSingleMessageModeTest {
internal class IsShowSingleMessageModeTest {
private val isMessageDetailFeatureEnabled = mockk<FeatureFlag<Boolean>>()
private val getUserPreferredViewMode = mockk<GetUserPreferredViewMode>()
private val isShowSingleMessageMode = IsShowSingleMessageMode(
isMessageDetailFeatureEnabled,
getUserPreferredViewMode
)
@Test
fun `returns true when feature flag is true and preferred mode is message mode`() = runTest {
// Given
val userId = UserIdSample.Primary
coEvery { isMessageDetailFeatureEnabled.get() } returns true
coEvery { getUserPreferredViewMode(userId) } returns ViewMode.NoConversationGrouping
// When
val actual = isShowSingleMessageMode(userId)
// Then
assertTrue(actual)
}
@Test
fun `returns false when feature flag is false`() = runTest {
// Given
val userId = UserIdSample.Primary
coEvery { isMessageDetailFeatureEnabled.get() } returns false
coEvery { getUserPreferredViewMode(userId) } returns ViewMode.NoConversationGrouping
// When
val actual = isShowSingleMessageMode(userId)
// Then
assertFalse(actual)
}
private val isShowSingleMessageMode = IsShowSingleMessageMode(getUserPreferredViewMode)
@Test
fun `returns false when preferred mode is conversation mode`() = runTest {
// Given
val userId = UserIdSample.Primary
coEvery { isMessageDetailFeatureEnabled.get() } returns true
coEvery { getUserPreferredViewMode(userId) } returns ViewMode.ConversationGrouping
// When
@@ -81,4 +47,17 @@ class IsShowSingleMessageModeTest {
// Then
assertFalse(actual)
}
@Test
fun `returns true when preferred mode is message mode`() = runTest {
// Given
val userId = UserIdSample.Primary
coEvery { getUserPreferredViewMode(userId) } returns ViewMode.NoConversationGrouping
// When
val actual = isShowSingleMessageMode(userId)
// Then
assertTrue(actual)
}
}
@@ -30,7 +30,6 @@ import ch.protonmail.android.mailfeatureflags.domain.annotation.IsBlackFridayWav
import ch.protonmail.android.mailfeatureflags.domain.annotation.IsDebugInspectDbEnabled
import ch.protonmail.android.mailfeatureflags.domain.annotation.IsInjectCssOverrideEnabled
import ch.protonmail.android.mailfeatureflags.domain.annotation.IsLastMessageAutoExpandEnabled
import ch.protonmail.android.mailfeatureflags.domain.annotation.IsMessageDetailEnabled
import ch.protonmail.android.mailfeatureflags.domain.annotation.IsOnboardingUpsellEnabled
import ch.protonmail.android.mailfeatureflags.domain.annotation.IsRestrictMessageWebViewHeightEnabled
import ch.protonmail.android.mailfeatureflags.domain.annotation.IsShowBlockedTrackersEnabled
@@ -44,7 +43,6 @@ import ch.protonmail.android.mailfeatureflags.domain.model.FeatureFlagDefinition
import ch.protonmail.android.mailfeatureflags.domain.model.InjectDetailCssOverrideEnabled
import ch.protonmail.android.mailfeatureflags.domain.model.MailBlackFriday2025Enabled
import ch.protonmail.android.mailfeatureflags.domain.model.MailBlackFriday2025Wave2Enabled
import ch.protonmail.android.mailfeatureflags.domain.model.MessageDetailEnabled
import ch.protonmail.android.mailfeatureflags.domain.model.OnboardingUpsellingEnabled
import ch.protonmail.android.mailfeatureflags.domain.model.RestrictMessageWebViewHeight
import ch.protonmail.android.mailfeatureflags.domain.model.ShowBlockedTrackers
@@ -65,16 +63,6 @@ import javax.inject.Singleton
@InstallIn(SingletonComponent::class)
@Suppress("TooManyFunctions")
object FeatureFlagsModule {
@Provides
@IntoSet
@Singleton
fun provideMessageDetailEnabledDefinitions(): FeatureFlagDefinition = MessageDetailEnabled
@Provides
@Singleton
@IsMessageDetailEnabled
fun provideMessageDetailEnabled(factory: BooleanFeatureFlagFactory) =
factory.create(MessageDetailEnabled.key, false)
@Provides
@IntoSet
@@ -44,10 +44,6 @@ annotation class ComposerAutoCollapseQuotedTextEnabled
@Retention(AnnotationRetention.BINARY)
annotation class IsDebugInspectDbEnabled
@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class IsMessageDetailEnabled
@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class IsLastMessageAutoExpandEnabled
@@ -74,14 +74,6 @@ data object ConversationDetailAutoExpandLastMessageEnabled : FeatureFlagDefiniti
defaultValue = false
)
data object MessageDetailEnabled : FeatureFlagDefinition(
key = "MailAndroidV7MessageDetail",
name = "View Single Message Detail",
category = FeatureFlagCategory.Details,
description = "Allow to view a single message in the detail screen",
defaultValue = true
)
data object SwipeAutoAdvanceEnabled : FeatureFlagDefinition(
key = "MailAndroidV7SwipeAutoAdvance",
name = "Swipe and AutoAdvance View",