Dan Ballard pushed to branch firefox-android-115.2.1-13.5-1 at The Tor Project / Applications / firefox-android
Commits: 3e6fa4e6 by clairehurst at 2024-05-07T17:54:07-06:00 fixup! Implement Android-native Connection Assist UI
- - - - -
7 changed files:
- fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt - + fenix/app/src/main/java/org/mozilla/fenix/tor/QuickStartPreference.kt - fenix/app/src/main/java/org/mozilla/fenix/tor/TorConnectionAssistFragment.kt - fenix/app/src/main/java/org/mozilla/fenix/tor/TorConnectionAssistViewModel.kt - + fenix/app/src/main/res/layout/preference_quick_start.xml - fenix/app/src/main/res/values/preference_keys.xml - fenix/app/src/main/res/xml/preferences.xml
Changes:
===================================== fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt ===================================== @@ -61,6 +61,7 @@ import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.nimbus.FxNimbus import org.mozilla.fenix.perf.ProfilerViewModel import org.mozilla.fenix.settings.account.AccountUiView +import org.mozilla.fenix.tor.QuickStartPreference import org.mozilla.fenix.tor.TorBridgeTransportConfig import org.mozilla.fenix.tor.TorEvents import org.mozilla.fenix.utils.Settings @@ -729,6 +730,14 @@ class SettingsFragment : PreferenceFragmentCompat() { } }
+ requirePreference<QuickStartPreference>(R.string.pref_key_quick_start).apply { + setOnPreferenceClickListener { + context.components.torController.quickstart = !context.components.torController.quickstart + updateSwitch() + true + } + } + requirePreference<Preference>(R.string.pref_key_use_new_bootstrap).apply { setOnPreferenceClickListener { val directions =
===================================== fenix/app/src/main/java/org/mozilla/fenix/tor/QuickStartPreference.kt ===================================== @@ -0,0 +1,32 @@ +package org.mozilla.fenix.tor + +import android.content.Context +import android.util.AttributeSet +import androidx.preference.PreferenceViewHolder +import androidx.preference.SwitchPreference +import com.google.android.material.switchmaterial.SwitchMaterial +import org.mozilla.fenix.R +import org.mozilla.fenix.ext.components + +class QuickStartPreference @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, +) : SwitchPreference(context, attrs) { + + private var switchView: SwitchMaterial? = null + + init { + widgetLayoutResource = R.layout.preference_quick_start + } + + override fun onBindViewHolder(holder: PreferenceViewHolder) { + super.onBindViewHolder(holder) + switchView = holder.findViewById(R.id.switch_widget) as SwitchMaterial + + updateSwitch() + } + + fun updateSwitch() { + switchView?.isChecked = context.components.torController.quickstart + } +}
===================================== fenix/app/src/main/java/org/mozilla/fenix/tor/TorConnectionAssistFragment.kt ===================================== @@ -27,6 +27,7 @@ import kotlinx.coroutines.launch import mozilla.components.support.base.feature.UserInteractionHandler import org.mozilla.fenix.R import org.mozilla.fenix.databinding.FragmentTorConnectionAssistBinding +import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.hideToolbar
class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { @@ -74,11 +75,6 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { } }
- viewModel.quickstartToggle().observe( - viewLifecycleOwner, - ) { - binding.quickstartSwitch.isChecked = it == true - } }
override fun onDestroyView() { @@ -140,7 +136,7 @@ class TorConnectionAssistFragment : Fragment(), UserInteractionHandler { titleDescription.text = getString(screen.titleDescriptionTextStringResource) } quickstartSwitch.visibility = if (screen.quickstartSwitchVisible) View.VISIBLE else View.GONE - quickstartSwitch.isChecked = viewModel.quickstartToggle().value == true + quickstartSwitch.isChecked = requireContext().components.torController.quickstart quickstartSwitch.setOnCheckedChangeListener { _, isChecked -> viewModel.handleQuickstartChecked(isChecked) }
===================================== fenix/app/src/main/java/org/mozilla/fenix/tor/TorConnectionAssistViewModel.kt ===================================== @@ -31,12 +31,6 @@ class TorConnectionAssistViewModel( return _progress }
- 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 - } - init { Log.d(TAG, "initiating TorConnectionAssistViewModel") _torController.registerTorListener(this) @@ -55,7 +49,6 @@ class TorConnectionAssistViewModel(
fun handleQuickstartChecked(checked: Boolean) { _torController.quickstart = checked - _quickStartToggle.value = checked }
fun handleButton1Pressed(
===================================== fenix/app/src/main/res/layout/preference_quick_start.xml ===================================== @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- 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/. --> + +<com.google.android.material.switchmaterial.SwitchMaterial xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/switch_widget" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:clickable="false" + android:focusable="false" + android:gravity="center_vertical" + android:orientation="vertical" />
===================================== fenix/app/src/main/res/values/preference_keys.xml ===================================== @@ -16,6 +16,7 @@ <string name="pref_key_accessibility_font_scale" translatable="false">pref_key_accessibility_font_scale</string> <string name="pref_key_privacy" translatable="false">pref_key_privacy</string> <string name="pref_key_connection" translatable="false">pref_key_connection</string> + <string name="pref_key_quick_start" translatable="false">pref_key_quick_start</string> <string name="pref_key_accessibility_force_enable_zoom" translatable="false">pref_key_accessibility_force_enable_zoom</string> <string name="pref_key_advanced" translatable="false">pref_key_advanced</string> <string name="pref_key_language" translatable="false">pref_key_language</string>
===================================== fenix/app/src/main/res/xml/preferences.xml ===================================== @@ -170,6 +170,12 @@ android:title="@string/preferences_tor_network_settings_bridge_config" android:summary="@string/preferences_tor_network_settings_bridge_config_description" />
+ <org.mozilla.fenix.tor.QuickStartPreference + android:key="@string/pref_key_quick_start" + android:summary="@string/connection_assist_always_connect_automatically_toggle_description" + android:title="@string/tor_bootstrap_quick_start_label" + app:iconSpaceReserved="false" /> + <Preference android:key="@string/pref_key_use_new_bootstrap" app:iconSpaceReserved="false"
View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/3e6f...