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