diff --git a/app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt b/app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt index c145a9e..e683a4f 100644 --- a/app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt +++ b/app/src/main/java/cash/z/ecc/android/ui/scan/ScanFragment.kt @@ -1,5 +1,6 @@ package cash.z.ecc.android.ui.scan +import android.net.UrlQuerySanitizer import android.os.Bundle import android.util.Log import android.view.LayoutInflater @@ -16,14 +17,14 @@ import androidx.window.layout.WindowMetricsCalculator import cash.z.ecc.android.R import cash.z.ecc.android.databinding.FragmentScanBinding 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.send.SendViewModel import kotlinx.coroutines.launch import java.util.concurrent.ExecutorService import java.util.concurrent.Executors import kotlin.math.abs -import kotlin.math.max -import kotlin.math.min class ScanFragment : BaseFragment() { @@ -322,15 +323,28 @@ class ScanFragment : BaseFragment() { private fun onQrScanned(qrContent: String, image: ImageProxy) { resumedScope.launch { - val parsed = viewModel.parse(qrContent) - if (parsed == null) { + val address = viewModel.parse(qrContent) + 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 _fragmentCameraBinding?.textScanError?.text = getString(R.string.scan_invalid_address, network, qrContent) image.close() } else { /* continue scanning*/ _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) } }