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 9418aa6..f4a0db5 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 @@ -127,7 +127,10 @@ class TransferFragment : Fragment() { // BML card/gateway QR — hand off to dedicated payment screen if (raw.startsWith("https://ebanking.bankofmaldives.com.mv/qrpay/") || raw.startsWith("https://pay.bml.com.mv/app/")) { - (requireActivity() as HomeActivity).navigateTo(R.id.nav_transfer, TransferFragment.newInstanceFromBmlQr(raw)) + val fromCard = selectedAccount?.takeIf { + it.profileType == "BML_PREPAID" || it.profileType == "BML_CREDIT" || it.profileType == "BML_DEBIT" + } + (requireActivity() as HomeActivity).navigateTo(R.id.nav_transfer, TransferFragment.newInstanceFromBmlQr(raw, fromCard?.accountNumber)) return@registerForActivityResult } @@ -297,7 +300,6 @@ class TransferFragment : Fragment() { binding.tvToBalance.visibility = View.GONE binding.ivToPhoto.scaleType = android.widget.ImageView.ScaleType.CENTER_CROP binding.ivToPhoto.setImageBitmap(makeInitialsBitmap(info.merchantName, "#0066A1")) - binding.btnClearToInfo.visibility = View.GONE binding.cardToInfo.visibility = View.VISIBLE // Pre-fill amount if dynamic QR @@ -353,6 +355,14 @@ class TransferFragment : Fragment() { binding.actvFrom.setOnItemClickListener { _, _, position, _ -> val picked = accountDropdownAdapter?.getAccount(position) ?: return@setOnItemClickListener + if (bmlQrInfo != null) { + val isCard = picked.profileType == "BML_PREPAID" || picked.profileType == "BML_CREDIT" || picked.profileType == "BML_DEBIT" + if (!isCard) { + Toast.makeText(requireContext(), "Unsupported for BML QR — select a card", Toast.LENGTH_SHORT).show() + binding.actvFrom.setText("", false) + return@setOnItemClickListener + } + } selectedAccount = picked updateAmountPrefix(picked) showFromCard(picked) @@ -506,6 +516,14 @@ class TransferFragment : Fragment() { binding.tilTo.setEndIconOnClickListener { lookupAccount() } binding.btnClearToInfo.setOnClickListener { + if (bmlQrInfo != null) { + bmlQrInfo = null + bmlGatewayQr = false + binding.tilAmount.isEnabled = true + binding.tilRemarks.isEnabled = true + binding.tilRemarks.alpha = 1f + binding.etAmount.setText("") + } resolvedAccountNumber = "" resolvedRecipientName = "" resolvedToOwnAccount = null @@ -1737,6 +1755,7 @@ class TransferFragment : Fragment() { .also { it.root.tag = it } } val inactive = (acc.profileType == "BML_PREPAID" || acc.profileType == "BML_CREDIT" || acc.profileType == "BML_DEBIT") && !acc.statusDesc.equals("Active", ignoreCase = true) + val isCard = acc.profileType == "BML_PREPAID" || acc.profileType == "BML_CREDIT" || acc.profileType == "BML_DEBIT" val isBmlAccount = acc.bank == "BML" val ownerPrefix = if (isBmlAccount && acc.profileName.isNotBlank()) "${acc.profileName} · " else "" val hide = viewModel.hideAmounts.value ?: false @@ -1754,7 +1773,11 @@ class TransferFragment : Fragment() { } val balance = displayData?.balance ?: "" b.tvDropdownBalance.text = if (hide && balance.isNotBlank()) maskAmount(balance) else balance - b.root.alpha = if (inactive) 0.4f else 1f + b.root.alpha = when { + inactive -> 0.4f + bmlQrInfo != null && !isCard -> 0.35f + else -> 1f + } val networkIcon = BmlCardParser.cardNetworkIcon(acc) when { networkIcon != null -> {