[orbot/master] Fixes #358

commit 76a52f7f88c0e9d1a35ba96f108263aee28b1aea Author: bim <dsnake@protonmail.com> Date: Sun Jul 19 15:12:07 2020 -0400 Fixes #358 ~ BridgeWizard bridge options are selected correctly when the wizard is opened/closed. ~ Custom Bridges option is behind a button now that is only visible when the radio button is set ~ Some String updates to make it clear a given connection test is for bridges or not --- .../ui/onboarding/BridgeWizardActivity.java | 45 +++++++++++++++------- .../main/res/layout/activity_custom_bridges.xml | 2 +- app/src/main/res/layout/content_bridge_wizard.xml | 8 ++++ app/src/main/res/values/strings.xml | 6 ++- 4 files changed, 45 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/org/torproject/android/ui/onboarding/BridgeWizardActivity.java b/app/src/main/java/org/torproject/android/ui/onboarding/BridgeWizardActivity.java index 27f24164..f641c81d 100644 --- a/app/src/main/java/org/torproject/android/ui/onboarding/BridgeWizardActivity.java +++ b/app/src/main/java/org/torproject/android/ui/onboarding/BridgeWizardActivity.java @@ -28,7 +28,8 @@ import java.net.SocketAddress; public class BridgeWizardActivity extends AppCompatActivity { - private static int MOAT_REQUEST_CODE = 666; + private static final int MOAT_REQUEST_CODE = 666; + private static final int CUSTOM_BRIDGES_REQUEST_CODE = 1312; private static TextView mTvStatus; private static HostTester runningHostTest; @@ -38,6 +39,8 @@ public class BridgeWizardActivity extends AppCompatActivity { private RadioButton mBtMeek; private RadioButton mBtCustom; + private View mBtnConfgiureCustomBridges; + private static final String BUNDLE_KEY_TV_STATUS_VISIBILITY = "visibility"; private static final String BUNDLE_KEY_TV_STATUS_TEXT = "text"; @@ -63,14 +66,18 @@ public class BridgeWizardActivity extends AppCompatActivity { setTitle(getString(R.string.bridges)); - findViewById(R.id.btnMoat).setOnClickListener(v -> startActivityForResult(new Intent(BridgeWizardActivity.this, MoatActivity.class), - MOAT_REQUEST_CODE)); + findViewById(R.id.btnMoat).setOnClickListener(v -> { + cancelHostTestIfRunning(); + startActivityForResult(new Intent(BridgeWizardActivity.this, MoatActivity.class), MOAT_REQUEST_CODE); + }); mBtDirect = findViewById(R.id.btnBridgesDirect); - mBtDirect.setOnClickListener(v -> { + mBtDirect.setOnCheckedChangeListener((buttonView, isChecked) -> { + if (!isChecked) return; Prefs.setBridgesList(""); Prefs.putBridgesEnabled(false); testBridgeConnection(); + }); mBtObfs4 = findViewById(R.id.btnBridgesObfs4); @@ -91,10 +98,18 @@ public class BridgeWizardActivity extends AppCompatActivity { mBtCustom = findViewById(R.id.btnCustomBridges); mBtCustom.setOnCheckedChangeListener((buttonView, isChecked) -> { - if (isChecked) return; - cancelHostTestIfRunning(); - startActivity(new Intent(BridgeWizardActivity.this, CustomBridgesActivity.class)); + if (isChecked) { + cancelHostTestIfRunning(); + mTvStatus.setVisibility(View.GONE); + mBtnConfgiureCustomBridges.setVisibility(View.VISIBLE); + } else { + mBtnConfgiureCustomBridges.setVisibility(View.GONE); + } }); + + mBtnConfgiureCustomBridges = findViewById(R.id.btnConfigureCustomBridges); + mBtnConfgiureCustomBridges.setOnClickListener(v -> + startActivityForResult(new Intent(BridgeWizardActivity.this, CustomBridgesActivity.class), CUSTOM_BRIDGES_REQUEST_CODE)); } @Override @@ -130,12 +145,13 @@ public class BridgeWizardActivity extends AppCompatActivity { else { evaluateBridgeListState(); } + } else if (requestCode == CUSTOM_BRIDGES_REQUEST_CODE) { + if (noBridgesSet()) mBtDirect.setChecked(true); } else { super.onActivityResult(requestCode, resultCode, data); } } - private void testBridgeConnection() { cancelHostTestIfRunning(); HostTester hostTester = new HostTester(); @@ -157,7 +173,7 @@ public class BridgeWizardActivity extends AppCompatActivity { protected void onPreExecute() { // Pre Code mTvStatus.setVisibility(View.VISIBLE); - mTvStatus.setText(R.string.testing_bridges); + mTvStatus.setText(mBtDirect.isChecked() ? R.string.testing_tor_direct : R.string.testing_bridges); } @Override @@ -181,14 +197,14 @@ public class BridgeWizardActivity extends AppCompatActivity { // Post Code runningHostTest = null; if (result) { - mTvStatus.setText(R.string.testing_bridges_success); + int stringRes = mBtDirect.isChecked() ? R.string.testing_tor_direct_success : R.string.testing_bridges_success; + mTvStatus.setText(stringRes); } else { mTvStatus.setText(R.string.testing_bridges_fail); } } } - @Override public void onSaveInstanceState(Bundle savedInstanceState) { savedInstanceState.putInt(BUNDLE_KEY_TV_STATUS_VISIBILITY, mTvStatus.getVisibility()); @@ -224,8 +240,7 @@ public class BridgeWizardActivity extends AppCompatActivity { private void evaluateBridgeListState() { Log.d(getClass().getSimpleName(), String.format("bridgesEnabled=%b, bridgesList=%s", Prefs.bridgesEnabled(), Prefs.getBridgesList())); - - if (!Prefs.bridgesEnabled()) { + if (noBridgesSet()) { mBtDirect.setChecked(true); } else if (Prefs.getBridgesList().equals("meek")) { mBtMeek.setChecked(true); @@ -243,5 +258,7 @@ public class BridgeWizardActivity extends AppCompatActivity { } } - + private static boolean noBridgesSet() { + return !Prefs.bridgesEnabled() || Prefs.getBridgesList().trim().equals(""); + } } diff --git a/app/src/main/res/layout/activity_custom_bridges.xml b/app/src/main/res/layout/activity_custom_bridges.xml index 8a7b2998..add6a6fc 100644 --- a/app/src/main/res/layout/activity_custom_bridges.xml +++ b/app/src/main/res/layout/activity_custom_bridges.xml @@ -91,7 +91,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="12dp" - android:text="@string/get_bridges_email" /> + android:text="@string/get_bridges_email_request" /> </LinearLayout> diff --git a/app/src/main/res/layout/content_bridge_wizard.xml b/app/src/main/res/layout/content_bridge_wizard.xml index 5c3d990e..0b75ffa4 100644 --- a/app/src/main/res/layout/content_bridge_wizard.xml +++ b/app/src/main/res/layout/content_bridge_wizard.xml @@ -67,6 +67,14 @@ </RadioGroup> + <Button + android:id="@+id/btnConfigureCustomBridges" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_margin="12dp" + android:text="@string/configure_custom_bridges" + android:visibility="gone" /> + <TextView android:id="@+id/lbl_bridge_test_status" android:layout_width="match_parent" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 308174e7..bbf55492 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -172,6 +172,7 @@ <string name="bridge_mode">Request New Bridge</string> <string name="get_bridges_email">Email</string> + <string name="get_bridges_email_request">Request Bridges via Email</string> <string name="get_bridges_web">Web</string> <string name="activate">Activate</string> @@ -242,7 +243,9 @@ <string name="pref_disable_ipv4_summary">Tells exits not to connect to IPv4 addresses</string> <string name="app_shortcuts">Tor-Enabled Apps</string> <string name="testing_bridges">Testing bridge connection to Tor....</string> + <string name="testing_tor_direct">Testing connection to Tor...</string> <string name="testing_bridges_success">Success. Bridge configuration is good!</string> + <string name="testing_tor_direct_success">Success. Tor connection is good!</string> <string name="testing_bridges_fail">FAILED. Try another option</string> <string name="bridge_direct_connect">Connect directly to Tor (Best)</string> <string name="bridge_community">Connect through community servers</string> @@ -270,7 +273,8 @@ <!-- BridgeWizardActivity --> <string name="request_bridges_from_torproject">Request Bridges from torproject.org</string> <string name="custom_bridges">Custom Bridges</string> - + <string name="configure_custom_bridges">Configure Custom Bridges</string> + <!-- CustomBridgesActivity --> <string name="use_custom_bridges">Use Custom Bridges</string> <string name="in_a_browser">In a browser, visit %s and tap "Get Bridges" > "Just Give Me Bridges!"</string>
participants (1)
-
n8fr8@torproject.org