diff options
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt')
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt b/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt index 176ff97..3c93ed7 100644 --- a/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt +++ b/wallet/src/main/java/net/taler/wallet/deposit/MakeDepositComposable.kt @@ -68,6 +68,7 @@ fun MakeDepositComposable( var name by rememberSaveable { mutableStateOf(presetName ?: "") } var iban by rememberSaveable { mutableStateOf(presetIban ?: "") } var bic by rememberSaveable { mutableStateOf("") } + var bicInvalid by rememberSaveable { mutableStateOf(false) } val focusRequester = remember { FocusRequester() } OutlinedTextField( modifier = Modifier @@ -125,8 +126,19 @@ fun MakeDepositComposable( value = bic, enabled = !state.showFees, onValueChange = { input -> + bicInvalid = false bic = input }, + isError = bicInvalid, + supportingText = { + if (bicInvalid) { + Text( + modifier = Modifier.fillMaxWidth(), + text = stringResource(R.string.send_deposit_bic_error), + color = MaterialTheme.colorScheme.error + ) + } + }, label = { Text( text = stringResource(R.string.send_deposit_bic), @@ -197,7 +209,11 @@ fun MakeDepositComposable( enabled = iban.isNotBlank(), onClick = { focusManager.clearFocus() - onMakeDeposit(amount, name, iban, bic) + if (isValidBic(bic)) { + onMakeDeposit(amount, name, iban, bic) + } else { + bicInvalid = true + } }, ) { Text( @@ -210,6 +226,14 @@ fun MakeDepositComposable( } } +private val bicRegex = Regex("[a-zA-Z\\d]{8,11}") + +/** + * performs some minimal verification, nothing perfect. + * Allows for empty string. + */ +private fun isValidBic(bic: String): Boolean = bic.isEmpty() || bicRegex.matches(bic) + @Preview @Composable fun PreviewMakeDepositComposable() { |