Browse Source

Merge pull request 'working on qr code scanner functionality' (#13) from jahway603 into master

Reviewed-on: hush/SilentDragonAndroid#13
jahway603 3 years ago
parent
commit
a25fd218f0
  1. 2
      app/build.gradle
  2. 42
      app/src/main/java/org/myhush/silentdragon/QrReaderActivity.kt
  3. 8
      app/src/main/java/org/myhush/silentdragon/ReceiveActivity.kt
  4. 6
      app/src/main/java/org/myhush/silentdragon/SendActivity.kt

2
app/build.gradle

@ -87,7 +87,7 @@ dependencies {
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@aar'
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
implementation 'com.journeyapps:zxing-android-embedded:4.3.0@aar'
implementation 'com.google.zxing:core:3.3.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'

42
app/src/main/java/org/myhush/silentdragon/QrReaderActivity.kt

@ -96,7 +96,7 @@ class QrReaderActivity : AppCompatActivity() {
builder.setPositiveButton(getString(R.string.ok)) { dialog, which ->
run {
val txt = input.text.toString()
processText(txt)
processQrCodeText(txt)
}
}
builder.setNegativeButton(getString(R.string.cancel)) { dialog, which -> dialog.cancel() }
@ -123,13 +123,13 @@ class QrReaderActivity : AppCompatActivity() {
captureManager.onDestroy()
}
private fun processText(barcodeInfo: String) {
private fun processQrCodeText(qrcodeInfo: String) {
val code = intent.getIntExtra("REQUEST_CODE", 0)
// See if this the data is of the right format
if (code == REQUEST_CONNDATA && !barcodeInfo.startsWith("ws")) {
// Check if data is websocket connection
if (code == REQUEST_CONNDATA && !qrcodeInfo.startsWith("ws")) {
Log.i(TAG, "Not a connection")
var err = barcodeInfo
var err = qrcodeInfo
if (err.length > 48) {
err = err.substring(0, 22) + "...." + err.substring(err.length - 22, err.length)
}
@ -137,11 +137,12 @@ class QrReaderActivity : AppCompatActivity() {
return
}
// Check if data is valid hush z-address
if (code == REQUEST_ADDRESS &&
!DataModel.isValidAddress(StringBuilder(barcodeInfo).toString()) &&
!barcodeInfo.startsWith("hush:")) {
!DataModel.isValidAddress(StringBuilder(qrcodeInfo).toString()) &&
!qrcodeInfo.startsWith("hush:")) {
Log.i(TAG, "Not an address")
var err = barcodeInfo
var err = qrcodeInfo
if (err.length > 48) {
err = err.substring(0, 22) + "...." + err.substring(err.length - 22, err.length)
}
@ -149,37 +150,20 @@ class QrReaderActivity : AppCompatActivity() {
return
}
// The data seems valid, so return it.
// The data seems valid, so return it
val data = Intent()
// Payment URIs are often formatted as "hush:<addr>", but this causes parsing problems.
// So change it to hush://<addr>, so that it parses properly
if (barcodeInfo.startsWith("hush:") && !barcodeInfo.startsWith("hush://")) {
data.data = Uri.parse(barcodeInfo.replaceFirst("hush:", "hush://"))
if (qrcodeInfo.startsWith("hush:") && !qrcodeInfo.startsWith("hush://")) {
data.data = Uri.parse(qrcodeInfo.replaceFirst("hush:", "hush://"))
} else {
data.data = Uri.parse(barcodeInfo)
data.data = Uri.parse(qrcodeInfo)
}
setResult(Activity.RESULT_OK, data)
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"
}

8
app/src/main/java/org/myhush/silentdragon/ReceiveActivity.kt

@ -43,8 +43,6 @@ class ReceiveActivity : AppCompatActivity() {
override fun onTabSelected(p0: TabLayout.Tab?) {
if (p0?.text == "zAddr") {
setZAddr()
} else {
setTAddr()
}
}
@ -94,12 +92,6 @@ class ReceiveActivity : AppCompatActivity() {
}
}
fun setTAddr() {
addr = DataModel.mainResponseData?.tAddress ?: ""
txtRcvAddrTitle.text = getString(R.string.your_hush_transparent_address)
setAddr()
}
fun setZAddr() {
addr = DataModel.mainResponseData?.saplingAddress ?: ""
txtRcvAddrTitle.text = getString(R.string.your_hush_shielded_address)

6
app/src/main/java/org/myhush/silentdragon/SendActivity.kt

@ -15,6 +15,7 @@ import android.text.Editable
import android.text.InputType
import android.text.SpannableStringBuilder
import android.text.TextWatcher
import android.util.Log
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
import android.widget.TextView
@ -24,10 +25,10 @@ import kotlinx.android.synthetic.main.activity_send.*
import kotlinx.android.synthetic.main.content_send.*
import java.text.DecimalFormat
class SendActivity : AppCompatActivity() {
private val REQUEST_CONFIRM = 2
private val TAG = "SendActivity"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -51,7 +52,7 @@ class SendActivity : AppCompatActivity() {
if (intent.getBooleanExtra("includeReplyTo", false))
chkIncludeReplyTo.isChecked = true
imageButton.setOnClickListener { view ->
imageButton.setOnClickListener {
val intent = Intent(this, QrReaderActivity::class.java)
intent.putExtra("REQUEST_CODE",
QrReaderActivity.REQUEST_ADDRESS
@ -264,6 +265,7 @@ class SendActivity : AppCompatActivity() {
when (requestCode) {
QrReaderActivity.REQUEST_ADDRESS -> {
if (resultCode == Activity.RESULT_OK) {
Log.i(TAG, "Send Activity got result for QrCode: ${data?.dataString}")
if (data?.scheme == "hush") {
sendAddress.setText(data.data?.host ?: "", TextView.BufferType.EDITABLE)

Loading…
Cancel
Save