For #10969: Fix and clarify logic for checking showing PWA dialog.
parent
aa487bf4c3
commit
9ec6ebc92a
|
@ -74,6 +74,6 @@ object Performance {
|
|||
* Disables the first time PWA popup.
|
||||
*/
|
||||
private fun disableFirstTimePWAPopup(context: Context) {
|
||||
Settings.getInstance(context).shouldShowFirstTimePwaFragment = false
|
||||
Settings.getInstance(context).userKnowsAboutPWAs = true
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ class FirstTimePwaObserver(
|
|||
val directions = BrowserFragmentDirections.actionBrowserFragmentToFirstTimePwaFragment()
|
||||
navController.nav(R.id.browserFragment, directions)
|
||||
|
||||
settings.shouldShowFirstTimePwaFragment = false
|
||||
settings.userKnowsAboutPWAs = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -456,34 +456,25 @@ class Settings private constructor(
|
|||
default = false
|
||||
)
|
||||
|
||||
var shouldShowFirstTimePwaFragment: Boolean
|
||||
val shouldShowFirstTimePwaFragment: Boolean
|
||||
get() {
|
||||
val alreadyShownPwaOnboarding = preferences.getBoolean(
|
||||
appContext.getPreferenceKey(R.string.pref_key_show_first_time_pwa), false)
|
||||
|
||||
// ShortcutManager::pinnedShortcuts is only available on Oreo+
|
||||
if (!alreadyShownPwaOnboarding && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
if (!userKnowsAboutPWAs && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
val alreadyHavePWaInstalled =
|
||||
appContext.getSystemService(ShortcutManager::class.java)
|
||||
.pinnedShortcuts.size > 0
|
||||
|
||||
// Users don't need to be shown the PWA onboarding if they already have PWAs installed.
|
||||
preferences.edit()
|
||||
.putBoolean(
|
||||
appContext.getPreferenceKey(R.string.pref_key_show_first_time_pwa),
|
||||
alreadyHavePWaInstalled)
|
||||
.apply()
|
||||
|
||||
return !alreadyHavePWaInstalled
|
||||
// Users know about PWAs onboarding if they already have PWAs installed.
|
||||
userKnowsAboutPWAs = alreadyHavePWaInstalled
|
||||
}
|
||||
// Show dialog only if user does not know abut PWAs
|
||||
return !userKnowsAboutPWAs
|
||||
}
|
||||
|
||||
return !alreadyShownPwaOnboarding
|
||||
}
|
||||
set(value) {
|
||||
preferences.edit()
|
||||
.putBoolean(appContext.getPreferenceKey(R.string.pref_key_show_first_time_pwa), value)
|
||||
.apply()
|
||||
}
|
||||
var userKnowsAboutPWAs by booleanPreference(
|
||||
appContext.getPreferenceKey(R.string.pref_key_user_knows_about_pwa),
|
||||
default = false
|
||||
)
|
||||
|
||||
@VisibleForTesting(otherwise = PRIVATE)
|
||||
internal val trackingProtectionOnboardingCount by intPreference(
|
||||
|
|
|
@ -161,7 +161,8 @@
|
|||
<string name="default_top_sites_added" translatable="false">pref_key_pocket_top_site_added</string>
|
||||
<string name="pref_key_top_sites_size" translatable="false">pref_key_top_sites_size</string>
|
||||
|
||||
<string name="pref_key_show_first_time_pwa" translatable="false">pref_key_show_first_time_pwa</string>
|
||||
<!-- A value of `true` means the PWA dialog has been showed or user already has PWAs installed-->
|
||||
<string name="pref_key_user_knows_about_pwa" translatable="false">pref_key_user_knows_about_pwa</string>
|
||||
|
||||
<string name="pref_key_migrating_from_fenix_nightly_tip" translatable="false">pref_key_migrating_from_fenix_nightly_tip</string>
|
||||
<string name="pref_key_migrating_from_firefox_nightly_tip" translatable="false">pref_key_migrating_from_firefox_nightly_tip</string>
|
||||
|
|
Loading…
Reference in New Issue