taler-android

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

commit 1bc091b55f331b32063079d2e6783759893f8602
parent c3b5fcf59de0c001d6c978f6a2980c3ec1ac1168
Author: Iván Ávalos <avalos@disroot.org>
Date:   Mon, 26 Oct 2026 17:09:28 +0100

[wallet] show keyboard automatically on deposit

Diffstat:
Mwallet/src/main/java/net/taler/wallet/deposit/DepositAmountComposable.kt | 20+++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/wallet/src/main/java/net/taler/wallet/deposit/DepositAmountComposable.kt b/wallet/src/main/java/net/taler/wallet/deposit/DepositAmountComposable.kt @@ -30,13 +30,18 @@ import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +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.Companion.CenterHorizontally import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.platform.LocalFocusManager +import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -178,10 +183,13 @@ fun DepositAmountComposable( } } + val amountFocusRequester = remember { FocusRequester() } + val keyboardController = LocalSoftwareKeyboardController.current AmountCurrencyField( modifier = Modifier .padding(horizontal = 16.dp) - .fillMaxWidth(), + .fillMaxWidth() + .focusRequester(amountFocusRequester), amount = amount!!.withSpec(spec), onAmountChanged = { amount = it }, editableCurrency = true, @@ -201,6 +209,16 @@ fun DepositAmountComposable( } ) + LaunchedEffect(Unit) { + amountFocusRequester.requestFocus() + } + + DisposableEffect(Unit) { + onDispose { + keyboardController?.hide() + } + } + AnimatedVisibility(visible = checkResult is CheckDepositResult.Success) { val res = checkResult as? CheckDepositResult.Success ?: return@AnimatedVisibility