From c68a45f088253a15fca97be3086f6467a4f34145 Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Mon, 4 Sep 2017 20:37:16 -0700 Subject: [PATCH] finish ui for connect activity. display identity. 'new identity' functionality --- .../ricochet/androidod/ConnectActivity.java | 97 ++++++++++++++----- app/src/main/res/layout/activity_connect.xml | 14 ++- 2 files changed, 81 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/im/ricochet/androidod/ConnectActivity.java b/app/src/main/java/im/ricochet/androidod/ConnectActivity.java index 6fcf110..6aeb106 100644 --- a/app/src/main/java/im/ricochet/androidod/ConnectActivity.java +++ b/app/src/main/java/im/ricochet/androidod/ConnectActivity.java @@ -24,6 +24,14 @@ public class ConnectActivity extends AppCompatActivity { private static final String TAG = "InitActivity"; private static final String PRIVATE_KEY_KEY = "privateKey"; + Button regenButton; + Button connectButton; + ProgressBar spinner; + TextView progressText; + TextView idetityText; + + + @Override protected void onCreate(Bundle savedInstanceState) { // Load identity and connect to addr. Enable appropriate buttons @@ -32,15 +40,29 @@ public class ConnectActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(im.ricochet.androidod.R.layout.activity_connect); - TextView progressText = (TextView)findViewById(im.ricochet.androidod.R.id.progressTextView); - //progressText.setText("Loading private key..."); + progressText = (TextView)findViewById(R.id.progressTextView); + idetityText = (TextView)findViewById(R.id.identityTextView); + regenButton = (Button)findViewById(R.id.regenIdentButton); + connectButton = (Button)findViewById(R.id.connectButton); + spinner = (ProgressBar)findViewById(R.id.progressBar); + + regenButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + RegenIdentTask regenIdentTask = new RegenIdentTask(); + regenIdentTask.execute(); + } + }); SharedPreferences prefs = getSharedPreferences(PREFERNCE_FILE, MODE_PRIVATE); String privateKey = prefs.getString(PRIVATE_KEY_KEY, ""); + Log.i(TAG, "Private key loaded:\n"+privateKey); if (privateKey.equals("")) { - // Kick of identity generateion - regenIdentity(); + Log.i(TAG, "regenerating pricate key"); + RegenIdentTask regenIdentTask = new RegenIdentTask(); + regenIdentTask.execute(); } else { + Log.i(TAG, "setting identity, enabling regen"); + setIdentity(privateKey); Button regenButton = (Button)findViewById(R.id.regenIdentButton); regenButton.setEnabled(true); } @@ -60,32 +82,57 @@ public class ConnectActivity extends AppCompatActivity { */ } - private void regenIdentity() { - Button regenButton = (Button)findViewById(R.id.regenIdentButton); - regenButton.setEnabled(false); - TextView progressText = (TextView)findViewById(im.ricochet.androidod.R.id.progressTextView); - progressText.setText("Generating new identity..."); - ProgressBar spinner = (ProgressBar)findViewById(R.id.progressBar); - spinner.setVisibility(View.VISIBLE); + private void setIdentity(String privateKey) { + Log.i(TAG, "setIdentity(): " + privateKey); + String addr = GoRicochetMobile.getOnionAddress(privateKey); + Log.i(TAG, "setIdentity(): addr: '" + addr + "'"); + idetityText.setText("ricochet:" + addr); + } - String privateKey; - try { - privateKey = GoRicochetMobile.generatePrivateKey(); - - SharedPreferences prefs = getSharedPreferences(PREFERNCE_FILE, MODE_PRIVATE); - SharedPreferences.Editor prefsEditor = prefs.edit(); - prefsEditor.putString(PRIVATE_KEY_KEY, privateKey); - prefsEditor.commit(); - progressText.setText(""); - } catch (Exception e) { - Log.e(TAG, e.toString()); - progressText.setText("ERROR: unable to generate new identity: " + e.toString()); + private class RegenIdentTask extends AsyncTask { + @Override + protected void onPreExecute() { + Log.i(TAG, "RegenIdentTask.onPreExecute()"); + regenButton.setEnabled(false); + connectButton.setEnabled(false); + progressText.setText("Generating new identity..."); + spinner.setVisibility(View.VISIBLE); } - spinner.setVisibility(View.INVISIBLE); - regenButton.setEnabled(true); + @Override + public String doInBackground(Void... voids) { + Log.i(TAG, "RegenIdentTask.doInBackground()"); + String privateKey; + try { + privateKey = GoRicochetMobile.generatePrivateKey(); + + SharedPreferences prefs = getSharedPreferences(PREFERNCE_FILE, MODE_PRIVATE); + SharedPreferences.Editor prefsEditor = prefs.edit(); + prefsEditor.putString(PRIVATE_KEY_KEY, privateKey); + prefsEditor.commit(); + return privateKey; + } catch (Exception e) { + Log.e(TAG, e.toString()); + return null; + } + } + + @Override + protected void onPostExecute(String privateKey) { + Log.i(TAG, "RegenIdentTask.onPostExecute(): " + privateKey); + spinner.setVisibility(View.INVISIBLE); + regenButton.setEnabled(true); + connectButton.setEnabled(true); + if (privateKey == null) { + progressText.setText("ERROR: unable to generate new identity"); + } else { + progressText.setText(""); + setIdentity(privateKey); + } + } } + private class EchoBot extends AsyncTask { String privateKey; diff --git a/app/src/main/res/layout/activity_connect.xml b/app/src/main/res/layout/activity_connect.xml index ddc5ef8..1bf525c 100644 --- a/app/src/main/res/layout/activity_connect.xml +++ b/app/src/main/res/layout/activity_connect.xml @@ -11,9 +11,10 @@ style="@style/Widget.AppCompat.ProgressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" - app:layout_constraintLeft_toRightOf="@+id/connect" android:layout_marginLeft="8dp" android:layout_marginTop="8dp" + android:visibility="invisible" + app:layout_constraintLeft_toRightOf="@+id/connectButton" app:layout_constraintTop_toBottomOf="@+id/addressText" />