Commit 724e7b26 authored by clairehurst's avatar clairehurst 🌱 Committed by Pier Angelo Vendrame
Browse files

fixup! [android] Implement Android-native Connection Assist UI

parent 310b223f
Loading
Loading
Loading
Loading
+41 −0
Original line number Diff line number Diff line
package org.mozilla.fenix.tor

import android.app.Application
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import mozilla.components.browser.engine.gecko.GeckoEngine
import org.mozilla.fenix.ext.components

class QuickstartViewModel(
    application: Application,
) : AndroidViewModel(application) {

    private val torIntegrationAndroid =
        (getApplication<Application>().components.core.engine as GeckoEngine).getTorIntegrationController()

    /**
     * NOTE: Whilst the initial value for _quickstart is fetched from
     * TorIntegrationAndroid.quickstartGet (which is surfaced from TorConnect.quickstart), and we
     * pass on any changes in value up to TorConnect.quickstart (via quickstartSet()), we do not
     * listen for any changes to the TorConnect.quickstart value via "QuickstartChange" because we
     * do not expect anything outside of TorConnectViewModel to change its value, so we expect its
     * value to remain in sync with our local value.
     */
    init {
        torIntegrationAndroid.quickstartGet {
            _quickstart.value = it
        }
    }

    private val _quickstart = MutableLiveData<Boolean>()
    fun quickstart(): LiveData<Boolean> {
        return _quickstart
    }

    fun quickstartSet(value: Boolean) {
        torIntegrationAndroid.quickstartSet(value)
        _quickstart.value = value
    }

}
+6 −4
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.view.ViewGroup
import androidx.appcompat.content.res.AppCompatResources
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
@@ -38,6 +39,8 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler {
    private var _binding: FragmentTorConnectionAssistBinding? = null
    private val binding get() = _binding!!

    private val quickstartViewModel: QuickstartViewModel by activityViewModels()

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
@@ -78,10 +81,10 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler {
            setProgressBarCompat(progress)
        }

        viewModel.quickstartToggle().observe(
        quickstartViewModel.quickstart().observe(
            viewLifecycleOwner,
        ) {
            binding.quickstartSwitch.isChecked = it == true
            binding.quickstartSwitch.isChecked = it
        }

        viewModel.shouldOpenHome().observe(
@@ -185,9 +188,8 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler {
    private fun setQuickStart(screen: ConnectAssistUiState) {
        binding.quickstartSwitch.visibility =
            if (screen.quickstartSwitchVisible) View.VISIBLE else View.GONE
        binding.quickstartSwitch.isChecked = viewModel.quickstartToggle().value == true
        binding.quickstartSwitch.setOnCheckedChangeListener { _, isChecked ->
            viewModel.handleQuickstartChecked(isChecked)
            quickstartViewModel.quickstartSet(isChecked)
        }
    }

+0 −12
Original line number Diff line number Diff line
@@ -27,13 +27,6 @@ class TorConnectionAssistViewModel(
    private val _torConnectScreen = MutableStateFlow(ConnectAssistUiState.Splash)
    internal val torConnectScreen: StateFlow<ConnectAssistUiState> = _torConnectScreen

    private val _quickStartToggle = MutableLiveData<Boolean>() // don't initialize with quickstart off the bat
    fun quickstartToggle(): LiveData<Boolean?> {
        _quickStartToggle.value = _torController.quickstart // quickstart isn't ready until torSettings is ready
        return _quickStartToggle
    }


    private val _shouldOpenHome = MutableLiveData(false)
    fun shouldOpenHome(): LiveData<Boolean> {
        return _shouldOpenHome
@@ -66,11 +59,6 @@ class TorConnectionAssistViewModel(
        }
    }

    fun handleQuickstartChecked(checked: Boolean) {
        _torController.quickstart = checked
        _quickStartToggle.value = checked
    }

    fun handleButton1Pressed(
        screen: ConnectAssistUiState,
        lifecycleScope: LifecycleCoroutineScope?,