From 9ec6ebc92aa6865ff5f82594ce4d5a06fcd4f739 Mon Sep 17 00:00:00 2001 From: mcarare Date: Thu, 28 May 2020 10:31:55 +0300 Subject: [PATCH] For #10969: Fix and clarify logic for checking showing PWA dialog. --- .../org/mozilla/fenix/perf/Performance.kt | 2 +- .../fenix/shortcut/FirstTimePwaObserver.kt | 2 +- .../java/org/mozilla/fenix/utils/Settings.kt | 31 +++++++------------ app/src/main/res/values/preference_keys.xml | 3 +- 4 files changed, 15 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/perf/Performance.kt b/app/src/main/java/org/mozilla/fenix/perf/Performance.kt index 56a8f7bc7..4b0a73b22 100644 --- a/app/src/main/java/org/mozilla/fenix/perf/Performance.kt +++ b/app/src/main/java/org/mozilla/fenix/perf/Performance.kt @@ -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 } } diff --git a/app/src/main/java/org/mozilla/fenix/shortcut/FirstTimePwaObserver.kt b/app/src/main/java/org/mozilla/fenix/shortcut/FirstTimePwaObserver.kt index d0fdb5c62..2c19810d7 100644 --- a/app/src/main/java/org/mozilla/fenix/shortcut/FirstTimePwaObserver.kt +++ b/app/src/main/java/org/mozilla/fenix/shortcut/FirstTimePwaObserver.kt @@ -27,7 +27,7 @@ class FirstTimePwaObserver( val directions = BrowserFragmentDirections.actionBrowserFragmentToFirstTimePwaFragment() navController.nav(R.id.browserFragment, directions) - settings.shouldShowFirstTimePwaFragment = false + settings.userKnowsAboutPWAs = true } } } 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 b80125c42..f63b874c0 100644 --- a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt +++ b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt @@ -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( diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml index 40ddb391d..36aeb3f6b 100644 --- a/app/src/main/res/values/preference_keys.xml +++ b/app/src/main/res/values/preference_keys.xml @@ -161,7 +161,8 @@ pref_key_pocket_top_site_added pref_key_top_sites_size - pref_key_show_first_time_pwa + + pref_key_user_knows_about_pwa pref_key_migrating_from_fenix_nightly_tip pref_key_migrating_from_firefox_nightly_tip