/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.mozilla.fenix.components import android.content.Context import androidx.preference.PreferenceManager import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import mozilla.components.feature.accounts.FirefoxAccountsAuthFeature import mozilla.components.feature.app.links.AppLinksInterceptor import mozilla.components.service.fxa.manager.FxaAccountManager import org.mozilla.fenix.R import org.mozilla.fenix.ext.getPreferenceKey import org.mozilla.fenix.settings.SupportUtils import org.mozilla.fenix.utils.Mockable /** * Component group which encapsulates foreground-friendly services. */ @Mockable class Services( private val context: Context, private val accountManager: FxaAccountManager ) { val accountsAuthFeature by lazy { FirefoxAccountsAuthFeature(accountManager, FxaServer.REDIRECT_URL) { context, authUrl -> CoroutineScope(Dispatchers.Main).launch { val intent = SupportUtils.createAuthCustomTabIntent(context, authUrl) context.startActivity(intent) } } } val appLinksInterceptor by lazy { AppLinksInterceptor( context, interceptLinkClicks = true, launchInApp = { PreferenceManager.getDefaultSharedPreferences(context).getBoolean( context.getPreferenceKey(R.string.pref_key_open_links_in_external_app), false) } ) } }