From 849d92203860f36306c3143bde6e7735c43392f2 Mon Sep 17 00:00:00 2001 From: Mugurell Date: Wed, 25 May 2022 18:32:25 +0300 Subject: [PATCH] For #25352 - Add a new FML feature to gate Pocket sponsored stories --- .experimenter.yaml | 8 ++++++++ app/src/main/java/org/mozilla/fenix/HomeActivity.kt | 2 +- .../main/java/org/mozilla/fenix/home/HomeFragment.kt | 2 +- .../main/java/org/mozilla/fenix/utils/Settings.kt | 9 +++++++++ app/src/main/res/values/preference_keys.xml | 1 + nimbus.fml.yaml | 12 ++++++++++++ 6 files changed, 32 insertions(+), 2 deletions(-) diff --git a/.experimenter.yaml b/.experimenter.yaml index e8d0a792f..9b3a55793 100644 --- a/.experimenter.yaml +++ b/.experimenter.yaml @@ -55,6 +55,14 @@ nimbus-validation: settings-title: type: string description: The title of displayed in the Settings screen and app menu. +pocket-sponsored-stories: + description: A feature showing sponsored stories in between the other Pocket recommended stories on homescreen. + hasExposure: true + exposureDescription: "" + variables: + enabled: + type: boolean + description: "If true, the Pocket stories shown on homescreen should contain sponsored stories also." search-term-groups: description: A feature allowing the grouping of URLs around the search term that it came from. hasExposure: true diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index 2f20bd9d3..af7319323 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -295,7 +295,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { if (settings().showPocketRecommendationsFeature) { components.core.pocketStoriesService.startPeriodicStoriesRefresh() } - if (FeatureFlags.isPocketSponsoredStoriesFeatureEnabled(this@HomeActivity)) { + if (settings().showPocketSponsoredStories) { components.core.pocketStoriesService.startPeriodicSponsoredStoriesRefresh() } } diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index e6f29481e..73ae07935 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -229,7 +229,7 @@ class HomeFragment : Fragment() { components.appStore.dispatch(AppAction.PocketStoriesCategoriesChange(categories)) - if (FeatureFlags.isPocketSponsoredStoriesFeatureEnabled(requireContext())) { + if (requireContext().settings().showPocketSponsoredStories) { components.appStore.dispatch( AppAction.PocketSponsoredStoriesChange( components.core.pocketStoriesService.getSponsoredStories() diff --git a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt index d22aa1f5e..96e6924a0 100644 --- a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt +++ b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt @@ -1275,6 +1275,15 @@ class Settings(private val appContext: Context) : PreferencesHolder { default = { homescreenSections[HomeScreenSection.POCKET] == true }, ) + /** + * Indicates if the Pocket recommendations homescreen section should also show sponsored stories. + */ + val showPocketSponsoredStories by lazyFeatureFlagPreference( + key = appContext.getPreferenceKey(R.string.pref_key_pocket_sponsored_stories), + default = { FxNimbus.features.pocketSponsoredStories.value(appContext).enabled }, + featureFlag = FeatureFlags.isPocketSponsoredStoriesFeatureEnabled(appContext) + ) + /** * Get the profile id to use in the sponsored stories communications with the Pocket endpoint. */ diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml index fae4725c5..1ad194997 100644 --- a/app/src/main/res/values/preference_keys.xml +++ b/app/src/main/res/values/preference_keys.xml @@ -281,6 +281,7 @@ pref_key_pocket_homescreen_recommendations + pref_key_pocket_sponsored_stories pref_key_pocket_sponsored_stories_profile diff --git a/nimbus.fml.yaml b/nimbus.fml.yaml index af300128a..6f6e48399 100644 --- a/nimbus.fml.yaml +++ b/nimbus.fml.yaml @@ -190,6 +190,18 @@ features: value: enabled: false + pocket-sponsored-stories: + description: A feature showing sponsored stories in between the other Pocket recommended stories on homescreen. + variables: + enabled: + description: If true, the Pocket stories shown on homescreen should contain sponsored stories also. + type: Boolean + default: false + defaults: + - channel: developer + value: + enabled: true + types: objects: MessageData: