From c861c72a3151d0457f8a23587d84400ef0488990 Mon Sep 17 00:00:00 2001 From: "Nelson R. Perez" Date: Thu, 4 Apr 2019 11:47:35 -0500 Subject: [PATCH] Added a brainkey derivation feature to the sample app --- build.gradle | 2 +- sample/src/main/AndroidManifest.xml | 5 ++ .../agorise/labs/sample/BrainkeyActivity.java | 60 +++++++++++++++++ .../cy/agorise/labs/sample/CallsActivity.java | 8 ++- .../src/main/res/layout/activity_brainkey.xml | 25 ++++++++ .../src/main/res/layout/content_brainkey.xml | 64 +++++++++++++++++++ sample/src/main/res/values/dimens.xml | 3 + sample/src/main/res/values/strings.xml | 6 ++ sample/src/main/res/values/styles.xml | 9 +++ 9 files changed, 179 insertions(+), 3 deletions(-) create mode 100644 sample/src/main/java/cy/agorise/labs/sample/BrainkeyActivity.java create mode 100644 sample/src/main/res/layout/activity_brainkey.xml create mode 100644 sample/src/main/res/layout/content_brainkey.xml create mode 100644 sample/src/main/res/values/dimens.xml diff --git a/build.gradle b/build.gradle index 35db456..e58cad2 100644 --- a/build.gradle +++ b/build.gradle @@ -22,6 +22,6 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.3.1' + classpath 'com.android.tools.build:gradle:3.3.2' } } \ No newline at end of file diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml index 62c9b15..8ac3474 100644 --- a/sample/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -14,10 +14,15 @@ android:supportsRtl="true" android:theme="@style/AppTheme" tools:ignore="GoogleAppIndexingWarning"> + + diff --git a/sample/src/main/java/cy/agorise/labs/sample/BrainkeyActivity.java b/sample/src/main/java/cy/agorise/labs/sample/BrainkeyActivity.java new file mode 100644 index 0000000..e0f369d --- /dev/null +++ b/sample/src/main/java/cy/agorise/labs/sample/BrainkeyActivity.java @@ -0,0 +1,60 @@ +package cy.agorise.labs.sample; + +import android.os.Bundle; +import android.support.design.widget.TextInputEditText; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.text.Spannable; +import android.text.SpannableStringBuilder; +import android.text.style.StyleSpan; +import android.view.View; +import android.widget.TextView; + +import java.util.Locale; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; +import cy.agorise.graphenej.BrainKey; + +public class BrainkeyActivity extends AppCompatActivity { + private final String TAG = this.getClass().getName(); + @BindView(R.id.brainkey) + TextInputEditText mBrainkeyView; + + @BindView(R.id.pubkey) + TextInputEditText mDesiredPubKey; + + @BindView(R.id.pubkey_display) + TextView mPubkeyDisplay; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_brainkey); + Toolbar toolbar = findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + ButterKnife.bind(this); + } + + @OnClick(R.id.button_generate) + public void onGenerateClicked(View v){ + String target = mDesiredPubKey.getText().toString(); + String brainkeyText = mBrainkeyView.getText().toString(); + StringBuilder builder = new StringBuilder(); + for(int i = 0; i < 10; i++){ + BrainKey brainKey = new BrainKey(brainkeyText, i); + builder.append(String.format(Locale.ROOT, "%d -> ", i)) + .append(brainKey.getPublicAddress("BTS").toString()) + .append("\n"); + } + String derivationResult = builder.toString(); + mPubkeyDisplay.setText(derivationResult); + if(!target.isEmpty() && derivationResult.contains(target)){ + int start = derivationResult.indexOf(target); + SpannableStringBuilder sBuilder = new SpannableStringBuilder(derivationResult); + sBuilder.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), start, (start + 53), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + mPubkeyDisplay.setText(sBuilder); + } + } +} diff --git a/sample/src/main/java/cy/agorise/labs/sample/CallsActivity.java b/sample/src/main/java/cy/agorise/labs/sample/CallsActivity.java index 383ec83..086321b 100644 --- a/sample/src/main/java/cy/agorise/labs/sample/CallsActivity.java +++ b/sample/src/main/java/cy/agorise/labs/sample/CallsActivity.java @@ -26,6 +26,7 @@ public class CallsActivity extends AppCompatActivity { private final String TAG = this.getClass().getName(); private static final String REMOVE_CURRENT_NODE = "remove_current_node"; + private static final String TEST_BRAINKEY_DERIVATION = "test_brainkey_derivation"; @BindView(R.id.call_list) RecyclerView mRecyclerView; @@ -81,7 +82,8 @@ public class CallsActivity extends AppCompatActivity { RPC.CALL_GET_ACCOUNT_BALANCES, RPC.CALL_BROADCAST_TRANSACTION, RPC.CALL_GET_TRANSACTION, - REMOVE_CURRENT_NODE + REMOVE_CURRENT_NODE, + TEST_BRAINKEY_DERIVATION }; @NonNull @@ -104,7 +106,9 @@ public class CallsActivity extends AppCompatActivity { intent = new Intent(CallsActivity.this, SubscriptionActivity.class); } else if (selectedCall.equals(REMOVE_CURRENT_NODE)){ intent = new Intent(CallsActivity.this, RemoveNodeActivity.class); - }else{ + } else if (selectedCall.equals(TEST_BRAINKEY_DERIVATION)){ + intent = new Intent(CallsActivity.this, BrainkeyActivity.class); + } else { intent = new Intent(CallsActivity.this, PerformCallActivity.class); intent.putExtra(Constants.KEY_SELECTED_CALL, selectedCall); } diff --git a/sample/src/main/res/layout/activity_brainkey.xml b/sample/src/main/res/layout/activity_brainkey.xml new file mode 100644 index 0000000..1bc1860 --- /dev/null +++ b/sample/src/main/res/layout/activity_brainkey.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/sample/src/main/res/layout/content_brainkey.xml b/sample/src/main/res/layout/content_brainkey.xml new file mode 100644 index 0000000..aa63382 --- /dev/null +++ b/sample/src/main/res/layout/content_brainkey.xml @@ -0,0 +1,64 @@ + + + + + + + + + +