commit dfb8b9a1c37a2b87aac96be1abe74a81744a4e56
parent 77cd47efdcb724a87bda4c374b84015894753799
Author: Bohdan Potuzhnyi <bohdan.potuzhnyi@gmail.com>
Date: Fri, 26 Jun 2026 13:13:22 +0200
[pos] merchant feedback fixes(password + wrong error shown)
Diffstat:
2 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/MainViewModel.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/MainViewModel.kt
@@ -44,7 +44,7 @@ class MainViewModel(app: Application) : AndroidViewModel(app) {
init {
httpClient.responsePipeline.intercept(HttpResponsePipeline.Transform) { (info, body) ->
- if (context.response.status == HttpStatusCode.Unauthorized) {
+ if (context.response.status == HttpStatusCode.Unauthorized && configManager.merchantConfig != null) {
configManager.forgetPassword()
configManager.notifySessionExpired()
}
diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/config/ConfigFragment.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/config/ConfigFragment.kt
@@ -107,9 +107,9 @@ import androidx.compose.material.icons.filled.Visibility
import androidx.compose.material.icons.filled.VisibilityOff
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
-import androidx.compose.foundation.interaction.MutableInteractionSource
-import androidx.compose.foundation.interaction.collectIsPressedAsState
import androidx.compose.runtime.remember
+import io.ktor.client.plugins.ClientRequestException
+import io.ktor.http.HttpStatusCode.Companion.Unauthorized
private enum class ConfigMode { Manual, Qr }
@@ -240,7 +240,12 @@ class ConfigFragment : Fragment() {
} catch (e: Exception) {
isSubmitting = false
Log.e("ConfigFragment", "Error fetching limited token: ${e.message}")
- requireActivity().showPosError(R.string.config_error_network)
+ val errorRes = if (e is ClientRequestException && e.response.status == Unauthorized) {
+ R.string.config_auth_error
+ } else {
+ R.string.config_error_network
+ }
+ requireActivity().showPosError(errorRes)
return@launch
}
@@ -594,21 +599,19 @@ private fun ManualConfigScreen(
)
}
item {
- val interactionSource = remember { MutableInteractionSource() }
- val pressed by interactionSource.collectIsPressedAsState()
+ var passwordVisible by remember { mutableStateOf(false) }
OutlinedTextField(
value = token,
onValueChange = onTokenChanged,
modifier = Modifier.fillMaxWidth(),
label = { Text(stringResource(R.string.config_password)) },
- visualTransformation = if (pressed) VisualTransformation.None else PasswordVisualTransformation(),
+ visualTransformation = if (passwordVisible) VisualTransformation.None else PasswordVisualTransformation(),
trailingIcon = {
IconButton(
- onClick = {},
- interactionSource = interactionSource,
+ onClick = { passwordVisible = !passwordVisible },
) {
Icon(
- imageVector = if (pressed) Icons.Filled.Visibility else Icons.Filled.VisibilityOff,
+ imageVector = if (passwordVisible) Icons.Filled.Visibility else Icons.Filled.VisibilityOff,
contentDescription = null,
)
}