Browse Source

Populate amt and memo when scanning QR

pull/15/head
fekt 1 year ago
parent
commit
e6fd1d1e23
  1. 24
      app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt

24
app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt

@ -1,5 +1,6 @@
package cash.z.ecc.android.ui.scan package cash.z.ecc.android.ui.scan
import android.net.UrlQuerySanitizer
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
@ -16,14 +17,14 @@ import androidx.window.layout.WindowMetricsCalculator
import cash.z.ecc.android.R import cash.z.ecc.android.R
import cash.z.ecc.android.databinding.FragmentScanBinding import cash.z.ecc.android.databinding.FragmentScanBinding
import cash.z.ecc.android.ext.onClickNavBack import cash.z.ecc.android.ext.onClickNavBack
import cash.z.ecc.android.sdk.ext.convertZecToZatoshi
import cash.z.ecc.android.sdk.ext.safelyConvertToBigDecimal
import cash.z.ecc.android.ui.base.BaseFragment import cash.z.ecc.android.ui.base.BaseFragment
import cash.z.ecc.android.ui.send.SendViewModel import cash.z.ecc.android.ui.send.SendViewModel
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.util.concurrent.ExecutorService import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors import java.util.concurrent.Executors
import kotlin.math.abs import kotlin.math.abs
import kotlin.math.max
import kotlin.math.min
class ScanFragment : BaseFragment<FragmentScanBinding>() { class ScanFragment : BaseFragment<FragmentScanBinding>() {
@ -322,15 +323,28 @@ class ScanFragment : BaseFragment<FragmentScanBinding>() {
private fun onQrScanned(qrContent: String, image: ImageProxy) { private fun onQrScanned(qrContent: String, image: ImageProxy) {
resumedScope.launch { resumedScope.launch {
val parsed = viewModel.parse(qrContent) val address = viewModel.parse(qrContent)
if (parsed == null) { val sanitizer = UrlQuerySanitizer(qrContent)
val amt = sanitizer.getValue("amt")
val memo = sanitizer.getValue("memo")
/*
Log.d(TAG, "qrContent: $qrContent")
Log.d(TAG, "address: $address")
Log.d(TAG, "amt: $amt")
Log.d(TAG, "memo: $memo")
*/
if (address == null) {
val network = viewModel.networkName val network = viewModel.networkName
_fragmentCameraBinding?.textScanError?.text = _fragmentCameraBinding?.textScanError?.text =
getString(R.string.scan_invalid_address, network, qrContent) getString(R.string.scan_invalid_address, network, qrContent)
image.close() image.close()
} else { /* continue scanning*/ } else { /* continue scanning*/
_fragmentCameraBinding?.textScanError?.text = "" _fragmentCameraBinding?.textScanError?.text = ""
sendViewModel.toAddress = parsed sendViewModel.toAddress = address
sendViewModel.zatoshiAmount = amt.safelyConvertToBigDecimal().convertZecToZatoshi()
sendViewModel.memo = memo
mainActivity?.safeNavigate(R.id.action_nav_scan_to_nav_send) mainActivity?.safeNavigate(R.id.action_nav_scan_to_nav_send)
} }
} }

Loading…
Cancel
Save