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 f0cf6d4..047c83c 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 @@ -149,8 +149,11 @@ class TransferFragment : Fragment() { qrLauncher.launch(Intent(requireContext(), QrScannerActivity::class.java)) } + binding.btnTransfer.isEnabled = false binding.btnTransfer.setOnClickListener { initiateTransfer() } + binding.etAmount.addTextChangedListener { updateTransferButton() } + // Pre-select contact if navigated from contacts page arguments?.getString(ARG_ACCOUNT)?.let { account -> prefillToDirectly( @@ -186,6 +189,7 @@ class TransferFragment : Fragment() { binding.cardFromInfo.visibility = View.GONE binding.tilFrom.visibility = View.VISIBLE binding.actvFrom.setText("", false) + updateTransferButton() } viewModel.accounts.observe(viewLifecycleOwner) { accounts -> @@ -197,6 +201,7 @@ class TransferFragment : Fragment() { selectedAccount = picked updateAmountPrefix(picked) showFromCard(picked) + updateTransferButton() } val fromNumber = arguments?.getString(ARG_FROM_ACCOUNT) @@ -206,6 +211,7 @@ class TransferFragment : Fragment() { selectedAccount = match updateAmountPrefix(match) showFromCard(match) + updateTransferButton() } } } @@ -273,6 +279,7 @@ class TransferFragment : Fragment() { binding.btnPickContact.visibility = View.VISIBLE binding.btnScanQr.visibility = View.VISIBLE binding.tilTo.error = null + updateTransferButton() } binding.etTo.addTextChangedListener { @@ -284,6 +291,7 @@ class TransferFragment : Fragment() { binding.tilTo.visibility = View.VISIBLE binding.btnPickContact.visibility = View.VISIBLE binding.btnScanQr.visibility = View.VISIBLE + updateTransferButton() } } } @@ -396,6 +404,7 @@ class TransferFragment : Fragment() { binding.btnPickContact.visibility = View.GONE binding.btnScanQr.visibility = View.GONE binding.cardToInfo.visibility = View.VISIBLE + updateTransferButton() saveToRecents(info) when { @@ -522,6 +531,7 @@ class TransferFragment : Fragment() { binding.btnPickContact.visibility = View.GONE binding.btnScanQr.visibility = View.GONE binding.cardToInfo.visibility = View.VISIBLE + updateTransferButton() val contact = contacts.firstOrNull { it.benefAccount == accountNumber } if (contact != null) { @@ -852,6 +862,11 @@ class TransferFragment : Fragment() { } } + private fun updateTransferButton() { + val amount = binding.etAmount.text?.toString()?.trim()?.toDoubleOrNull() ?: 0.0 + binding.btnTransfer.isEnabled = selectedAccount != null && resolvedAccountNumber.isNotBlank() && amount > 0 + } + private fun clearForm() { selectedAccount = null binding.actvFrom.setText("", false) diff --git a/app/src/main/java/sh/sar/basedbank/ui/onboarding/OnboardingActivity.kt b/app/src/main/java/sh/sar/basedbank/ui/onboarding/OnboardingActivity.kt index dd27343..f46ab90 100644 --- a/app/src/main/java/sh/sar/basedbank/ui/onboarding/OnboardingActivity.kt +++ b/app/src/main/java/sh/sar/basedbank/ui/onboarding/OnboardingActivity.kt @@ -56,7 +56,7 @@ class OnboardingActivity : AppCompatActivity(), SecuritySetupFragment.Callback { } // Pre-select language button without triggering the listener - val savedLang = prefs.getString("language", null) + val savedLang = prefs.getString("language", null) ?: "en".also { selectLanguage(it) } binding.languageToggle.clearOnButtonCheckedListeners() when (savedLang) { "en" -> binding.btnLangEnglish.isChecked = true