Browse Source

Wire up send Tx

connman
Aditya Kulkarni 5 years ago
parent
commit
ca132cf9b8
  1. 29
      app/src/main/java/com/adityapk/zcash/zqwandroid/DataModel.kt
  2. 32
      app/src/main/java/com/adityapk/zcash/zqwandroid/MainActivity.kt
  3. 23
      app/src/main/java/com/adityapk/zcash/zqwandroid/QrReaderActivity.kt
  4. 8
      app/src/main/java/com/adityapk/zcash/zqwandroid/SendActivity.kt
  5. 5
      app/src/main/java/com/adityapk/zcash/zqwandroid/TxDetailsActivity.kt
  6. 3
      app/src/main/java/com/adityapk/zcash/zqwandroid/UnconfirmedTxItemFragment.kt

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

@ -1,12 +1,12 @@
package com.adityapk.zcash.zqwandroid
import android.content.Context
import android.util.Log
import com.beust.klaxon.JsonObject
import com.beust.klaxon.Klaxon
import com.beust.klaxon.Parser
import android.R.id.edit
import android.content.Context
import android.content.SharedPreferences
import com.beust.klaxon.json
import okhttp3.WebSocket
object DataModel {
@ -17,6 +17,8 @@ object DataModel {
var mainResponseData : MainResponse? = null
var transactions : List<TransactionItem> ?= null
var ws : WebSocket? = null
fun clear() {
mainResponseData = null
transactions = null
@ -52,4 +54,23 @@ object DataModel {
val settings = context.getSharedPreferences("ConnInfo", 0)
return settings.getString("connstring", null)
}
fun sendTx(tx: TransactionItem) {
val payload = json { obj("command" to "sendTx", "tx" to obj(
"amount" to tx.amount,
"to" to tx.addr,
"memo" to tx.memo
)) }
Log.w(TAG, payload.toJsonString(true))
ws?.send(payload.toJsonString())
}
fun makeAPICalls() {
ws?.send(json { obj("command" to "getInfo") }.toJsonString())
ws?.send(json { obj("command" to "getTransactions")}.toJsonString())
}
private val TAG = "DataModel"
}

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

@ -6,6 +6,7 @@ import android.content.Intent
import android.graphics.Typeface
import android.net.Uri
import android.os.Bundle
import android.os.Handler
import android.support.constraint.ConstraintLayout
import android.support.v7.app.AppCompatActivity
import android.util.Log
@ -23,8 +24,7 @@ import okhttp3.*
import okio.ByteString
import java.text.DecimalFormat
import android.widget.TextView
import com.adityapk.zcash.zqwandroid.DataModel.makeAPICalls
class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInteractionListener , UnconfirmedTxItemFragment.OnFragmentInteractionListener{
@ -66,7 +66,7 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
}
makeConnection()
makeAPICalls()
DataModel.makeAPICalls()
txtMainBalanceUSD.setOnClickListener {
Toast.makeText(applicationContext, "1 ZEC = $${DecimalFormat("#.##")
@ -76,13 +76,12 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
updateUI()
}
private var ws : WebSocket? = null
enum class ConnectionStatus(val status: Int) {
DISCONNECTED(1),
CONNECTING(2),
CONNECTED(3)
}
private var connStatus: ConnectionStatus = ConnectionStatus.DISCONNECTED
// Attempt a connection to the server. If there is no saved connection, we'll set the connection status
@ -92,7 +91,7 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
if (connString.isNullOrBlank()) {
// The user might have just disconnected, so make sure we are disconnected
ws?.close(1000, "disconnected")
DataModel.ws?.close(1000, "disconnected")
return
}
@ -108,16 +107,11 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
val request = Request.Builder().url(connString).build()
val listener = EchoWebSocketListener()
ws = client.newWebSocket(request, listener)
DataModel.ws = client.newWebSocket(request, listener)
updateUI()
}
private fun makeAPICalls() {
ws?.send(json { obj("command" to "getInfo") }.toJsonString())
ws?.send(json { obj("command" to "getTransactions")}.toJsonString())
}
private fun setMainStatus(status: String) {
lblBalance.text = ""
txtMainBalanceUSD.text = ""
@ -154,8 +148,11 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
txtMainBalance.text = "ZEC " + balText.substring(0, balText.length - 4)
balanceSmall.text = balText.substring(balText.length - 4, balText.length)
txtMainBalanceUSD.text = "$ " + DecimalFormat("#,##0.00").format(bal * zPrice)
addPastTransactions(DataModel.transactions)
Handler().post {
run {
addPastTransactions(DataModel.transactions)
}
}
}
}
}
@ -208,7 +205,7 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
var oddeven = "odd"
for (tx in confirmed) {
fragTx.add(
txList.id ,
txList.id,
TransactionItemFragment.newInstance(Klaxon().toJsonString(tx), oddeven),
"tag1"
)
@ -256,10 +253,11 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
override fun onResume() {
makeConnection()
makeAPICalls()
DataModel.makeAPICalls()
super.onResume()
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
when(requestCode) {
QrReaderActivity.REQUEST_CONNDATA -> {
@ -274,7 +272,7 @@ class MainActivity : AppCompatActivity(), TransactionItemFragment.OnFragmentInte
DataModel.setConnString(data?.dataString!!, applicationContext)
makeConnection()
makeAPICalls()
DataModel.makeAPICalls()
}
}
}

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

@ -87,18 +87,21 @@ class QrReaderActivity : AppCompatActivity() {
val code = intent.getIntExtra("REQUEST_CODE", 0)
if (barcodes.size() != 0) {
barcodeInfo.text = barcodes.valueAt(0).displayValue
// See if this the data is of the right format
if (code == REQUEST_CONNDATA && !barcodeInfo.text.startsWith("ws")) {
return
runOnUiThread {
barcodeInfo.text = barcodes.valueAt(0).displayValue
// See if this the data is of the right format
if (code == REQUEST_CONNDATA && !barcodeInfo.text.startsWith("ws")) {
return@runOnUiThread
}
// The data seems valid, so return it.
val data = Intent()
data.data = Uri.parse(barcodes.valueAt(0).displayValue)
setResult(Activity.RESULT_OK, data)
finish()
}
// The data seems valid, so return it.
val data = Intent()
data.data = Uri.parse(barcodes.valueAt(0).displayValue)
setResult(Activity.RESULT_OK, data)
finish()
}
}
})

