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:
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