taler-android

Android apps for GNU Taler (wallet, PoS, cashier)
Log | Files | Refs | README | LICENSE

commit 0e450e21a7e6f478f713dd62fab2c5de990875e4
parent c9a7c750322c3d4957f05ba6b286681398eb7e48
Author: Iván Ávalos <avalos@disroot.org>
Date:   Thu,  6 Feb 2025 15:57:20 +0100

[wallet] auto-focus amount input on withdrawal

Diffstat:
Mwallet/src/main/java/net/taler/wallet/withdraw/WithdrawalShowInfo.kt | 16+++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawalShowInfo.kt b/wallet/src/main/java/net/taler/wallet/withdraw/WithdrawalShowInfo.kt @@ -35,12 +35,16 @@ import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import net.taler.common.Amount @@ -80,6 +84,8 @@ fun WithdrawalShowInfo( val possibleExchanges = status.uriInfo?.possibleExchanges ?: emptyList() val ageRestrictionOptions = status.amountInfo?.ageRestrictionOptions ?: emptyList() + val focusRequester = remember { FocusRequester() } + val keyboardController = LocalSoftwareKeyboardController.current var startup by remember { mutableStateOf(true) } var selectedAmount by remember { mutableStateOf(defaultAmount) } var selectedAge by remember { mutableStateOf<Int?>(null) } @@ -120,7 +126,8 @@ fun WithdrawalShowInfo( AmountCurrencyField( modifier = Modifier .padding(16.dp) - .fillMaxWidth(), + .fillMaxWidth() + .focusRequester(focusRequester), amount = selectedAmount.withSpec(spec), currencies = currencies, editableCurrency = editableCurrency, @@ -243,6 +250,7 @@ fun WithdrawalShowInfo( || status.status == TosReviewRequired || !selectedAmount.isZero()), onClick = { + keyboardController?.hide() if (status.status == TosReviewRequired) { onTosReview() } else onConfirm(selectedAge) @@ -256,4 +264,10 @@ fun WithdrawalShowInfo( } } } + + LaunchedEffect(editableAmount) { + if (editableAmount) { + focusRequester.requestFocus() + } + } } \ No newline at end of file