diff options
| author | cyberta <cyberta@riseup.net> | 2026-04-16 01:03:17 +0200 |
|---|---|---|
| committer | cyberta <cyberta@riseup.net> | 2026-04-20 17:59:46 +0000 |
| commit | 51d028d627460194099db2ba3cf6d378f21a5dcb (patch) | |
| tree | 0a83a6e5a5b035e92b04fed52cd8fe515646dce5 | |
| parent | ee8574c26ca306648cdebbfbfe9ce563e5a705fb (diff) | |
improve censorship circumvention settings switches. Ensure that automatic and manual selection are mutual exclusive
| -rw-r--r-- | app/src/main/java/se/leap/bitmaskclient/base/fragments/SettingsFragment.java | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/fragments/SettingsFragment.java b/app/src/main/java/se/leap/bitmaskclient/base/fragments/SettingsFragment.java index 2ac568e6..ad977348 100644 --- a/app/src/main/java/se/leap/bitmaskclient/base/fragments/SettingsFragment.java +++ b/app/src/main/java/se/leap/bitmaskclient/base/fragments/SettingsFragment.java @@ -16,8 +16,6 @@ import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getExcludedApps; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getPreferUDP; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getShowAlwaysOnDialog; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getUseBridges; -import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getUseSnowflake; -import static se.leap.bitmaskclient.base.utils.PreferenceHelper.hasSnowflakePrefs; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.preferUDP; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.resetSnowflakeSettings; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.setAllowExperimentalTransports; @@ -25,10 +23,10 @@ import static se.leap.bitmaskclient.base.utils.PreferenceHelper.setUseObfuscatio import static se.leap.bitmaskclient.base.utils.PreferenceHelper.setUsePortHopping; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.setUseTunnel; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.useBridges; +import static se.leap.bitmaskclient.base.utils.PreferenceHelper.useManualBridgeSettings; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.useManualDiscoverySettings; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.useObfuscationPinning; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.useSnowflake; -import static se.leap.bitmaskclient.base.utils.PreferenceHelper.useManualBridgeSettings; import static se.leap.bitmaskclient.base.utils.ViewHelper.setActionBarSubtitle; import android.app.AlertDialog; @@ -47,7 +45,6 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.appcompat.widget.AppCompatTextView; import androidx.appcompat.widget.SwitchCompat; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; @@ -69,6 +66,7 @@ import se.leap.bitmaskclient.firewall.FirewallManager; public class SettingsFragment extends Fragment implements SharedPreferences.OnSharedPreferenceChangeListener { + private static final String TAG = SettingsFragment.class.getSimpleName(); private FirewallManager firewallManager; private IconTextEntry tethering; private IconSwitchEntry firewall; @@ -101,7 +99,7 @@ public class SettingsFragment extends Fragment implements SharedPreferences.OnSh private void initAutomaticCircumventionEntry(View rootView) { IconSwitchEntry automaticCircumvention = rootView.findViewById(R.id.bridge_automatic_switch); - automaticCircumvention.setChecked(getUseBridges() && !useManualBridgeSettings()); + automaticCircumvention.setChecked(getUseBridges() && !useManualBridgeSettings() && !useManualDiscoverySettings()); automaticCircumvention.setOnCheckedChangeListener((buttonView, isChecked) -> { if (!buttonView.isPressed()) { return; @@ -136,14 +134,19 @@ public class SettingsFragment extends Fragment implements SharedPreferences.OnSh manualConfigRoot.setVisibility(ProviderObservable.getInstance().getCurrentProvider().supportsPluggableTransports() ? VISIBLE : GONE); IconTextEntry manualConfiguration = rootView.findViewById(R.id.bridge_manual_switch); SwitchCompat manualConfigurationSwitch = rootView.findViewById(R.id.bridge_manual_switch_control); - boolean useManualCircumventionSettings = useManualBridgeSettings() || useManualDiscoverySettings(); + boolean useManualCircumventionSettings = (getUseBridges() && useManualBridgeSettings()) || useManualDiscoverySettings(); manualConfigurationSwitch.setChecked(useManualCircumventionSettings); manualConfigurationSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> { if (!buttonView.isPressed()) { return; } - resetManualConfig(); - if (!useManualCircumventionSettings){ + if (isChecked) { + useBridges(true); + } else { + resetManualConfig(); + } + initAutomaticCircumventionEntry(rootView); + if (!useManualBridgeSettings() && !useManualDiscoverySettings()){ openManualConfigurationFragment(); } }); @@ -167,11 +170,6 @@ public class SettingsFragment extends Fragment implements SharedPreferences.OnSh EipCommand.startVPN(getContext(), false); Toast.makeText(getContext(), R.string.reconnecting, Toast.LENGTH_LONG).show(); } - View rootView = getView(); - if (rootView == null) { - return; - } - initAutomaticCircumventionEntry(rootView); } private void openManualConfigurationFragment() { |
