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 b557e1d..815c3db 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 @@ -256,7 +256,7 @@ class TransferFragment : Fragment() { Toast.makeText(requireContext(), R.string.transfer_select_source_first, Toast.LENGTH_SHORT).show() return } - val accountNumber = binding.etTo.text?.toString()?.trim() ?: "" + val accountNumber = AccountInputParser.normalize(binding.etTo.text?.toString()?.trim() ?: "") if (accountNumber.isBlank()) { Toast.makeText(requireContext(), R.string.transfer_enter_account_first, Toast.LENGTH_SHORT).show() return diff --git a/app/src/main/java/sh/sar/basedbank/util/AccountInputParser.kt b/app/src/main/java/sh/sar/basedbank/util/AccountInputParser.kt index ba3201f..6e326b1 100644 --- a/app/src/main/java/sh/sar/basedbank/util/AccountInputParser.kt +++ b/app/src/main/java/sh/sar/basedbank/util/AccountInputParser.kt @@ -11,6 +11,21 @@ object AccountInputParser { UNKNOWN } + /** + * Strip spaces and remove a 960/+960 country code prefix, but only when + * the stripped result is exactly 7 digits (so "9603456" is left intact). + */ + fun normalize(input: String): String { + var s = input.replace(" ", "") + val stripped = when { + s.startsWith("+960") -> s.removePrefix("+960") + s.startsWith("960") -> s.removePrefix("960") + else -> null + } + if (stripped != null && stripped.matches(Regex("^\\d{7}$"))) s = stripped + return s + } + fun detect(input: String): InputType { val s = input.trim() return when {