diff --git a/README.md b/README.md
index 796acb6..f9bfa17 100644
--- a/README.md
+++ b/README.md
@@ -63,6 +63,10 @@ Make sure you have Gradle 5.4.x or higher, 5.4.1 is known to work:
./gradlew wrapper --gradle-version=5.4.1
+Or you can use Android Studio on Linux, OS X, or Windows:
+
+ Make sure to install ndkVersion 21.1.6352462
+
## Release Build Process
The first time you create a release build you'll need to create a keystore file and prepare a properties file. The
@@ -114,7 +118,7 @@ This build can be directly uploaded to Google Play.
### Building a release APK for F-Droid
-We should do this & will plan to using [this](https://gitlab.com/fdroid/fdroiddata/blob/master/CONTRIBUTING.md)
+This will be pursued once lite wallet functionality exists in the SilentDragonAndroid wallet.
...
diff --git a/app/build.gradle b/app/build.gradle
index 02c78cd..4275a0d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,18 +1,22 @@
// Copyright 2019-2020 The Hush developers
// Released under the GPLv3
+import org.myhush.silentdragon.Deps
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-kapt'
android {
- compileSdkVersion 29
- buildToolsVersion "29.0.3"
+ ndkVersion "21.1.6352462"
+ compileSdkVersion Deps.compileSdkVersion
+ buildToolsVersion Deps.buildToolsVersion
defaultConfig {
applicationId "org.myhush.silentdragon"
- minSdkVersion 17
- targetSdkVersion 29
+ minSdkVersion Deps.minSdkVersion
+ targetSdkVersion Deps.targetSdkVersion
+ multiDexEnabled true
versionCode 4
versionName "0.5.16"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -31,6 +35,15 @@ android {
}
}
+ compileOptions {
+ sourceCompatibility 1.8
+ targetCompatibility 1.8
+ }
+
+ kotlinOptions {
+ jvmTarget = "1.8"
+ }
+
}
def secretsPropertiesFile = rootProject.file("secrets.properties")
@@ -51,19 +64,48 @@ if (secretsPropertiesFile.exists()) {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
- implementation 'androidx.appcompat:appcompat:1.0.0'
- implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ implementation Deps.Kotlin.STDLIB
+ implementation Deps.Kotlin.Coroutines.ANDROID
+ implementation Deps.Kotlin.Coroutines.CORE
+
+ implementation Deps.AndroidX.APPCOMPAT
+ implementation Deps.AndroidX.CONSTRAINT_LAYOUT
+ implementation Deps.AndroidX.CORE_KTX
+ implementation Deps.AndroidX.FRAGMENT_KTX
+ implementation Deps.AndroidX.LEGACY
+ implementation Deps.AndroidX.MULTIDEX
+ implementation Deps.AndroidX.PAGING
+ implementation Deps.AndroidX.VECTOR_DRAWABLE
+ implementation Deps.AndroidX.Navigation.FRAGMENT_KTX
+ implementation Deps.AndroidX.Navigation.UI_KTX
+
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidmads.library.qrgenearator:QRGenearator:1.0.3'
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'com.beust:klaxon:5.0.1'
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.gms:play-services-vision:17.0.2'
- implementation 'androidx.vectordrawable:vectordrawable:1.0.0'
implementation 'com.github.joshjdevl.libsodiumjni:libsodium-jni-aar:2.0.1'
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.19'
+ //implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
+ implementation 'com.journeyapps:zxing-android-embedded:3.6.0@aar'
+ implementation 'com.google.zxing:core:3.3.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
+
+ // from Demo App SDK
+ implementation Deps.Hush.ANDROID_WALLET_PLUGINS
+ implementation Deps.Hush.Sdk.MAINNET
+ implementation Deps.Hush.KOTLIN_BIP39
+ implementation Deps.Grpc.ANDROID
+ implementation Deps.Grpc.OKHTTP
+ implementation Deps.Grpc.PROTOBUG
+ implementation Deps.Grpc.STUB
+ implementation 'javax.annotation:javax.annotation-api:1.3.2'
+ implementation Deps.AndroidX.Room.ROOM_KTX
+ implementation Deps.AndroidX.PAGING
+ implementation 'com.google.guava:guava:27.0.1-android'
+ kapt Deps.AndroidX.Room.ROOM_COMPILER
+ implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.5'
+ implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.5'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ce58d5d..0217e12 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,6 +5,7 @@
xmlns:tools="http://schemas.android.com/tools"
package="org.myhush.silentdragon">
+
@@ -21,7 +22,7 @@
tools:replace="android:allowBackup">
@@ -30,7 +31,7 @@
@@ -40,7 +41,7 @@
@@ -51,7 +52,8 @@
+ android:screenOrientation="fullSensor"
+ tools:replace="screenOrientation" />
-
diff --git a/app/src/main/java/org/myhush/silentdragon/MainActivity.kt b/app/src/main/java/org/myhush/silentdragon/MainActivity.kt
index d0833f3..bb7c152 100644
--- a/app/src/main/java/org/myhush/silentdragon/MainActivity.kt
+++ b/app/src/main/java/org/myhush/silentdragon/MainActivity.kt
@@ -10,11 +10,6 @@ import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Handler
-import android.os.StrictMode
-import androidx.constraintlayout.widget.ConstraintLayout
-import com.google.android.material.snackbar.Snackbar
-import androidx.core.text.HtmlCompat
-import androidx.appcompat.app.AppCompatActivity
import android.text.Html
import android.util.Log
import android.view.Menu
@@ -23,14 +18,19 @@ import android.widget.Button
import android.widget.ScrollView
import android.widget.TextView
import android.widget.Toast
+import androidx.appcompat.app.AppCompatActivity
+import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.core.text.HtmlCompat
import com.beust.klaxon.Klaxon
+import com.google.android.material.snackbar.Snackbar
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.content_main.*
import org.myhush.silentdragon.DataModel.ConnectionStatus
import org.myhush.silentdragon.DataModel.connStatus
+import org.myhush.silentdragon.ui.AboutActivity
+import org.myhush.silentdragon.ui.SettingsActivity
import java.text.DecimalFormat
-
class MainActivity : AppCompatActivity(),
TransactionItemFragment.OnFragmentInteractionListener,
UnconfirmedTxItemFragment.OnFragmentInteractionListener {
@@ -51,7 +51,6 @@ class MainActivity : AppCompatActivity(),
// When creating, clear all the data first
setMainStatus("")
-
DataModel.init()
btnConnect.setOnClickListener {
@@ -87,7 +86,6 @@ class MainActivity : AppCompatActivity(),
txtMainBalanceUSD.setOnClickListener {
-
if(DataModel.selectedCurrency == "BTC")
Toast.makeText(applicationContext, "1 HUSH = ${DataModel.currencySymbols[DataModel.selectedCurrency]}${DecimalFormat(" #,##0.00000000")
.format(DataModel.currencyValues[DataModel.selectedCurrency])}", Toast.LENGTH_LONG).show()
@@ -130,7 +128,6 @@ class MainActivity : AppCompatActivity(),
lblBalance.text = ""
txtMainBalanceUSD.text = ""
txtMainBalance.text = status
-
}
@SuppressLint("SetTextI18n")
@@ -297,14 +294,12 @@ class MainActivity : AppCompatActivity(),
R.id.action_refresh -> {
swiperefresh.isRefreshing = true
ConnectionManager.refreshAllData()
-
return true
}
else -> super.onOptionsItemSelected(item)
}
}
-
var mReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
// We've received a signal
@@ -346,28 +341,35 @@ class MainActivity : AppCompatActivity(),
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
- when(requestCode) {
+ when (requestCode) {
QrReaderActivity.REQUEST_CONNDATA -> {
if (resultCode == Activity.RESULT_OK) {
Log.i(TAG, "Main Activity got result for QrCode: ${data?.dataString}")
// Check to make sure that the result is an actual address
if (!(data?.dataString ?: "").startsWith("ws")) {
- Toast.makeText(applicationContext,
- getString(R.string.is_not_a_valid_connection_string, data?.dataString), Toast.LENGTH_SHORT).show()
+ Toast.makeText(
+ applicationContext,
+ getString(R.string.is_not_a_valid_connection_string, data?.dataString),
+ Toast.LENGTH_SHORT
+ ).show()
return
}
val conComponents = data?.dataString?.split(",")
if (conComponents?.size ?: 0 < 2 || conComponents?.size ?: 0 > 3) {
- Toast.makeText(applicationContext,
- getString(R.string.is_not_a_valid_connection_string, data?.dataString), Toast.LENGTH_SHORT).show()
+ Toast.makeText(
+ applicationContext,
+ getString(R.string.is_not_a_valid_connection_string, data?.dataString),
+ Toast.LENGTH_SHORT
+ ).show()
return
}
val conString = conComponents!![0]
val secretHex = conComponents[1]
- val allowInternetConnections = if (conComponents.size == 3) conComponents[2] == "1" else false
+ val allowInternetConnections =
+ if (conComponents.size == 3) conComponents[2] == "1" else false
DataModel.setSecretHex(secretHex)
DataModel.setConnString(
@@ -395,7 +397,5 @@ class MainActivity : AppCompatActivity(),
updateUI(true)
}
-
private val TAG = "MainActivity"
-
}
diff --git a/app/src/main/java/org/myhush/silentdragon/QrReaderActivity.kt b/app/src/main/java/org/myhush/silentdragon/QrReaderActivity.kt
index e03cb2f..1b56f8c 100644
--- a/app/src/main/java/org/myhush/silentdragon/QrReaderActivity.kt
+++ b/app/src/main/java/org/myhush/silentdragon/QrReaderActivity.kt
@@ -2,29 +2,26 @@
package org.myhush.silentdragon
import android.app.Activity
+import android.app.AlertDialog
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Bundle
-import androidx.core.app.ActivityCompat
-import androidx.core.content.ContextCompat
-import androidx.appcompat.app.AppCompatActivity
+import android.text.InputType
import android.util.Log
import android.view.Menu
import android.view.MenuItem
-import android.view.SurfaceHolder
-import android.view.SurfaceView
-import com.google.android.gms.vision.CameraSource
-import com.google.android.gms.vision.Detector
-import com.google.android.gms.vision.barcode.Barcode
-import com.google.android.gms.vision.barcode.BarcodeDetector
-import kotlinx.android.synthetic.main.activity_qr_reader.*
-import java.io.IOException
-import android.app.AlertDialog
-import android.text.InputType
import android.widget.EditText
+import android.widget.Toast
+import androidx.appcompat.app.AppCompatActivity
+import com.google.zxing.ResultPoint
+import com.journeyapps.barcodescanner.BarcodeCallback
+import com.journeyapps.barcodescanner.BarcodeResult
+import com.journeyapps.barcodescanner.CaptureManager
+import kotlinx.android.synthetic.main.activity_qr_reader.*
class QrReaderActivity : AppCompatActivity() {
+ lateinit var captureManager: CaptureManager
companion object {
const val REQUEST_ADDRESS = 1
@@ -43,7 +40,26 @@ class QrReaderActivity : AppCompatActivity() {
lblErrorMsg.text = ""
- setupCamera()
+ btnQrCodeCancel.setOnClickListener {
+ setResult(Activity.RESULT_CANCELED)
+ finish()
+ }
+
+ captureManager = CaptureManager(this, barcodeView)
+ captureManager.initializeFromIntent(intent, savedInstanceState)
+
+ barcodeView.decodeSingle(object: BarcodeCallback{
+ override fun barcodeResult(result: BarcodeResult?) {
+ result?.let {
+ if (result.text != null) {
+ processQrCodeText(result.text)
+ }
+ }
+ }
+ override fun possibleResultPoints(resultPoints: MutableList?) {
+ }
+ })
+
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) {
@@ -92,63 +108,19 @@ class QrReaderActivity : AppCompatActivity() {
}
}
- private fun setupCamera() {
- val cameraView = findViewById(R.id.camera_view)
-
- val barcodeDetector = BarcodeDetector.Builder(this).setBarcodeFormats(Barcode.QR_CODE).build()
- val cameraSource = CameraSource.Builder(this, barcodeDetector)
- .setAutoFocusEnabled(true)
- .setRequestedPreviewSize(640, 480)
- .build()
-
-
- cameraView.holder.addCallback(object : SurfaceHolder.Callback {
- override fun surfaceCreated(holder: SurfaceHolder) {
- try {
- if (ContextCompat.checkSelfPermission(applicationContext, android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(this@QrReaderActivity, arrayOf(android.Manifest.permission.CAMERA), 50)
- } else {
- cameraSource.start(cameraView.holder)
-
- val w = cameraView.width
- val h = cameraView.height
- val scale = cameraSource.previewSize.width.toDouble() / cameraSource.previewSize.height.toDouble()
-
- val scaleWidth = (h.toDouble() / scale).toInt()
-
- cameraView.layout((w - scaleWidth)/2, 0, scaleWidth , h)
- println("Preview size: ${cameraSource.previewSize}")
- }
- } catch (ie: IOException) {
- Log.e("CAMERA SOURCE", ie.toString())
- }
- }
-
- override fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) {}
-
- override fun surfaceDestroyed(holder: SurfaceHolder) {
- cameraSource.stop()
- }
- })
-
- btnQrCodeCancel.setOnClickListener {
- setResult(Activity.RESULT_CANCELED)
- finish()
- }
+ override fun onPause() {
+ super.onPause()
+ captureManager.onPause()
+ }
- barcodeDetector.setProcessor(object : Detector.Processor {
- override fun release() {}
+ override fun onResume() {
+ super.onResume()
+ captureManager.onResume()
+ }
- override fun receiveDetections(detections: Detector.Detections) {
- val barcodes = detections.detectedItems
- if (barcodes.size() != 0) {
- runOnUiThread {
- val barcodeInfo = barcodes.valueAt(0).displayValue
- processText(barcodeInfo)
- }
- }
- }
- })
+ override fun onDestroy() {
+ super.onDestroy()
+ captureManager.onDestroy()
}
private fun processText(barcodeInfo: String) {
@@ -174,15 +146,13 @@ class QrReaderActivity : AppCompatActivity() {
err = err.substring(0, 22) + "...." + err.substring(err.length - 22, err.length)
}
lblErrorMsg.text = getString(R.string.is_not_a_valid_hush_address, err)
-
return
}
-
// The data seems valid, so return it.
val data = Intent()
- // Payment URIs are often formatted as "hush:", but this casuses parsing problems.
+ // Payment URIs are often formatted as "hush:", but this causes parsing problems.
// So change it to hush://, so that it parses properly
if (barcodeInfo.startsWith("hush:") && !barcodeInfo.startsWith("hush://")) {
data.data = Uri.parse(barcodeInfo.replaceFirst("hush:", "hush://"))
@@ -194,5 +164,22 @@ class QrReaderActivity : AppCompatActivity() {
finish()
}
+ private fun processQrCodeText(qrcodeInfo: String) {
+ if (qrcodeInfo.startsWith("ws")) {
+ Log.i(TAG, "It's a ws connection")
+ //Toast.makeText(this, "YEAH: " + qrcodeInfo, Toast.LENGTH_SHORT).show();
+
+ val data = Intent() // The data seems valid, so return it
+ data.data = Uri.parse(qrcodeInfo)
+ setResult(Activity.RESULT_OK, data)
+ finish()
+ } else {
+ Log.i(TAG, "Not a ws connection")
+ //Toast.makeText(this, "Not a ws connection", Toast.LENGTH_SHORT).show();
+ setResult(Activity.RESULT_CANCELED)
+ finish()
+ }
+ }
+
private val TAG = "QrReader"
}
diff --git a/app/src/main/java/org/myhush/silentdragon/AboutActivity.kt b/app/src/main/java/org/myhush/silentdragon/ui/AboutActivity.kt
similarity index 81%
rename from app/src/main/java/org/myhush/silentdragon/AboutActivity.kt
rename to app/src/main/java/org/myhush/silentdragon/ui/AboutActivity.kt
index 2a084cc..d37d794 100644
--- a/app/src/main/java/org/myhush/silentdragon/AboutActivity.kt
+++ b/app/src/main/java/org/myhush/silentdragon/ui/AboutActivity.kt
@@ -1,9 +1,11 @@
// Copyright 2019-2020 The Hush developers
-package org.myhush.silentdragon
+package org.myhush.silentdragon.ui
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_about.lblVersionName
+import org.myhush.silentdragon.BuildConfig
+import org.myhush.silentdragon.R
class AboutActivity : AppCompatActivity() {
diff --git a/app/src/main/java/org/myhush/silentdragon/SettingsActivity.kt b/app/src/main/java/org/myhush/silentdragon/ui/SettingsActivity.kt
similarity index 80%
rename from app/src/main/java/org/myhush/silentdragon/SettingsActivity.kt
rename to app/src/main/java/org/myhush/silentdragon/ui/SettingsActivity.kt
index 93b47a3..a25a168 100644
--- a/app/src/main/java/org/myhush/silentdragon/SettingsActivity.kt
+++ b/app/src/main/java/org/myhush/silentdragon/ui/SettingsActivity.kt
@@ -1,5 +1,5 @@
// Copyright 2019-2020 The Hush developers
-package org.myhush.silentdragon
+package org.myhush.silentdragon.ui
import android.content.SharedPreferences
import androidx.appcompat.app.AppCompatActivity
@@ -9,6 +9,10 @@ import android.widget.Adapter
import android.widget.AdapterView
import android.widget.ArrayAdapter
import kotlinx.android.synthetic.main.activity_settings.*
+import org.myhush.silentdragon.ConnectionManager
+import org.myhush.silentdragon.DataModel
+import org.myhush.silentdragon.R
+import org.myhush.silentdragon.SilentDragonApp
class SettingsActivity : AppCompatActivity() {
@@ -19,7 +23,10 @@ class SettingsActivity : AppCompatActivity() {
updateUI()
btnDisconnect.setOnClickListener {
- DataModel.setConnString(null, applicationContext)
+ DataModel.setConnString(
+ null,
+ applicationContext
+ )
DataModel.clear()
ConnectionManager.closeConnection()
@@ -47,7 +54,9 @@ class SettingsActivity : AppCompatActivity() {
var pref: SharedPreferences = getSharedPreferences("MainFile",0)
var editor: SharedPreferences.Editor = pref.edit()
- editor.putString("currency", DataModel.selectedCurrency)
+ editor.putString("currency",
+ DataModel.selectedCurrency
+ )
editor.commit()
}
@@ -79,11 +88,15 @@ class SettingsActivity : AppCompatActivity() {
fun updateUI() {
fillSpinner()
- txtSettingsConnString.text = DataModel.getConnString(SilentDragonApp.appContext!!)
+ txtSettingsConnString.text = DataModel.getConnString(
+ SilentDragonApp.appContext!!
+ )
?: getString(R.string.not_connected)
chkDisallowInternet.isChecked = !DataModel.getGlobalAllowInternet()
- lblServerVersion.text = DataModel.mainResponseData?.serverversion ?: getString(R.string.not_connected)
+ lblServerVersion.text = DataModel.mainResponseData?.serverversion ?: getString(
+ R.string.not_connected
+ )
}
}
diff --git a/app/src/main/java/org/myhush/silentdragon/SplashActivity.kt b/app/src/main/java/org/myhush/silentdragon/ui/SplashActivity.kt
similarity index 79%
rename from app/src/main/java/org/myhush/silentdragon/SplashActivity.kt
rename to app/src/main/java/org/myhush/silentdragon/ui/SplashActivity.kt
index c099031..9cfd0a2 100644
--- a/app/src/main/java/org/myhush/silentdragon/SplashActivity.kt
+++ b/app/src/main/java/org/myhush/silentdragon/ui/SplashActivity.kt
@@ -1,11 +1,13 @@
// Copyright 2019-2020 The Hush developers
// Released under the GPLv3
-package org.myhush.silentdragon
+package org.myhush.silentdragon.ui
import androidx.appcompat.app.AppCompatActivity
import android.content.Intent
import android.os.Bundle
import android.os.Handler
+import org.myhush.silentdragon.MainActivity
+import org.myhush.silentdragon.R
class SplashActivity : AppCompatActivity() {
@@ -18,7 +20,7 @@ class SplashActivity : AppCompatActivity() {
Handler().postDelayed({
// This method will be executed once the timer is over
- startActivity(Intent(this,MainActivity::class.java))
+ startActivity(Intent(this, MainActivity::class.java))
// close this activity
finish()
diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml
index 44e87ae..1a7f629 100644
--- a/app/src/main/res/layout/activity_about.xml
+++ b/app/src/main/res/layout/activity_about.xml
@@ -5,7 +5,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context="org.myhush.silentdragon.AboutActivity">
+ tools:context="org.myhush.silentdragon.ui.AboutActivity">
-
+
+
+ android:layout_height="0dp"
+ app:layout_constraintBottom_toTopOf="@+id/txtQrCodeHelp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:zxing_scanner_layout="@layout/custom_qrcode_layout" />
-
-
+ android:id="@+id/txtQrCodeHelp"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="8dp"
+ android:layout_marginEnd="8dp"
+ android:layout_marginBottom="16dp"
+ android:text="@string/how_to_connect_sd2sda"
+ android:textAlignment="center"
+ android:textColor="@android:color/white"
+ app:layout_constraintBottom_toTopOf="@+id/btnQrCodeCancel"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent" />
+
+ android:id="@+id/btnQrCodeCancel"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="8dp"
+ android:layout_marginEnd="8dp"
+ android:layout_marginBottom="16dp"
+ android:background="@color/colorPrimary"
+ android:text="@string/cancel"
+ android:textColor="@android:color/white"
+ app:layout_constraintBottom_toTopOf="@+id/lblErrorMsg"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent" />
+
-
\ No newline at end of file
+ android:id="@+id/lblErrorMsg"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="8dp"
+ android:layout_marginEnd="8dp"
+ android:layout_marginBottom="32dp"
+ android:textAlignment="center"
+ android:textColor="@color/colorAccent"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent" />
+
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index effbb1a..b730fa1 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -5,7 +5,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context="org.myhush.silentdragon.SettingsActivity">
+ tools:context="org.myhush.silentdragon.ui.SettingsActivity">
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/word_list_bip39.xml b/app/src/main/res/values/word_list_bip39.xml
new file mode 100644
index 0000000..0f208a9
--- /dev/null
+++ b/app/src/main/res/values/word_list_bip39.xml
@@ -0,0 +1,2053 @@
+
+
+
+ - abandon
+ - ability
+ - able
+ - about
+ - above
+ - absent
+ - absorb
+ - abstract
+ - absurd
+ - abuse
+ - access
+ - accident
+ - account
+ - accuse
+ - achieve
+ - acid
+ - acoustic
+ - acquire
+ - across
+ - act
+ - action
+ - actor
+ - actress
+ - actual
+ - adapt
+ - add
+ - addict
+ - address
+ - adjust
+ - admit
+ - adult
+ - advance
+ - advice
+ - aerobic
+ - affair
+ - afford
+ - afraid
+ - again
+ - age
+ - agent
+ - agree
+ - ahead
+ - aim
+ - air
+ - airport
+ - aisle
+ - alarm
+ - album
+ - alcohol
+ - alert
+ - alien
+ - all
+ - alley
+ - allow
+ - almost
+ - alone
+ - alpha
+ - already
+ - also
+ - alter
+ - always
+ - amateur
+ - amazing
+ - among
+ - amount
+ - amused
+ - analyst
+ - anchor
+ - ancient
+ - anger
+ - angle
+ - angry
+ - animal
+ - ankle
+ - announce
+ - annual
+ - another
+ - answer
+ - antenna
+ - antique
+ - anxiety
+ - any
+ - apart
+ - apology
+ - appear
+ - apple
+ - approve
+ - april
+ - arch
+ - arctic
+ - area
+ - arena
+ - argue
+ - arm
+ - armed
+ - armor
+ - army
+ - around
+ - arrange
+ - arrest
+ - arrive
+ - arrow
+ - art
+ - artefact
+ - artist
+ - artwork
+ - ask
+ - aspect
+ - assault
+ - asset
+ - assist
+ - assume
+ - asthma
+ - athlete
+ - atom
+ - attack
+ - attend
+ - attitude
+ - attract
+ - auction
+ - audit
+ - august
+ - aunt
+ - author
+ - auto
+ - autumn
+ - average
+ - avocado
+ - avoid
+ - awake
+ - aware
+ - away
+ - awesome
+ - awful
+ - awkward
+ - axis
+ - baby
+ - bachelor
+ - bacon
+ - badge
+ - bag
+ - balance
+ - balcony
+ - ball
+ - bamboo
+ - banana
+ - banner
+ - bar
+ - barely
+ - bargain
+ - barrel
+ - base
+ - basic
+ - basket
+ - battle
+ - beach
+ - bean
+ - beauty
+ - because
+ - become
+ - beef
+ - before
+ - begin
+ - behave
+ - behind
+ - believe
+ - below
+ - belt
+ - bench
+ - benefit
+ - best
+ - betray
+ - better
+ - between
+ - beyond
+ - bicycle
+ - bid
+ - bike
+ - bind
+ - biology
+ - bird
+ - birth
+ - bitter
+ - black
+ - blade
+ - blame
+ - blanket
+ - blast
+ - bleak
+ - bless
+ - blind
+ - blood
+ - blossom
+ - blouse
+ - blue
+ - blur
+ - blush
+ - board
+ - boat
+ - body
+ - boil
+ - bomb
+ - bone
+ - bonus
+ - book
+ - boost
+ - border
+ - boring
+ - borrow
+ - boss
+ - bottom
+ - bounce
+ - box
+ - boy
+ - bracket
+ - brain
+ - brand
+ - brass
+ - brave
+ - bread
+ - breeze
+ - brick
+ - bridge
+ - brief
+ - bright
+ - bring
+ - brisk
+ - broccoli
+ - broken
+ - bronze
+ - broom
+ - brother
+ - brown
+ - brush
+ - bubble
+ - buddy
+ - budget
+ - buffalo
+ - build
+ - bulb
+ - bulk
+ - bullet
+ - bundle
+ - bunker
+ - burden
+ - burger
+ - burst
+ - bus
+ - business
+ - busy
+ - butter
+ - buyer
+ - buzz
+ - cabbage
+ - cabin
+ - cable
+ - cactus
+ - cage
+ - cake
+ - call
+ - calm
+ - camera
+ - camp
+ - can
+ - canal
+ - cancel
+ - candy
+ - cannon
+ - canoe
+ - canvas
+ - canyon
+ - capable
+ - capital
+ - captain
+ - car
+ - carbon
+ - card
+ - cargo
+ - carpet
+ - carry
+ - cart
+ - case
+ - cash
+ - casino
+ - castle
+ - casual
+ - cat
+ - catalog
+ - catch
+ - category
+ - cattle
+ - caught
+ - cause
+ - caution
+ - cave
+ - ceiling
+ - celery
+ - cement
+ - census
+ - century
+ - cereal
+ - certain
+ - chair
+ - chalk
+ - champion
+ - change
+ - chaos
+ - chapter
+ - charge
+ - chase
+ - chat
+ - cheap
+ - check
+ - cheese
+ - chef
+ - cherry
+ - chest
+ - chicken
+ - chief
+ - child
+ - chimney
+ - choice
+ - choose
+ - chronic
+ - chuckle
+ - chunk
+ - churn
+ - cigar
+ - cinnamon
+ - circle
+ - citizen
+ - city
+ - civil
+ - claim
+ - clap
+ - clarify
+ - claw
+ - clay
+ - clean
+ - clerk
+ - clever
+ - click
+ - client
+ - cliff
+ - climb
+ - clinic
+ - clip
+ - clock
+ - clog
+ - close
+ - cloth
+ - cloud
+ - clown
+ - club
+ - clump
+ - cluster
+ - clutch
+ - coach
+ - coast
+ - coconut
+ - code
+ - coffee
+ - coil
+ - coin
+ - collect
+ - color
+ - column
+ - combine
+ - come
+ - comfort
+ - comic
+ - common
+ - company
+ - concert
+ - conduct
+ - confirm
+ - congress
+ - connect
+ - consider
+ - control
+ - convince
+ - cook
+ - cool
+ - copper
+ - copy
+ - coral
+ - core
+ - corn
+ - correct
+ - cost
+ - cotton
+ - couch
+ - country
+ - couple
+ - course
+ - cousin
+ - cover
+ - coyote
+ - crack
+ - cradle
+ - craft
+ - cram
+ - crane
+ - crash
+ - crater
+ - crawl
+ - crazy
+ - cream
+ - credit
+ - creek
+ - crew
+ - cricket
+ - crime
+ - crisp
+ - critic
+ - crop
+ - cross
+ - crouch
+ - crowd
+ - crucial
+ - cruel
+ - cruise
+ - crumble
+ - crunch
+ - crush
+ - cry
+ - crystal
+ - cube
+ - culture
+ - cup
+ - cupboard
+ - curious
+ - current
+ - curtain
+ - curve
+ - cushion
+ - custom
+ - cute
+ - cycle
+ - dad
+ - damage
+ - damp
+ - dance
+ - danger
+ - daring
+ - dash
+ - daughter
+ - dawn
+ - day
+ - deal
+ - debate
+ - debris
+ - decade
+ - december
+ - decide
+ - decline
+ - decorate
+ - decrease
+ - deer
+ - defense
+ - define
+ - defy
+ - degree
+ - delay
+ - deliver
+ - demand
+ - demise
+ - denial
+ - dentist
+ - deny
+ - depart
+ - depend
+ - deposit
+ - depth
+ - deputy
+ - derive
+ - describe
+ - desert
+ - design
+ - desk
+ - despair
+ - destroy
+ - detail
+ - detect
+ - develop
+ - device
+ - devote
+ - diagram
+ - dial
+ - diamond
+ - diary
+ - dice
+ - diesel
+ - diet
+ - differ
+ - digital
+ - dignity
+ - dilemma
+ - dinner
+ - dinosaur
+ - direct
+ - dirt
+ - disagree
+ - discover
+ - disease
+ - dish
+ - dismiss
+ - disorder
+ - display
+ - distance
+ - divert
+ - divide
+ - divorce
+ - dizzy
+ - doctor
+ - document
+ - dog
+ - doll
+ - dolphin
+ - domain
+ - donate
+ - donkey
+ - donor
+ - door
+ - dose
+ - double
+ - dove
+ - draft
+ - dragon
+ - drama
+ - drastic
+ - draw
+ - dream
+ - dress
+ - drift
+ - drill
+ - drink
+ - drip
+ - drive
+ - drop
+ - drum
+ - dry
+ - duck
+ - dumb
+ - dune
+ - during
+ - dust
+ - dutch
+ - duty
+ - dwarf
+ - dynamic
+ - eager
+ - eagle
+ - early
+ - earn
+ - earth
+ - easily
+ - east
+ - easy
+ - echo
+ - ecology
+ - economy
+ - edge
+ - edit
+ - educate
+ - effort
+ - egg
+ - eight
+ - either
+ - elbow
+ - elder
+ - electric
+ - elegant
+ - element
+ - elephant
+ - elevator
+ - elite
+ - else
+ - embark
+ - embody
+ - embrace
+ - emerge
+ - emotion
+ - employ
+ - empower
+ - empty
+ - enable
+ - enact
+ - end
+ - endless
+ - endorse
+ - enemy
+ - energy
+ - enforce
+ - engage
+ - engine
+ - enhance
+ - enjoy
+ - enlist
+ - enough
+ - enrich
+ - enroll
+ - ensure
+ - enter
+ - entire
+ - entry
+ - envelope
+ - episode
+ - equal
+ - equip
+ - era
+ - erase
+ - erode
+ - erosion
+ - error
+ - erupt
+ - escape
+ - essay
+ - essence
+ - estate
+ - eternal
+ - ethics
+ - evidence
+ - evil
+ - evoke
+ - evolve
+ - exact
+ - example
+ - excess
+ - exchange
+ - excite
+ - exclude
+ - excuse
+ - execute
+ - exercise
+ - exhaust
+ - exhibit
+ - exile
+ - exist
+ - exit
+ - exotic
+ - expand
+ - expect
+ - expire
+ - explain
+ - expose
+ - express
+ - extend
+ - extra
+ - eye
+ - eyebrow
+ - fabric
+ - face
+ - faculty
+ - fade
+ - faint
+ - faith
+ - fall
+ - false
+ - fame
+ - family
+ - famous
+ - fan
+ - fancy
+ - fantasy
+ - farm
+ - fashion
+ - fat
+ - fatal
+ - father
+ - fatigue
+ - fault
+ - favorite
+ - feature
+ - february
+ - federal
+ - fee
+ - feed
+ - feel
+ - female
+ - fence
+ - festival
+ - fetch
+ - fever
+ - few
+ - fiber
+ - fiction
+ - field
+ - figure
+ - file
+ - film
+ - filter
+ - final
+ - find
+ - fine
+ - finger
+ - finish
+ - fire
+ - firm
+ - first
+ - fiscal
+ - fish
+ - fit
+ - fitness
+ - fix
+ - flag
+ - flame
+ - flash
+ - flat
+ - flavor
+ - flee
+ - flight
+ - flip
+ - float
+ - flock
+ - floor
+ - flower
+ - fluid
+ - flush
+ - fly
+ - foam
+ - focus
+ - fog
+ - foil
+ - fold
+ - follow
+ - food
+ - foot
+ - force
+ - forest
+ - forget
+ - fork
+ - fortune
+ - forum
+ - forward
+ - fossil
+ - foster
+ - found
+ - fox
+ - fragile
+ - frame
+ - frequent
+ - fresh
+ - friend
+ - fringe
+ - frog
+ - front
+ - frost
+ - frown
+ - frozen
+ - fruit
+ - fuel
+ - fun
+ - funny
+ - furnace
+ - fury
+ - future
+ - gadget
+ - gain
+ - galaxy
+ - gallery
+ - game
+ - gap
+ - garage
+ - garbage
+ - garden
+ - garlic
+ - garment
+ - gas
+ - gasp
+ - gate
+ - gather
+ - gauge
+ - gaze
+ - general
+ - genius
+ - genre
+ - gentle
+ - genuine
+ - gesture
+ - ghost
+ - giant
+ - gift
+ - giggle
+ - ginger
+ - giraffe
+ - girl
+ - give
+ - glad
+ - glance
+ - glare
+ - glass
+ - glide
+ - glimpse
+ - globe
+ - gloom
+ - glory
+ - glove
+ - glow
+ - glue
+ - goat
+ - goddess
+ - gold
+ - good
+ - goose
+ - gorilla
+ - gospel
+ - gossip
+ - govern
+ - gown
+ - grab
+ - grace
+ - grain
+ - grant
+ - grape
+ - grass
+ - gravity
+ - great
+ - green
+ - grid
+ - grief
+ - grit
+ - grocery
+ - group
+ - grow
+ - grunt
+ - guard
+ - guess
+ - guide
+ - guilt
+ - guitar
+ - gun
+ - gym
+ - habit
+ - hair
+ - half
+ - hammer
+ - hamster
+ - hand
+ - happy
+ - harbor
+ - hard
+ - harsh
+ - harvest
+ - hat
+ - have
+ - hawk
+ - hazard
+ - head
+ - health
+ - heart
+ - heavy
+ - hedgehog
+ - height
+ - hello
+ - helmet
+ - help
+ - hen
+ - hero
+ - hidden
+ - high
+ - hill
+ - hint
+ - hip
+ - hire
+ - history
+ - hobby
+ - hockey
+ - hold
+ - hole
+ - holiday
+ - hollow
+ - home
+ - honey
+ - hood
+ - hope
+ - horn
+ - horror
+ - horse
+ - hospital
+ - host
+ - hotel
+ - hour
+ - hover
+ - hub
+ - huge
+ - human
+ - humble
+ - humor
+ - hundred
+ - hungry
+ - hunt
+ - hurdle
+ - hurry
+ - hurt
+ - husband
+ - hybrid
+ - ice
+ - icon
+ - idea
+ - identify
+ - idle
+ - ignore
+ - ill
+ - illegal
+ - illness
+ - image
+ - imitate
+ - immense
+ - immune
+ - impact
+ - impose
+ - improve
+ - impulse
+ - inch
+ - include
+ - income
+ - increase
+ - index
+ - indicate
+ - indoor
+ - industry
+ - infant
+ - inflict
+ - inform
+ - inhale
+ - inherit
+ - initial
+ - inject
+ - injury
+ - inmate
+ - inner
+ - innocent
+ - input
+ - inquiry
+ - insane
+ - insect
+ - inside
+ - inspire
+ - install
+ - intact
+ - interest
+ - into
+ - invest
+ - invite
+ - involve
+ - iron
+ - island
+ - isolate
+ - issue
+ - item
+ - ivory
+ - jacket
+ - jaguar
+ - jar
+ - jazz
+ - jealous
+ - jeans
+ - jelly
+ - jewel
+ - job
+ - join
+ - joke
+ - journey
+ - joy
+ - judge
+ - juice
+ - jump
+ - jungle
+ - junior
+ - junk
+ - just
+ - kangaroo
+ - keen
+ - keep
+ - ketchup
+ - key
+ - kick
+ - kid
+ - kidney
+ - kind
+ - kingdom
+ - kiss
+ - kit
+ - kitchen
+ - kite
+ - kitten
+ - kiwi
+ - knee
+ - knife
+ - knock
+ - know
+ - lab
+ - label
+ - labor
+ - ladder
+ - lady
+ - lake
+ - lamp
+ - language
+ - laptop
+ - large
+ - later
+ - latin
+ - laugh
+ - laundry
+ - lava
+ - law
+ - lawn
+ - lawsuit
+ - layer
+ - lazy
+ - leader
+ - leaf
+ - learn
+ - leave
+ - lecture
+ - left
+ - leg
+ - legal
+ - legend
+ - leisure
+ - lemon
+ - lend
+ - length
+ - lens
+ - leopard
+ - lesson
+ - letter
+ - level
+ - liar
+ - liberty
+ - library
+ - license
+ - life
+ - lift
+ - light
+ - like
+ - limb
+ - limit
+ - link
+ - lion
+ - liquid
+ - list
+ - little
+ - live
+ - lizard
+ - load
+ - loan
+ - lobster
+ - local
+ - lock
+ - logic
+ - lonely
+ - long
+ - loop
+ - lottery
+ - loud
+ - lounge
+ - love
+ - loyal
+ - lucky
+ - luggage
+ - lumber
+ - lunar
+ - lunch
+ - luxury
+ - lyrics
+ - machine
+ - mad
+ - magic
+ - magnet
+ - maid
+ - mail
+ - main
+ - major
+ - make
+ - mammal
+ - man
+ - manage
+ - mandate
+ - mango
+ - mansion
+ - manual
+ - maple
+ - marble
+ - march
+ - margin
+ - marine
+ - market
+ - marriage
+ - mask
+ - mass
+ - master
+ - match
+ - material
+ - math
+ - matrix
+ - matter
+ - maximum
+ - maze
+ - meadow
+ - mean
+ - measure
+ - meat
+ - mechanic
+ - medal
+ - media
+ - melody
+ - melt
+ - member
+ - memory
+ - mention
+ - menu
+ - mercy
+ - merge
+ - merit
+ - merry
+ - mesh
+ - message
+ - metal
+ - method
+ - middle
+ - midnight
+ - milk
+ - million
+ - mimic
+ - mind
+ - minimum
+ - minor
+ - minute
+ - miracle
+ - mirror
+ - misery
+ - miss
+ - mistake
+ - mix
+ - mixed
+ - mixture
+ - mobile
+ - model
+ - modify
+ - mom
+ - moment
+ - monitor
+ - monkey
+ - monster
+ - month
+ - moon
+ - moral
+ - more
+ - morning
+ - mosquito
+ - mother
+ - motion
+ - motor
+ - mountain
+ - mouse
+ - move
+ - movie
+ - much
+ - muffin
+ - mule
+ - multiply
+ - muscle
+ - museum
+ - mushroom
+ - music
+ - must
+ - mutual
+ - myself
+ - mystery
+ - myth
+ - naive
+ - name
+ - napkin
+ - narrow
+ - nasty
+ - nation
+ - nature
+ - near
+ - neck
+ - need
+ - negative
+ - neglect
+ - neither
+ - nephew
+ - nerve
+ - nest
+ - net
+ - network
+ - neutral
+ - never
+ - news
+ - next
+ - nice
+ - night
+ - noble
+ - noise
+ - nominee
+ - noodle
+ - normal
+ - north
+ - nose
+ - notable
+ - note
+ - nothing
+ - notice
+ - novel
+ - now
+ - nuclear
+ - number
+ - nurse
+ - nut
+ - oak
+ - obey
+ - object
+ - oblige
+ - obscure
+ - observe
+ - obtain
+ - obvious
+ - occur
+ - ocean
+ - october
+ - odor
+ - off
+ - offer
+ - office
+ - often
+ - oil
+ - okay
+ - old
+ - olive
+ - olympic
+ - omit
+ - once
+ - one
+ - onion
+ - online
+ - only
+ - open
+ - opera
+ - opinion
+ - oppose
+ - option
+ - orange
+ - orbit
+ - orchard
+ - order
+ - ordinary
+ - organ
+ - orient
+ - original
+ - orphan
+ - ostrich
+ - other
+ - outdoor
+ - outer
+ - output
+ - outside
+ - oval
+ - oven
+ - over
+ - own
+ - owner
+ - oxygen
+ - oyster
+ - ozone
+ - pact
+ - paddle
+ - page
+ - pair
+ - palace
+ - palm
+ - panda
+ - panel
+ - panic
+ - panther
+ - paper
+ - parade
+ - parent
+ - park
+ - parrot
+ - party
+ - pass
+ - patch
+ - path
+ - patient
+ - patrol
+ - pattern
+ - pause
+ - pave
+ - payment
+ - peace
+ - peanut
+ - pear
+ - peasant
+ - pelican
+ - pen
+ - penalty
+ - pencil
+ - people
+ - pepper
+ - perfect
+ - permit
+ - person
+ - pet
+ - phone
+ - photo
+ - phrase
+ - physical
+ - piano
+ - picnic
+ - picture
+ - piece
+ - pig
+ - pigeon
+ - pill
+ - pilot
+ - pink
+ - pioneer
+ - pipe
+ - pistol
+ - pitch
+ - pizza
+ - place
+ - planet
+ - plastic
+ - plate
+ - play
+ - please
+ - pledge
+ - pluck
+ - plug
+ - plunge
+ - poem
+ - poet
+ - point
+ - polar
+ - pole
+ - police
+ - pond
+ - pony
+ - pool
+ - popular
+ - portion
+ - position
+ - possible
+ - post
+ - potato
+ - pottery
+ - poverty
+ - powder
+ - power
+ - practice
+ - praise
+ - predict
+ - prefer
+ - prepare
+ - present
+ - pretty
+ - prevent
+ - price
+ - pride
+ - primary
+ - print
+ - priority
+ - prison
+ - private
+ - prize
+ - problem
+ - process
+ - produce
+ - profit
+ - program
+ - project
+ - promote
+ - proof
+ - property
+ - prosper
+ - protect
+ - proud
+ - provide
+ - public
+ - pudding
+ - pull
+ - pulp
+ - pulse
+ - pumpkin
+ - punch
+ - pupil
+ - puppy
+ - purchase
+ - purity
+ - purpose
+ - purse
+ - push
+ - put
+ - puzzle
+ - pyramid
+ - quality
+ - quantum
+ - quarter
+ - question
+ - quick
+ - quit
+ - quiz
+ - quote
+ - rabbit
+ - raccoon
+ - race
+ - rack
+ - radar
+ - radio
+ - rail
+ - rain
+ - raise
+ - rally
+ - ramp
+ - ranch
+ - random
+ - range
+ - rapid
+ - rare
+ - rate
+ - rather
+ - raven
+ - raw
+ - razor
+ - ready
+ - real
+ - reason
+ - rebel
+ - rebuild
+ - recall
+ - receive
+ - recipe
+ - record
+ - recycle
+ - reduce
+ - reflect
+ - reform
+ - refuse
+ - region
+ - regret
+ - regular
+ - reject
+ - relax
+ - release
+ - relief
+ - rely
+ - remain
+ - remember
+ - remind
+ - remove
+ - render
+ - renew
+ - rent
+ - reopen
+ - repair
+ - repeat
+ - replace
+ - report
+ - require
+ - rescue
+ - resemble
+ - resist
+ - resource
+ - response
+ - result
+ - retire
+ - retreat
+ - return
+ - reunion
+ - reveal
+ - review
+ - reward
+ - rhythm
+ - rib
+ - ribbon
+ - rice
+ - rich
+ - ride
+ - ridge
+ - rifle
+ - right
+ - rigid
+ - ring
+ - riot
+ - ripple
+ - risk
+ - ritual
+ - rival
+ - river
+ - road
+ - roast
+ - robot
+ - robust
+ - rocket
+ - romance
+ - roof
+ - rookie
+ - room
+ - rose
+ - rotate
+ - rough
+ - round
+ - route
+ - royal
+ - rubber
+ - rude
+ - rug
+ - rule
+ - run
+ - runway
+ - rural
+ - sad
+ - saddle
+ - sadness
+ - safe
+ - sail
+ - salad
+ - salmon
+ - salon
+ - salt
+ - salute
+ - same
+ - sample
+ - sand
+ - satisfy
+ - satoshi
+ - sauce
+ - sausage
+ - save
+ - say
+ - scale
+ - scan
+ - scare
+ - scatter
+ - scene
+ - scheme
+ - school
+ - science
+ - scissors
+ - scorpion
+ - scout
+ - scrap
+ - screen
+ - script
+ - scrub
+ - sea
+ - search
+ - season
+ - seat
+ - second
+ - secret
+ - section
+ - security
+ - seed
+ - seek
+ - segment
+ - select
+ - sell
+ - seminar
+ - senior
+ - sense
+ - sentence
+ - series
+ - service
+ - session
+ - settle
+ - setup
+ - seven
+ - shadow
+ - shaft
+ - shallow
+ - share
+ - shed
+ - shell
+ - sheriff
+ - shield
+ - shift
+ - shine
+ - ship
+ - shiver
+ - shock
+ - shoe
+ - shoot
+ - shop
+ - short
+ - shoulder
+ - shove
+ - shrimp
+ - shrug
+ - shuffle
+ - shy
+ - sibling
+ - sick
+ - side
+ - siege
+ - sight
+ - sign
+ - silent
+ - silk
+ - silly
+ - silver
+ - similar
+ - simple
+ - since
+ - sing
+ - siren
+ - sister
+ - situate
+ - six
+ - size
+ - skate
+ - sketch
+ - ski
+ - skill
+ - skin
+ - skirt
+ - skull
+ - slab
+ - slam
+ - sleep
+ - slender
+ - slice
+ - slide
+ - slight
+ - slim
+ - slogan
+ - slot
+ - slow
+ - slush
+ - small
+ - smart
+ - smile
+ - smoke
+ - smooth
+ - snack
+ - snake
+ - snap
+ - sniff
+ - snow
+ - soap
+ - soccer
+ - social
+ - sock
+ - soda
+ - soft
+ - solar
+ - soldier
+ - solid
+ - solution
+ - solve
+ - someone
+ - song
+ - soon
+ - sorry
+ - sort
+ - soul
+ - sound
+ - soup
+ - source
+ - south
+ - space
+ - spare
+ - spatial
+ - spawn
+ - speak
+ - special
+ - speed
+ - spell
+ - spend
+ - sphere
+ - spice
+ - spider
+ - spike
+ - spin
+ - spirit
+ - split
+ - spoil
+ - sponsor
+ - spoon
+ - sport
+ - spot
+ - spray
+ - spread
+ - spring
+ - spy
+ - square
+ - squeeze
+ - squirrel
+ - stable
+ - stadium
+ - staff
+ - stage
+ - stairs
+ - stamp
+ - stand
+ - start
+ - state
+ - stay
+ - steak
+ - steel
+ - stem
+ - step
+ - stereo
+ - stick
+ - still
+ - sting
+ - stock
+ - stomach
+ - stone
+ - stool
+ - story
+ - stove
+ - strategy
+ - street
+ - strike
+ - strong
+ - struggle
+ - student
+ - stuff
+ - stumble
+ - style
+ - subject
+ - submit
+ - subway
+ - success
+ - such
+ - sudden
+ - suffer
+ - sugar
+ - suggest
+ - suit
+ - summer
+ - sun
+ - sunny
+ - sunset
+ - super
+ - supply
+ - supreme
+ - sure
+ - surface
+ - surge
+ - surprise
+ - surround
+ - survey
+ - suspect
+ - sustain
+ - swallow
+ - swamp
+ - swap
+ - swarm
+ - swear
+ - sweet
+ - swift
+ - swim
+ - swing
+ - switch
+ - sword
+ - symbol
+ - symptom
+ - syrup
+ - system
+ - table
+ - tackle
+ - tag
+ - tail
+ - talent
+ - talk
+ - tank
+ - tape
+ - target
+ - task
+ - taste
+ - tattoo
+ - taxi
+ - teach
+ - team
+ - tell
+ - ten
+ - tenant
+ - tennis
+ - tent
+ - term
+ - test
+ - text
+ - thank
+ - that
+ - theme
+ - then
+ - theory
+ - there
+ - they
+ - thing
+ - this
+ - thought
+ - three
+ - thrive
+ - throw
+ - thumb
+ - thunder
+ - ticket
+ - tide
+ - tiger
+ - tilt
+ - timber
+ - time
+ - tiny
+ - tip
+ - tired
+ - tissue
+ - title
+ - toast
+ - tobacco
+ - today
+ - toddler
+ - toe
+ - together
+ - toilet
+ - token
+ - tomato
+ - tomorrow
+ - tone
+ - tongue
+ - tonight
+ - tool
+ - tooth
+ - top
+ - topic
+ - topple
+ - torch
+ - tornado
+ - tortoise
+ - toss
+ - total
+ - tourist
+ - toward
+ - tower
+ - town
+ - toy
+ - track
+ - trade
+ - traffic
+ - tragic
+ - train
+ - transfer
+ - trap
+ - trash
+ - travel
+ - tray
+ - treat
+ - tree
+ - trend
+ - trial
+ - tribe
+ - trick
+ - trigger
+ - trim
+ - trip
+ - trophy
+ - trouble
+ - truck
+ - true
+ - truly
+ - trumpet
+ - trust
+ - truth
+ - try
+ - tube
+ - tuition
+ - tumble
+ - tuna
+ - tunnel
+ - turkey
+ - turn
+ - turtle
+ - twelve
+ - twenty
+ - twice
+ - twin
+ - twist
+ - two
+ - type
+ - typical
+ - ugly
+ - umbrella
+ - unable
+ - unaware
+ - uncle
+ - uncover
+ - under
+ - undo
+ - unfair
+ - unfold
+ - unhappy
+ - uniform
+ - unique
+ - unit
+ - universe
+ - unknown
+ - unlock
+ - until
+ - unusual
+ - unveil
+ - update
+ - upgrade
+ - uphold
+ - upon
+ - upper
+ - upset
+ - urban
+ - urge
+ - usage
+ - use
+ - used
+ - useful
+ - useless
+ - usual
+ - utility
+ - vacant
+ - vacuum
+ - vague
+ - valid
+ - valley
+ - valve
+ - van
+ - vanish
+ - vapor
+ - various
+ - vast
+ - vault
+ - vehicle
+ - velvet
+ - vendor
+ - venture
+ - venue
+ - verb
+ - verify
+ - version
+ - very
+ - vessel
+ - veteran
+ - viable
+ - vibrant
+ - vicious
+ - victory
+ - video
+ - view
+ - village
+ - vintage
+ - violin
+ - virtual
+ - virus
+ - visa
+ - visit
+ - visual
+ - vital
+ - vivid
+ - vocal
+ - voice
+ - void
+ - volcano
+ - volume
+ - vote
+ - voyage
+ - wage
+ - wagon
+ - wait
+ - walk
+ - wall
+ - walnut
+ - want
+ - warfare
+ - warm
+ - warrior
+ - wash
+ - wasp
+ - waste
+ - water
+ - wave
+ - way
+ - wealth
+ - weapon
+ - wear
+ - weasel
+ - weather
+ - web
+ - wedding
+ - weekend
+ - weird
+ - welcome
+ - west
+ - wet
+ - whale
+ - what
+ - wheat
+ - wheel
+ - when
+ - where
+ - whip
+ - whisper
+ - wide
+ - width
+ - wife
+ - wild
+ - will
+ - win
+ - window
+ - wine
+ - wing
+ - wink
+ - winner
+ - winter
+ - wire
+ - wisdom
+ - wise
+ - wish
+ - witness
+ - wolf
+ - woman
+ - wonder
+ - wood
+ - wool
+ - word
+ - work
+ - world
+ - worry
+ - worth
+ - wrap
+ - wreck
+ - wrestle
+ - wrist
+ - write
+ - wrong
+ - yard
+ - year
+ - yellow
+ - you
+ - young
+ - youth
+ - zebra
+ - zero
+ - zone
+ - zoo
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index de7e570..91f31ec 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,15 +1,19 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
+import org.myhush.silentdragon.Deps
buildscript {
- ext.kotlin_version = '1.3.50'
repositories {
google()
jcenter()
mavenCentral()
+ maven {
+ url 'https://maven.fabric.io/public'
+ }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.0'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${Deps.kotlinVersion}"
+ classpath 'io.fabric.tools:gradle:1.31.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
@@ -21,6 +25,7 @@ allprojects {
google()
jcenter()
mavenCentral()
+ maven { url 'https://jitpack.io' }
}
}
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts
new file mode 100644
index 0000000..c39a297
--- /dev/null
+++ b/buildSrc/build.gradle.kts
@@ -0,0 +1,7 @@
+plugins {
+ `kotlin-dsl`
+}
+
+repositories {
+ jcenter()
+}
\ No newline at end of file
diff --git a/buildSrc/src/main/java/org/myhush/silentdragon/Dependencies.kt b/buildSrc/src/main/java/org/myhush/silentdragon/Dependencies.kt
new file mode 100644
index 0000000..89d6408
--- /dev/null
+++ b/buildSrc/src/main/java/org/myhush/silentdragon/Dependencies.kt
@@ -0,0 +1,55 @@
+package org.myhush.silentdragon
+
+object Deps {
+ const val kotlinVersion = "1.3.72"
+
+ const val compileSdkVersion = 29
+ const val buildToolsVersion = "29.0.3"
+ const val minSdkVersion = 17
+ const val targetSdkVersion = 29
+
+ object Kotlin : Version(kotlinVersion) {
+ val STDLIB = "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$version"
+ object Coroutines : Version("1.3.2") {
+ val ANDROID = "org.jetbrains.kotlinx:kotlinx-coroutines-android:$version"
+ val CORE = "org.jetbrains.kotlinx:kotlinx-coroutines-core:$version"
+ }
+ }
+ object AndroidX {
+ //const val ANNOTATION = "androidx.annotation:annotation:1.0.0"
+ const val APPCOMPAT = "androidx.appcompat:appcompat:1.0.0"
+ const val CONSTRAINT_LAYOUT = "androidx.constraintlayout:constraintlayout:1.1.3"
+ const val CORE_KTX = "androidx.core:core-ktx:1.3.0"
+ const val FRAGMENT_KTX = "androidx.fragment:fragment-ktx:1.1.0-beta01"
+ const val LEGACY = "androidx.legacy:legacy-support-v4:1.0.0"
+ const val MULTIDEX = "androidx.multidex:multidex:2.0.1"
+ const val PAGING = "androidx.paging:paging-runtime-ktx:2.1.2"
+ const val VECTOR_DRAWABLE = "androidx.vectordrawable:vectordrawable:1.0.0"
+
+ object Navigation : Version("2.1.0") {
+ val FRAGMENT_KTX = "androidx.navigation:navigation-fragment-ktx:$version"
+ val UI_KTX = "androidx.navigation:navigation-ui-ktx:$version"
+ }
+ object Room : Version("2.2.5") {
+ val ROOM_COMPILER = "androidx.room:room-compiler:$version"
+ val ROOM_KTX = "androidx.room:room-ktx:$version"
+ }
+ }
+ // from Demo App SDK
+ object Hush {
+ val ANDROID_WALLET_PLUGINS = "cash.z.ecc.android:zcash-android-wallet-plugins:1.0.0"
+ val KOTLIN_BIP39 = "cash.z.ecc.android:kotlin-bip39:1.0.0-beta09"
+ object Sdk : Version("1.1.0-beta02") {
+ val MAINNET = "cash.z.ecc.android:sdk-mainnet:$version"
+ //val TESTNET = "cash.z.ecc.android:sdk-testnet:$version"
+ }
+ }
+ object Grpc : Version("1.25.0") {
+ val ANDROID = "io.grpc:grpc-android:$version"
+ val OKHTTP = "io.grpc:grpc-okhttp:$version"
+ val PROTOBUG ="io.grpc:grpc-protobuf-lite:$version"
+ val STUB = "io.grpc:grpc-stub:$version"
+ }
+}
+
+open class Version(@JvmField val version: String)