From f90d83b59e1de43349fc5da3912066e031b4ff61 Mon Sep 17 00:00:00 2001 From: Shihaam Abdul Rahman Date: Sat, 30 May 2026 23:22:10 +0500 Subject: [PATCH] improve share to scan to pay flow: fetching merchant details --- .../java/sh/sar/basedbank/ui/home/HomeActivity.kt | 12 +++++++----- .../sh/sar/basedbank/ui/home/TransferFragment.kt | 8 ++++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt b/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt index e46b770..0085964 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/HomeActivity.kt @@ -446,18 +446,20 @@ fun applyNavLabelVisibility() { } private fun routeSharedQrText(text: String) { + val store = CredentialStore(this) val bmlUrl = sh.sar.basedbank.util.PaymvQrParser.extractBmlGatewayUrl(text) if (text.startsWith("https://ebanking.bankofmaldives.com.mv/qrpay/") || bmlUrl != null) { - navigateTo(R.id.nav_transfer, TransferFragment.newInstanceFromBmlQr(bmlUrl ?: text)) + navigateTo(R.id.nav_transfer, TransferFragment.newInstanceFromBmlQr(bmlUrl ?: text, store.getDefaultCardAccountNumber())) return } val qr = sh.sar.basedbank.util.PaymvQrParser.parse(text) if (qr?.accountNumber != null) { navigateTo(R.id.nav_transfer, TransferFragment.newInstanceFromQr( - accountNumber = qr.accountNumber, - displayName = qr.merchantName ?: qr.accountNumber, - amount = qr.amount, - remarks = qr.purpose + accountNumber = qr.accountNumber, + displayName = qr.merchantName ?: qr.accountNumber, + amount = qr.amount, + remarks = qr.purpose, + fromAccountNumber = store.getDefaultAccountNumber() )) } else { Toast.makeText(this, R.string.transfer_qr_invalid, Toast.LENGTH_SHORT).show() diff --git a/app/src/main/java/sh/sar/basedbank/ui/home/TransferFragment.kt b/app/src/main/java/sh/sar/basedbank/ui/home/TransferFragment.kt index 3ce4568..b5d04af 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/home/TransferFragment.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/home/TransferFragment.kt @@ -422,6 +422,14 @@ class TransferFragment : Fragment() { updateTransferButton() } } + + // On a cold start (e.g. share intent), anyBmlSession() may be null when + // onViewCreated runs. Retry the lookup once sessions are available. + val pendingBmlQrUrl = arguments?.getString(ARG_BML_QR_URL) + if (pendingBmlQrUrl != null && bmlQrInfo == null && binding.tilTo.visibility == View.VISIBLE) { + val app = requireActivity().application as BasedBankApp + if (app.anyBmlSession() != null) lookupBmlQrMerchant(pendingBmlQrUrl) + } } }