diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt
index 5c64120aa386..50e291ba6f66 100644
--- a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt
+++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt
@@ -37,6 +37,7 @@ import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.getRootView
import org.mozilla.fenix.ext.nav
+import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.lib.Do
import org.mozilla.fenix.settings.deletebrowsingdata.deleteAndQuit
@@ -159,6 +160,7 @@ class DefaultBrowserToolbarController(
}
}
ToolbarMenu.Item.AddToHomeScreen -> {
+ activity.settings().installPwaOpened = true
MainScope().launch {
with(activity.components.useCases.webAppUseCases) {
if (isInstallable()) {
@@ -267,6 +269,8 @@ class DefaultBrowserToolbarController(
deleteAndQuit(activity, scope, snackbar)
}
is ToolbarMenu.Item.ReaderMode -> {
+ activity.settings().readerModeOpened = true
+
val enabled = currentSession?.readerMode
?: activity.components.core.sessionManager.selectedSession?.readerMode
?: false
@@ -281,6 +285,8 @@ class DefaultBrowserToolbarController(
readerModeController.showControls()
}
ToolbarMenu.Item.OpenInApp -> {
+ activity.settings().openInAppOpened = true
+
val appLinksUseCases =
activity.components.useCases.appLinksUseCases
val getRedirect = appLinksUseCases.appLinkRedirect
diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt
index ca835874bc48..665d8a5db64b 100644
--- a/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt
+++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt
@@ -30,6 +30,7 @@ import org.mozilla.fenix.ReleaseChannel
import org.mozilla.fenix.browser.browsingmode.BrowsingMode
import org.mozilla.fenix.ext.asActivity
import org.mozilla.fenix.ext.components
+import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.theme.ThemeManager
import org.mozilla.fenix.utils.Settings
@@ -246,7 +247,9 @@ class DefaultToolbarMenu(
),
isHighlighted = {
val webAppUseCases = context.components.useCases.webAppUseCases
- webAppUseCases.isPinningSupported() && webAppUseCases.isInstallable()
+ webAppUseCases.isPinningSupported() &&
+ webAppUseCases.isInstallable() &&
+ !context.settings().installPwaOpened
}
) {
onItemTapped.invoke(ToolbarMenu.Item.AddToHomeScreen)
@@ -310,7 +313,7 @@ class DefaultToolbarMenu(
label = context.getString(R.string.browser_menu_read),
notificationTint = getColor(context, R.color.whats_new_notification_color)
),
- isHighlighted = { true }
+ isHighlighted = { !context.settings().readerModeOpened }
) { checked ->
onItemTapped.invoke(ToolbarMenu.Item.ReaderMode(checked))
}
@@ -331,7 +334,7 @@ class DefaultToolbarMenu(
label = context.getString(R.string.browser_menu_open_app_link),
notificationTint = getColor(context, R.color.whats_new_notification_color)
),
- isHighlighted = { true }
+ isHighlighted = { !context.settings().openInAppOpened }
) {
onItemTapped.invoke(ToolbarMenu.Item.OpenInApp)
}
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 16d22466594d..c6d7223587db 100644
--- a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
+++ b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt
@@ -133,6 +133,21 @@ class Settings private constructor(
default = ""
)
+ var readerModeOpened by booleanPreference(
+ appContext.getPreferenceKey(R.string.pref_key_reader_mode_opened),
+ default = false
+ )
+
+ var openInAppOpened by booleanPreference(
+ appContext.getPreferenceKey(R.string.pref_key_open_in_app_opened),
+ default = false
+ )
+
+ var installPwaOpened by booleanPreference(
+ appContext.getPreferenceKey(R.string.pref_key_install_pwa_opened),
+ default = false
+ )
+
val isCrashReportingEnabled: Boolean
get() = isCrashReportEnabledInBuild &&
preferences.getBoolean(
diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml
index 089b061b0721..1b622472f6d7 100644
--- a/app/src/main/res/values/preference_keys.xml
+++ b/app/src/main/res/values/preference_keys.xml
@@ -47,6 +47,9 @@
pref_key_experimentation
pref_key_showed_private_mode_cfr
pref_key_private_mode_opened
+ pref_key_reader_mode_opened
+ pref_key_open_in_app_opened
+ pref_key_install_pwa_opened
pref_key_telemetry