fallback to use transfer if user scanned a paymv qr after selecting a card

This commit is contained in:
2026-05-30 22:29:28 +05:00
parent ae8ad24d13
commit bc958e2df6
3 changed files with 45 additions and 1 deletions
@@ -87,7 +87,32 @@ class CardsFragment : Fragment() {
R.id.nav_transfer, TransferFragment.newInstanceFromBmlQr(bmlUrl ?: raw, pendingQrAccountNumber)
)
} else {
Toast.makeText(requireContext(), R.string.transfer_qr_invalid, Toast.LENGTH_SHORT).show()
val qr = PaymvQrParser.parse(raw)
if (qr?.accountNumber != null) {
// PayMV QR — cards are not supported for this payment type.
// Navigate to transfer with the recipient pre-filled; use default account if configured.
Toast.makeText(requireContext(), R.string.card_qr_paymv_unsupported, Toast.LENGTH_SHORT).show()
val defaultFromNumber = store.getDefaultAccountNumber()
val fragment = if (defaultFromNumber != null) {
TransferFragment.newInstanceFromQrWithFrom(
accountNumber = qr.accountNumber,
displayName = qr.merchantName ?: qr.accountNumber,
amount = qr.amount,
remarks = qr.purpose,
fromAccountNumber = defaultFromNumber
)
} else {
TransferFragment.newInstanceFromQr(
accountNumber = qr.accountNumber,
displayName = qr.merchantName ?: qr.accountNumber,
amount = qr.amount,
remarks = qr.purpose
)
}
(requireActivity() as HomeActivity).navigateTo(R.id.nav_transfer, fragment)
} else {
Toast.makeText(requireContext(), R.string.transfer_qr_invalid, Toast.LENGTH_SHORT).show()
}
}
pendingQrAccountNumber = null
}
@@ -202,6 +202,24 @@ class TransferFragment : Fragment() {
if (remarks != null) putString(ARG_REMARKS_PREFILL, remarks)
}
}
fun newInstanceFromQrWithFrom(
accountNumber: String,
displayName: String,
amount: String?,
remarks: String?,
fromAccountNumber: String
) = TransferFragment().apply {
arguments = Bundle().apply {
putString(ARG_ACCOUNT, accountNumber)
putString(ARG_NAME, displayName)
putString(ARG_SUBTITLE, accountNumber)
putString(ARG_COLOR, "#607D8B")
putString(ARG_FROM_ACCOUNT, fromAccountNumber)
if (amount != null) putString(ARG_AMOUNT_PREFILL, amount)
if (remarks != null) putString(ARG_REMARKS_PREFILL, remarks)
}
}
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+1
View File
@@ -241,6 +241,7 @@
<string name="transfer_scan_qr">Scan to Pay</string>
<string name="qr_pick_image">Pick image</string>
<string name="transfer_qr_invalid">Invalid or unsupported QR code</string>
<string name="card_qr_paymv_unsupported">PayMV QR is not supported for card payments — switching to transfer</string>
<string name="qr_camera_permission_title">Camera permission required</string>
<string name="qr_camera_permission_message">Camera access is needed to scan QR codes. Please grant the permission in Settings.</string>
<string name="camera_permission_profile_message">Camera access is needed to take a photo. Please grant the permission in Settings.</string>