Browse Source

Improve handling

connman
adityapk00 5 years ago
parent
commit
8e8fa36260
  1. 25
      app/src/main/java/com/adityapk/zcash/zqwandroid/DataModel.kt
  2. 3
      app/src/main/java/com/adityapk/zcash/zqwandroid/MainActivity.kt
  3. 14
      app/src/main/java/com/adityapk/zcash/zqwandroid/QrReaderActivity.kt
  4. 7
      app/src/main/res/layout/activity_qr_reader.xml

25
app/src/main/java/com/adityapk/zcash/zqwandroid/DataModel.kt

@ -20,6 +20,10 @@ object DataModel {
var mainResponseData : MainResponse? = null
var transactions : List<TransactionItem> ?= null
fun isTestnet(): Boolean {
return mainResponseData?.tokenName != "ZEC"
}
var ws : WebSocket? = null
fun clear() {
@ -118,15 +122,24 @@ object DataModel {
}
fun makeAPICalls() {
ws?.send(encrypt(json { obj("command" to "getInfo") }.toJsonString()))
ws?.send(encrypt(json { obj("command" to "getTransactions")}.toJsonString()))
if (getSecret() == null) {
// Connected, but we don't have a secret, so we can't actually connect.
ws?.close(1000, "No shared secret, can't connect")
} else {
ws?.send(encrypt(json { obj("command" to "getInfo") }.toJsonString()))
ws?.send(encrypt(json { obj("command" to "getTransactions") }.toJsonString()))
}
}
fun isValidAddress(a: String) : Boolean {
return Regex("^z[a-z0-9]{77}$", RegexOption.IGNORE_CASE).matches(a) ||
Regex("^ztestsapling[a-z0-9]{76}", RegexOption.IGNORE_CASE).matches(a) ||
Regex("^t[a-z0-9]{34}$", RegexOption.IGNORE_CASE).matches(a)
return if (isTestnet()) {
Regex("^ztestsapling[a-z0-9]{76}", RegexOption.IGNORE_CASE).matches(a) ||
Regex("^tm[a-z0-9]{33}$", RegexOption.IGNORE_CASE).matches(a)
} else {
Regex("^z[a-z0-9]{77}$", RegexOption.IGNORE_CASE).matches(a) ||
Regex("^t[a-z0-9]{34}$", RegexOption.IGNORE_CASE).matches(a)
}
}
@ -209,7 +222,7 @@ object DataModel {
val secretHex = settings.getString("secret", "")
if (secretHex.isNullOrEmpty()) {
return null;
return null
}
return secretHex.hexStringToByteArray(Sodium.crypto_secretbox_keybytes())

3
app/src/main/java/com/adityapk/zcash/zqwandroid/MainActivity.kt

@ -153,7 +153,8 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
swiperefresh.isRefreshing = false
// Hide the reconnect button if there is no connection string
if (DataModel.getConnString(ZQWApp.appContext!!).isNullOrBlank()) {
if (DataModel.getConnString(ZQWApp.appContext!!).isNullOrBlank() ||
DataModel.getSecret() == null) {
btnReconnect.visibility = Button.GONE
lblConnectionOr.visibility = TextView.GONE
} else {

14
app/src/main/java/com/adityapk/zcash/zqwandroid/QrReaderActivity.kt

@ -36,10 +36,11 @@ class QrReaderActivity : AppCompatActivity() {
if (code == REQUEST_ADDRESS)
txtQrCodeHelp.text = ""
lblErrorMsg.text = ""
setupCamera()
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
when (requestCode) {
50 -> {
@ -87,7 +88,6 @@ class QrReaderActivity : AppCompatActivity() {
finish()
}
barcodeDetector.setProcessor(object : Detector.Processor<Barcode> {
override fun release() {}
@ -103,11 +103,21 @@ class QrReaderActivity : AppCompatActivity() {
// See if this the data is of the right format
if (code == REQUEST_CONNDATA && !barcodeInfo.startsWith("ws")) {
Log.i(TAG, "Not a connection")
var err = barcodeInfo
if (err.length > 48) {
err = err.substring(0, 22) + "...." + err.substring(err.length - 22, err.length)
}
lblErrorMsg.text = "\"$err\" is not a connection string"
return@runOnUiThread
}
if (code == REQUEST_ADDRESS && !DataModel.isValidAddress(StringBuilder(barcodeInfo ?: "").toString())) {
Log.i(TAG, "Not an address")
var err = barcodeInfo
if (err.length > 48) {
err = err.substring(0, 22) + "...." + err.substring(err.length - 22, err.length)
}
lblErrorMsg.text = "\"$err\" is not a valid address"
return@runOnUiThread
}

7
app/src/main/res/layout/activity_qr_reader.xml

@ -42,4 +42,11 @@
app:layout_constraintBottom_toBottomOf="@+id/camera_view" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="8dp"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/lblErrorMsg" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/btnQrCodeCancel" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" android:textAlignment="center" android:textColor="@color/colorAccent"/>
</android.support.constraint.ConstraintLayout>
Loading…
Cancel
Save