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 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sample/src/main/res/values/dimens.xml b/sample/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..59a0b0c
--- /dev/null
+++ b/sample/src/main/res/values/dimens.xml
@@ -0,0 +1,3 @@
+
+ 16dp
+
diff --git a/sample/src/main/res/values/strings.xml b/sample/src/main/res/values/strings.xml
index 63865d5..2eb1d67 100644
--- a/sample/src/main/res/values/strings.xml
+++ b/sample/src/main/res/values/strings.xml
@@ -64,4 +64,10 @@
User account
Comma-separated list of assets
+ BrainkeyActivity
+
+
+ Brainkey
+ Desired public key / address
+ Generate public key
diff --git a/sample/src/main/res/values/styles.xml b/sample/src/main/res/values/styles.xml
index 5885930..545b9c6 100644
--- a/sample/src/main/res/values/styles.xml
+++ b/sample/src/main/res/values/styles.xml
@@ -8,4 +8,13 @@
- @color/colorAccent
+
+
+
+
+
+