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

n8fr8 at torproject.org n8fr8 at torproject.org
Tue Apr 28 21:05:02 UTC 2020


commit f94931ee7c7df3878dd8b54969d9a3e19852c4d4
Author: Benjamin Erhart <berhart at 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.





More information about the tor-commits mailing list