Populate amt and memo when scanning QR
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user