Populate amt and memo when scanning QR

This commit is contained in:
fekt
2023-02-16 22:22:39 -05:00
parent 565cd84761
commit e6fd1d1e23

View File

@@ -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)
} }
} }