validate input onion address, save, enable connect button
This commit is contained in:
		
							parent
							
								
									3da1cc5032
								
							
						
					
					
						commit
						6baa48596b
					
				|  | @ -4,9 +4,12 @@ import android.content.SharedPreferences; | |||
| import android.os.AsyncTask; | ||||
| import android.support.v7.app.AppCompatActivity; | ||||
| import android.os.Bundle; | ||||
| import android.text.Editable; | ||||
| import android.text.TextWatcher; | ||||
| import android.util.Log; | ||||
| import android.view.View; | ||||
| import android.widget.Button; | ||||
| import android.widget.EditText; | ||||
| import android.widget.ProgressBar; | ||||
| import android.widget.TextView; | ||||
| 
 | ||||
|  | @ -14,9 +17,12 @@ import goRicochetMobile.GoRicochetMobile; | |||
| 
 | ||||
| public class ConnectActivity extends AppCompatActivity { | ||||
| 
 | ||||
|     private static final int ONION_ADDRESS_LENGTH = 16; | ||||
|     public static final String PREFERNCE_FILE = "im.ricochet.PREFERENCE_FILE"; | ||||
|     private static final String TAG = "InitActivity"; | ||||
|     private static final String PRIVATE_KEY_KEY = "privateKey"; | ||||
|     private static final String CONNECT_TO_ADDRESS_KEY = "connectToAddress"; | ||||
|     private static final String RICOCHET_ADDRESS_PREFIX = "ricochet:"; | ||||
| 
 | ||||
|     Button regenButton; | ||||
|     Button connectButton; | ||||
|  | @ -25,8 +31,9 @@ public class ConnectActivity extends AppCompatActivity { | |||
|     TextView connectStatusText; | ||||
|     TextView regenIdentStatusText; | ||||
|     TextView idetityText; | ||||
|     EditText addressText; | ||||
| 
 | ||||
| 
 | ||||
|     SharedPreferences prefs; | ||||
| 
 | ||||
|     @Override | ||||
|     protected void onCreate(Bundle savedInstanceState) { | ||||
|  | @ -43,6 +50,9 @@ public class ConnectActivity extends AppCompatActivity { | |||
|         connectButton = (Button)findViewById(R.id.connectButton); | ||||
|         connectSpinner = (ProgressBar)findViewById(R.id.connectProgressBar); | ||||
|         regenIdentSpinner = (ProgressBar)findViewById(R.id.regenIdentProgressBar); | ||||
|         addressText = (EditText)findViewById(R.id.addressText); | ||||
| 
 | ||||
|         prefs = getSharedPreferences(PREFERNCE_FILE, MODE_PRIVATE); | ||||
| 
 | ||||
|         regenButton.setOnClickListener(new View.OnClickListener() { | ||||
|             public void onClick(View v) { | ||||
|  | @ -51,7 +61,21 @@ public class ConnectActivity extends AppCompatActivity { | |||
|             } | ||||
|         }); | ||||
| 
 | ||||
|         SharedPreferences prefs = getSharedPreferences(PREFERNCE_FILE, MODE_PRIVATE); | ||||
|         addressText.addTextChangedListener(new TextWatcher(){ | ||||
|             @Override | ||||
|             public void beforeTextChanged(CharSequence s, int start, int count, int after) { | ||||
|             } | ||||
| 
 | ||||
|             @Override | ||||
|             public void onTextChanged(CharSequence s, int start, int before, int count) { | ||||
|                 validateOnionAddress(); | ||||
|             } | ||||
| 
 | ||||
|             @Override | ||||
|             public void afterTextChanged(Editable s) { | ||||
|             } | ||||
|         }); | ||||
| 
 | ||||
|         String privateKey = prefs.getString(PRIVATE_KEY_KEY, ""); | ||||
|         Log.i(TAG, "Private key loaded:\n"+privateKey); | ||||
|         if (privateKey.equals("")) { | ||||
|  | @ -65,6 +89,10 @@ public class ConnectActivity extends AppCompatActivity { | |||
|             regenButton.setEnabled(true); | ||||
|         } | ||||
| 
 | ||||
|         String connectToAddress = prefs.getString(CONNECT_TO_ADDRESS_KEY, RICOCHET_ADDRESS_PREFIX); | ||||
|         addressText.setText(connectToAddress); | ||||
|         validateOnionAddress(); | ||||
| 
 | ||||
|         /*Log.i(TAG, "Ready!"); | ||||
|         connectStatusText.setText("Ready!"); | ||||
|         ProgressBar progressBar = (ProgressBar)findViewById(im.ricochet.androidod.R.id.progressBar); | ||||
|  | @ -87,6 +115,18 @@ public class ConnectActivity extends AppCompatActivity { | |||
|         idetityText.setText("ricochet:" + addr); | ||||
|     } | ||||
| 
 | ||||
|     private void validateOnionAddress() { | ||||
|         String address = addressText.getText().toString(); | ||||
|         if (address.startsWith(RICOCHET_ADDRESS_PREFIX) && address.length() == ONION_ADDRESS_LENGTH + RICOCHET_ADDRESS_PREFIX.length()) { | ||||
|             SharedPreferences.Editor prefsEditor = prefs.edit(); | ||||
|             prefsEditor.putString(CONNECT_TO_ADDRESS_KEY, address); | ||||
|             prefsEditor.commit(); | ||||
|             connectButton.setEnabled(true); | ||||
|         } else { | ||||
|             connectButton.setEnabled(false); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private class RegenIdentTask extends AsyncTask<Void, Void, String> { | ||||
|         @Override | ||||
|         protected void onPreExecute() { | ||||
|  | @ -104,7 +144,6 @@ public class ConnectActivity extends AppCompatActivity { | |||
|             try { | ||||
|                 privateKey = GoRicochetMobile.generatePrivateKey(); | ||||
| 
 | ||||
|                 SharedPreferences prefs = getSharedPreferences(PREFERNCE_FILE, MODE_PRIVATE); | ||||
|                 SharedPreferences.Editor prefsEditor = prefs.edit(); | ||||
|                 prefsEditor.putString(PRIVATE_KEY_KEY, privateKey); | ||||
|                 prefsEditor.commit(); | ||||
|  | @ -120,7 +159,7 @@ public class ConnectActivity extends AppCompatActivity { | |||
|             Log.i(TAG, "RegenIdentTask.onPostExecute(): " + privateKey); | ||||
|             regenIdentSpinner.setVisibility(View.INVISIBLE); | ||||
|             regenButton.setEnabled(true); | ||||
|             connectButton.setEnabled(true); | ||||
|             validateOnionAddress(); | ||||
|             if (privateKey == null) { | ||||
|                 regenIdentStatusText.setText("ERROR: unable to generate new identity"); | ||||
|             } else { | ||||
|  |  | |||
|  | @ -20,20 +20,22 @@ | |||
| 
 | ||||
|     <EditText | ||||
|         android:id="@+id/addressText" | ||||
|         android:layout_width="wrap_content" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:layout_width="241dp" | ||||
|         android:layout_height="42dp" | ||||
|         android:layout_marginEnd="8dp" | ||||
|         android:layout_marginLeft="8dp" | ||||
|         android:layout_marginRight="8dp" | ||||
|         android:layout_marginTop="8dp" | ||||
|         android:layout_marginStart="8dp" | ||||
|         android:layout_marginTop="9dp" | ||||
|         android:ems="10" | ||||
|         android:inputType="text" | ||||
|         android:minEms="26" | ||||
|         android:text="ricochet:" | ||||
|         app:layout_constraintHorizontal_bias="0.503" | ||||
|         app:layout_constraintHorizontal_bias="0.518" | ||||
|         app:layout_constraintLeft_toLeftOf="parent" | ||||
|         app:layout_constraintRight_toRightOf="parent" | ||||
|         app:layout_constraintTop_toBottomOf="@+id/textView" | ||||
|         android:layout_marginStart="8dp" | ||||
|         android:layout_marginEnd="8dp" /> | ||||
|         tools:layout_editor_absoluteX="50dp" /> | ||||
| 
 | ||||
|     <TextView | ||||
|         android:id="@+id/textView" | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue