From 4d8dfd790b3c8fd2f6d0caa801fcd9d0e48e79e7 Mon Sep 17 00:00:00 2001 From: Stefanija Boshkovska Date: Thu, 19 Mar 2026 17:13:44 +0100 Subject: [PATCH] Add a feature flag for the Unlimited upsell placement ET-5952 (cherry picked from commit a3ba615759dd48ac6ef64c64f46a42dd73f98c96) --- .../mailfeatureflags/di/FeatureFlagsModule.kt | 13 +++++++++++++ .../domain/annotation/FeatureFlagAnnotations.kt | 4 ++++ .../domain/model/FeatureFlagDefinitionItems.kt | 8 ++++++++ 3 files changed, 25 insertions(+) diff --git a/mail-featureflags/dagger/src/main/kotlin/ch/protonmail/android/mailfeatureflags/di/FeatureFlagsModule.kt b/mail-featureflags/dagger/src/main/kotlin/ch/protonmail/android/mailfeatureflags/di/FeatureFlagsModule.kt index a40c3c826f..b51dbd3e8c 100644 --- a/mail-featureflags/dagger/src/main/kotlin/ch/protonmail/android/mailfeatureflags/di/FeatureFlagsModule.kt +++ b/mail-featureflags/dagger/src/main/kotlin/ch/protonmail/android/mailfeatureflags/di/FeatureFlagsModule.kt @@ -39,6 +39,7 @@ import ch.protonmail.android.mailfeatureflags.domain.annotation.IsRestrictMessag import ch.protonmail.android.mailfeatureflags.domain.annotation.IsShowRatingBoosterEnabled import ch.protonmail.android.mailfeatureflags.domain.annotation.IsSpringOffer2026Enabled import ch.protonmail.android.mailfeatureflags.domain.annotation.IsSpringOffer2026Wave2Enabled +import ch.protonmail.android.mailfeatureflags.domain.annotation.IsUnlimitedPlanPlacementExperimentEnabled import ch.protonmail.android.mailfeatureflags.domain.annotation.IsUpsellEnabled import ch.protonmail.android.mailfeatureflags.domain.model.BgProcessingRelaxedBatteryConstraint import ch.protonmail.android.mailfeatureflags.domain.model.ComposerAutoCollapseQuotedText @@ -56,6 +57,7 @@ import ch.protonmail.android.mailfeatureflags.domain.model.RestrictMessageWebVie import ch.protonmail.android.mailfeatureflags.domain.model.ShowRatingBoosterEnabled import ch.protonmail.android.mailfeatureflags.domain.model.SpringOffer2026Enabled import ch.protonmail.android.mailfeatureflags.domain.model.SpringOffer2026Wave2Enabled +import ch.protonmail.android.mailfeatureflags.domain.model.UnlimitedPlanPlacementExperimentEnabled import ch.protonmail.android.mailfeatureflags.domain.model.UpsellingEnabled import dagger.Module import dagger.Provides @@ -242,4 +244,15 @@ object FeatureFlagsModule { @Singleton fun provideBgProcessingNewConstraintDef(): FeatureFlagDefinition = BgProcessingRelaxedBatteryConstraint + + @Provides + @Singleton + @IsUnlimitedPlanPlacementExperimentEnabled + fun provideUnlimitedPlanPlacementExperiment(factory: BooleanFeatureFlagFactory) = + factory.create(key = UnlimitedPlanPlacementExperimentEnabled.key, false) + + @Provides + @IntoSet + @Singleton + fun provideUnlimitedPlanPlacementEnabledDef(): FeatureFlagDefinition = UnlimitedPlanPlacementExperimentEnabled } diff --git a/mail-featureflags/domain/src/main/kotlin/ch/protonmail/android/mailfeatureflags/domain/annotation/FeatureFlagAnnotations.kt b/mail-featureflags/domain/src/main/kotlin/ch/protonmail/android/mailfeatureflags/domain/annotation/FeatureFlagAnnotations.kt index 5c9f755431..a450bd87fe 100644 --- a/mail-featureflags/domain/src/main/kotlin/ch/protonmail/android/mailfeatureflags/domain/annotation/FeatureFlagAnnotations.kt +++ b/mail-featureflags/domain/src/main/kotlin/ch/protonmail/android/mailfeatureflags/domain/annotation/FeatureFlagAnnotations.kt @@ -83,3 +83,7 @@ annotation class IsPushProcessingWithoutWorkerEnabled @Qualifier @Retention(AnnotationRetention.BINARY) annotation class IsBgProcessingRelaxedBatteryConstraintEnabled + +@Qualifier +@Retention(AnnotationRetention.BINARY) +annotation class IsUnlimitedPlanPlacementExperimentEnabled diff --git a/mail-featureflags/domain/src/main/kotlin/ch/protonmail/android/mailfeatureflags/domain/model/FeatureFlagDefinitionItems.kt b/mail-featureflags/domain/src/main/kotlin/ch/protonmail/android/mailfeatureflags/domain/model/FeatureFlagDefinitionItems.kt index 6636672e25..bf0071c807 100644 --- a/mail-featureflags/domain/src/main/kotlin/ch/protonmail/android/mailfeatureflags/domain/model/FeatureFlagDefinitionItems.kt +++ b/mail-featureflags/domain/src/main/kotlin/ch/protonmail/android/mailfeatureflags/domain/model/FeatureFlagDefinitionItems.kt @@ -145,3 +145,11 @@ data object BgProcessingRelaxedBatteryConstraint : FeatureFlagDefinition( description = "When enabled, the periodic background execution worker does not require the battery to be not low.", defaultValue = false ) + +data object UnlimitedPlanPlacementExperimentEnabled : FeatureFlagDefinition( + key = "MailAndroidV7UnlimitedPlanPlacementExperiment", + name = "Enable Unlimited Plan placement experiment", + category = FeatureFlagCategory.Upselling, + description = "Enables Unlimited Plan placement experiment.", + defaultValue = false +)