optimize mfaisa QR, fix bug that fails to switch to default account after ooredoo QR is cancelled and new BML QR is scanned
Auto Tag on Version Change / check-version (push) Successful in 3s
Auto Tag on Version Change / check-version (push) Successful in 3s
This commit is contained in:
@@ -199,25 +199,31 @@ class TransferFragment : Fragment() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cards can't pay PayMV QR — fall back to default account or clear selection
|
// Neither BML cards nor M-Faisa wallets can pay a PayMV QR. Either can be the selected
|
||||||
val isCard = selectedAccount?.let {
|
// source when the scan happens — an M-Faisa merchant QR auto-switches the source, and
|
||||||
it.profileType == "BML_PREPAID" || it.profileType == "BML_CREDIT" || it.profileType == "BML_DEBIT"
|
// clearing that merchant leaves the source behind — so fall back to the default account
|
||||||
} ?: false
|
// (or clear the selection) rather than leaving a source that cannot pay.
|
||||||
if (isCard) {
|
val src = selectedAccount
|
||||||
Toast.makeText(requireContext(), R.string.card_qr_paymv_unsupported, Toast.LENGTH_SHORT).show()
|
val isCard = src != null &&
|
||||||
|
(src.profileType == "BML_PREPAID" || src.profileType == "BML_CREDIT" || src.profileType == "BML_DEBIT")
|
||||||
|
val isMfaisa = src?.bank == "MFAISA"
|
||||||
|
if (isCard || isMfaisa) {
|
||||||
|
// The card case has always explained itself; the M-Faisa case switches silently.
|
||||||
|
if (isCard) Toast.makeText(requireContext(), R.string.card_qr_paymv_unsupported, Toast.LENGTH_SHORT).show()
|
||||||
val defaultNum = CredentialStore(requireContext()).getDefaultAccountNumber()
|
val defaultNum = CredentialStore(requireContext()).getDefaultAccountNumber()
|
||||||
val defaultAcc = defaultNum?.let { num -> viewModel.accounts.value?.firstOrNull { it.accountNumber == num } }
|
val defaultAcc = defaultNum?.let { num -> viewModel.accounts.value?.firstOrNull { it.accountNumber == num } }
|
||||||
selectedAccount = defaultAcc
|
|
||||||
binding.tilAmount.prefixText = null
|
binding.tilAmount.prefixText = null
|
||||||
if (defaultAcc != null) {
|
if (defaultAcc != null) {
|
||||||
updateAmountPrefix(defaultAcc)
|
// Also restores the "To" row out of M-Faisa phone-entry mode, via showFromCard().
|
||||||
showFromCard(defaultAcc)
|
selectSourceAccount(defaultAcc)
|
||||||
} else {
|
} else {
|
||||||
|
selectedAccount = null
|
||||||
binding.cardFromInfo.visibility = View.GONE
|
binding.cardFromInfo.visibility = View.GONE
|
||||||
binding.tilFrom.visibility = View.VISIBLE
|
binding.tilFrom.visibility = View.VISIBLE
|
||||||
binding.actvFrom.setText("", false)
|
binding.actvFrom.setText("", false)
|
||||||
|
applyMfaisaToFieldMode(false)
|
||||||
|
updateTransferButton()
|
||||||
}
|
}
|
||||||
updateTransferButton()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qr.amount != null) binding.etAmount.setText(qr.amount)
|
if (qr.amount != null) binding.etAmount.setText(qr.amount)
|
||||||
@@ -1483,6 +1489,7 @@ class TransferFragment : Fragment() {
|
|||||||
|
|
||||||
internal fun clearForm() {
|
internal fun clearForm() {
|
||||||
bmlHandler().resetOtpState()
|
bmlHandler().resetOtpState()
|
||||||
|
bmlHandler().clearQrMerchant()
|
||||||
mfaisaHandler?.clearState()
|
mfaisaHandler?.clearState()
|
||||||
mfaisaHandler?.clearQrMerchant()
|
mfaisaHandler?.clearQrMerchant()
|
||||||
selectedAccount = null
|
selectedAccount = null
|
||||||
|
|||||||
Reference in New Issue
Block a user