Commit 0d974fe2 authored by Christian Sadilek's avatar Christian Sadilek
Browse files

For #8808 #9139: Add-on should be able to configure how to open options page

parent a1ea94fe
Loading
Loading
Loading
Loading
+22 −5
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import mozilla.components.support.ktx.kotlinx.coroutines.flow.ifChanged
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.utils.Settings

/**
 * An activity to show the details of a installed add-on.
@@ -166,12 +167,28 @@ class InstalledAddonDetailsFragment : Fragment() {

    private fun bindSettings(view: View) {
        view.settings.apply {
            isVisible = !addon.installedState?.optionsPageUrl.isNullOrEmpty()
            val optionsPageUrl = addon.installedState?.optionsPageUrl
            isVisible = !optionsPageUrl.isNullOrEmpty()
            setOnClickListener {
                val directions =
                    InstalledAddonDetailsFragmentDirections.actionInstalledAddonFragmentToAddonInternalSettingsFragment(
                        addon
                    )
                val directions = if (addon.installedState?.openOptionsPageInTab == true) {
                    val components = it.context.components
                    val shouldCreatePrivateSession =
                        components.core.sessionManager.selectedSession?.private
                            ?: Settings.instance?.openLinksInAPrivateTab
                            ?: false

                    if (shouldCreatePrivateSession) {
                        components.tabsUseCases.addPrivateTab(optionsPageUrl as String)
                    } else {
                        components.tabsUseCases.addTab(optionsPageUrl as String)
                    }

                    InstalledAddonDetailsFragmentDirections
                        .actionGlobalBrowser(null, false)
                } else {
                    InstalledAddonDetailsFragmentDirections
                        .actionInstalledAddonFragmentToAddonInternalSettingsFragment(addon)
                }
                Navigation.findNavController(this).navigate(directions)
            }
        }