[orbot/master] Don't allow refresh button to trigger while request ongoing.

commit f94931ee7c7df3878dd8b54969d9a3e19852c4d4 Author: Benjamin Erhart <berhart@netzarchitekten.com> Date: Wed Apr 22 12:47:34 2020 +0200 Don't allow refresh button to trigger while request ongoing. --- .../android/ui/onboarding/MoatActivity.java | 49 ++++++++++++---------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/org/torproject/android/ui/onboarding/MoatActivity.java b/app/src/main/java/org/torproject/android/ui/onboarding/MoatActivity.java index 30275609..12ed6e3e 100644 --- a/app/src/main/java/org/torproject/android/ui/onboarding/MoatActivity.java +++ b/app/src/main/java/org/torproject/android/ui/onboarding/MoatActivity.java @@ -74,7 +74,7 @@ public class MoatActivity extends AppCompatActivity implements View.OnClickListe private boolean mSuccess; - private String mTorStatus; + private boolean mRequestInProgress = true; private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { @Override @@ -140,8 +140,7 @@ public class MoatActivity extends AppCompatActivity implements View.OnClickListe @Override public boolean onPrepareOptionsMenu(Menu menu) { - menu.findItem(R.id.menu_refresh) - .setEnabled(TorServiceConstants.STATUS_ON.equals(mTorStatus)); + menu.findItem(R.id.menu_refresh).setEnabled(!mRequestInProgress); return super.onPrepareOptionsMenu(menu); } @@ -205,10 +204,7 @@ public class MoatActivity extends AppCompatActivity implements View.OnClickListe protected void onPause() { super.onPause(); - if (mSuccess) { - setResult(RESULT_OK); - } - else { + if (!mSuccess) { Prefs.setBridgesList(mOriginalBridges); Prefs.putBridgesEnabled(mOriginalBridgeStatus); } @@ -222,24 +218,23 @@ public class MoatActivity extends AppCompatActivity implements View.OnClickListe } private void fetchCaptcha() { - mProgressBar.setVisibility(View.VISIBLE); - mIvCaptcha.setVisibility(View.GONE); - mBtRequest.setEnabled(false); - JsonObjectRequest request = buildRequest("fetch", "\"type\": \"client-transports\", \"supported\": [\"obfs4\"]", new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { + mRequestInProgress = false; + invalidateOptionsMenu(); + mProgressBar.setVisibility(View.GONE); + try { JSONObject data = response.getJSONArray("data").getJSONObject(0); mChallenge = data.getString("challenge"); byte[] image = Base64.decode(data.getString("image"), Base64.DEFAULT); mIvCaptcha.setImageBitmap(BitmapFactory.decodeByteArray(image, 0, image.length)); - - mProgressBar.setVisibility(View.GONE); mIvCaptcha.setVisibility(View.VISIBLE); + mEtSolution.setText(null); mBtRequest.setEnabled(true); } catch (JSONException e) { @@ -247,24 +242,32 @@ public class MoatActivity extends AppCompatActivity implements View.OnClickListe displayError(e, response); } + } }); if (request != null) { + mRequestInProgress = true; + invalidateOptionsMenu(); + mProgressBar.setVisibility(View.VISIBLE); + mIvCaptcha.setVisibility(View.GONE); + mBtRequest.setEnabled(false); + mQueue.add(request); } } private void requestBridges(String solution) { - mProgressBar.setVisibility(View.VISIBLE); - mBtRequest.setEnabled(false); - JsonObjectRequest request = buildRequest("check", "\"id\": \"2\", \"type\": \"moat-solution\", \"transport\": \"obfs4\", \"challenge\": \"" + mChallenge + "\", \"solution\": \"" + solution + "\", \"qrcode\": \"false\"", new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { + mRequestInProgress = false; + invalidateOptionsMenu(); + mProgressBar.setVisibility(View.GONE); + try { JSONArray bridges = response.getJSONArray("data").getJSONObject(0).getJSONArray("bridges"); @@ -279,11 +282,9 @@ public class MoatActivity extends AppCompatActivity implements View.OnClickListe Prefs.setBridgesList(sb.toString()); Prefs.putBridgesEnabled(true); - mProgressBar.setVisibility(View.GONE); - mSuccess = true; - - MoatActivity.this.finish(); + setResult(RESULT_OK); + finish(); } catch (JSONException e) { Log.d(MoatActivity.class.getSimpleName(), "Error decoding answer: " + response.toString()); @@ -294,6 +295,11 @@ public class MoatActivity extends AppCompatActivity implements View.OnClickListe }); if (request != null) { + mRequestInProgress = true; + invalidateOptionsMenu(); + mProgressBar.setVisibility(View.VISIBLE); + mBtRequest.setEnabled(false); + mQueue.add(request); } } @@ -343,9 +349,6 @@ public class MoatActivity extends AppCompatActivity implements View.OnClickListe private void setUp(String host, int port, String status) { Log.d(MoatActivity.class.getSimpleName(), "Tor status=" + status); - mTorStatus = status; - invalidateOptionsMenu(); - switch (status) { case TorServiceConstants.STATUS_OFF: // We need the Meek bridge.
participants (1)
-
n8fr8@torproject.org