Skip to content

Commit

Permalink
Fixes #358
Browse files Browse the repository at this point in the history
~ 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
  • Loading branch information
bitmold committed Jul 28, 2020
1 parent aa8a532 commit 76a52f7
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@

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;
Expand All @@ -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";

Expand All @@ -63,14 +66,18 @@ protected void onCreate(Bundle savedInstanceState) {

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);
Expand All @@ -91,10 +98,18 @@ protected void onCreate(Bundle savedInstanceState) {

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
Expand Down Expand Up @@ -130,12 +145,13 @@ protected void onActivityResult(int requestCode, int resultCode, @Nullable Inten
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();
Expand All @@ -157,7 +173,7 @@ private class HostTester extends AsyncTask<String, Void, Boolean> {
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
Expand All @@ -181,14 +197,14 @@ protected void onPostExecute(Boolean result) {
// 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());
Expand Down Expand Up @@ -224,8 +240,7 @@ private static boolean isHostReachable(String serverAddress, int serverTCPport,

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);
Expand All @@ -243,5 +258,7 @@ private static void cancelHostTestIfRunning() {
}
}


private static boolean noBridgesSet() {
return !Prefs.bridgesEnabled() || Prefs.getBridgesList().trim().equals("");
}
}
2 changes: 1 addition & 1 deletion app/src/main/res/layout/activity_custom_bridges.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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>

Expand Down
8 changes: 8 additions & 0 deletions app/src/main/res/layout/content_bridge_wizard.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
6 changes: 5 additions & 1 deletion app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -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>
Expand Down Expand Up @@ -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>
Expand Down

0 comments on commit 76a52f7

Please sign in to comment.