diff --git a/app/src/main/java/org/mozilla/fenix/components/PrivateShortcutCreateManager.kt b/app/src/main/java/org/mozilla/fenix/components/PrivateShortcutCreateManager.kt index d2e0316d6..3e5939e79 100644 --- a/app/src/main/java/org/mozilla/fenix/components/PrivateShortcutCreateManager.kt +++ b/app/src/main/java/org/mozilla/fenix/components/PrivateShortcutCreateManager.kt @@ -14,12 +14,26 @@ import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.R import org.mozilla.fenix.home.intent.StartSearchIntentProcessor import java.util.UUID +import android.content.pm.ShortcutManager +import android.os.Build +import android.os.Build.VERSION.SDK_INT /** - * Handles the creation of pinned shortcuts. + * Handles the creation and existence of pinned shortcuts. */ object PrivateShortcutCreateManager { + fun doesPrivateBrowsingPinnedShortcutExist(context: Context): Boolean { + return if (SDK_INT >= Build.VERSION_CODES.N_MR1) { + val pinnedShortcuts = context.getSystemService(ShortcutManager::class.java).pinnedShortcuts + pinnedShortcuts.any { + it.intent?.extras?.getString(HomeActivity.OPEN_TO_SEARCH) == + StartSearchIntentProcessor.PRIVATE_BROWSING_PINNED_SHORTCUT + } + } else + false + } + fun createPrivateShortcut(context: Context) { if (!ShortcutManagerCompat.isRequestPinShortcutSupported(context)) return diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index ffb13ba6d..a32bee99f 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -347,8 +347,10 @@ class HomeFragment : Fragment() { } } }, owner = this) + if (context.settings().showPrivateModeContextualFeatureRecommender && - browsingModeManager.mode.isPrivate) { + browsingModeManager.mode.isPrivate && + !PrivateShortcutCreateManager.doesPrivateBrowsingPinnedShortcutExist(context)) { recommendPrivateBrowsingShortcut() } } diff --git a/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt index 0a9a9d57f..85b7308bb 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt @@ -132,6 +132,10 @@ class SettingsFragment : PreferenceFragmentCompat(), AccountObserver { } } + findPreference(getPreferenceKey(R.string.pref_key_add_private_browsing_shortcut))?.apply { + isVisible = !PrivateShortcutCreateManager.doesPrivateBrowsingPinnedShortcutExist(context) + } + setupPreferences() updateAccountUIState(context!!, requireComponents.backgroundServices.accountManager.accountProfile())