diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index 40ef78ec3..0daba1988 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -428,12 +428,16 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { if (FxNimbus.features.splashScreen.value().enabled) { val splashScreen = installSplashScreen() - var keepSplashOnScreen = true + var maxDurationReached = false val delay = FxNimbus.features.splashScreen.value().maximumDurationMs.toLong() - splashScreen.setKeepOnScreenCondition { keepSplashOnScreen } + splashScreen.setKeepOnScreenCondition { + val dataFetched = components.settings.utmParamsKnown && + components.settings.nimbusExperimentsFetched + !maxDurationReached && !dataFetched + } MainScope().launch { delay(timeMillis = delay) - keepSplashOnScreen = false + maxDurationReached = true } } } diff --git a/app/src/main/java/org/mozilla/fenix/experiments/NimbusSetup.kt b/app/src/main/java/org/mozilla/fenix/experiments/NimbusSetup.kt index db7d1c159..d7b24c15e 100644 --- a/app/src/main/java/org/mozilla/fenix/experiments/NimbusSetup.kt +++ b/app/src/main/java/org/mozilla/fenix/experiments/NimbusSetup.kt @@ -82,6 +82,9 @@ fun createNimbus(context: Context, urlString: String?): NimbusApi { onApplyCallback = { FxNimbus.invalidateCachedValues() } + onFetchedCallback = { + context.settings().nimbusExperimentsFetched = true + } }.build(appInfo) } 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 bb61c41dd..3bb2732b9 100644 --- a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt +++ b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt @@ -186,6 +186,11 @@ class Settings(private val appContext: Context) : PreferencesHolder { default = "", ) + var nimbusExperimentsFetched by booleanPreference( + appContext.getPreferenceKey(R.string.pref_key_nimbus_experiments_fetched), + default = false, + ) + var utmParamsKnown by booleanPreference( appContext.getPreferenceKey(R.string.pref_key_utm_params_known), default = false, diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml index 88abbc920..b5359a8f5 100644 --- a/app/src/main/res/values/preference_keys.xml +++ b/app/src/main/res/values/preference_keys.xml @@ -217,6 +217,7 @@ pref_key_adjust_adgroup pref_key_adjust_creative + pref_key_nimbus_experiments_fetched pref_key_utm_params_known pref_key_utm_source pref_key_utm_medium