improve share to scan to pay flow: fetching merchant details

This commit is contained in:
2026-05-30 23:22:10 +05:00
parent a03b1b1682
commit f90d83b59e
2 changed files with 15 additions and 5 deletions
@@ -446,18 +446,20 @@ fun applyNavLabelVisibility() {
} }
private fun routeSharedQrText(text: String) { private fun routeSharedQrText(text: String) {
val store = CredentialStore(this)
val bmlUrl = sh.sar.basedbank.util.PaymvQrParser.extractBmlGatewayUrl(text) val bmlUrl = sh.sar.basedbank.util.PaymvQrParser.extractBmlGatewayUrl(text)
if (text.startsWith("https://ebanking.bankofmaldives.com.mv/qrpay/") || bmlUrl != null) { 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 return
} }
val qr = sh.sar.basedbank.util.PaymvQrParser.parse(text) val qr = sh.sar.basedbank.util.PaymvQrParser.parse(text)
if (qr?.accountNumber != null) { if (qr?.accountNumber != null) {
navigateTo(R.id.nav_transfer, TransferFragment.newInstanceFromQr( navigateTo(R.id.nav_transfer, TransferFragment.newInstanceFromQr(
accountNumber = qr.accountNumber, accountNumber = qr.accountNumber,
displayName = qr.merchantName ?: qr.accountNumber, displayName = qr.merchantName ?: qr.accountNumber,
amount = qr.amount, amount = qr.amount,
remarks = qr.purpose remarks = qr.purpose,
fromAccountNumber = store.getDefaultAccountNumber()
)) ))
} else { } else {
Toast.makeText(this, R.string.transfer_qr_invalid, Toast.LENGTH_SHORT).show() Toast.makeText(this, R.string.transfer_qr_invalid, Toast.LENGTH_SHORT).show()
@@ -422,6 +422,14 @@ class TransferFragment : Fragment() {
updateTransferButton() 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)
}
} }
} }