8
app/src/main/java/com/adityapk/zcash/zqwandroid/SendActivity.kt

@ -149,6 +149,9 @@ class SendActivity : AppCompatActivity() {
REQUEST_CONFIRM -> {
if (resultCode == Activity.RESULT_OK) {
// Send
val tx = Klaxon().parse<DataModel.TransactionItem>(data?.dataString!!)
DataModel.sendTx(tx!!)
finish()
} else {
// Cancel
@ -157,6 +160,11 @@ class SendActivity : AppCompatActivity() {
}
}
override fun onStart() {
super.onStart()
setVisible(true)
}
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) ||

5
app/src/main/java/com/adityapk/zcash/zqwandroid/TxDetailsActivity.kt

@ -62,7 +62,10 @@ class TxDetailsActivity : AppCompatActivity() {
btnExternal.setOnClickListener { v ->
if (tx?.type == "confirm") {
setResult(Activity.RESULT_OK)
val data = Intent()
data.data = Uri.parse(Klaxon().toJsonString(tx))
setResult(Activity.RESULT_OK, data);
finish()
} else {
val browserIntent = Intent(

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

@ -61,8 +61,7 @@ class UnconfirmedTxItemFragment : Fragment() {
val txt = view.findViewById<TextView>(R.id.txtUnconfirmedTx)
txt.text = (if (tx?.type == "send") "Sending" else "Receiving") +
" ZEC " + (if (tx?.type == "send") "" else "+") +
DecimalFormat("#0.00########").format(kotlin.math.abs(tx?.amount?.toDoubleOrNull() ?: 0.0))
" ZEC " + DecimalFormat("#0.00########").format(kotlin.math.abs(tx?.amount?.toDoubleOrNull() ?: 0.0))
return view
}

Loading…
Cancel
Save