diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/pinandcertificate/MyEidPinScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/pinandcertificate/MyEidPinScreen.kt index ad006c72..c27a8b43 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/pinandcertificate/MyEidPinScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/myeid/pinandcertificate/MyEidPinScreen.kt @@ -133,13 +133,13 @@ fun MyEidPinScreen( val content by sharedMyEidViewModel.pinScreenContent.collectAsState() - val currentPinState = remember { mutableStateOf(byteArrayOf()) } - val newPinState = remember { mutableStateOf(byteArrayOf()) } - val newPinRepeatedState = remember { mutableStateOf(byteArrayOf()) } + val currentPinState = sharedMyEidViewModel.currentPinState + val newPinState = sharedMyEidViewModel.newPinState + val newPinRepeatedState = sharedMyEidViewModel.newPinRepeatedState - val showCurrentPinField = rememberSaveable { mutableStateOf(true) } - val showNewPinField = rememberSaveable { mutableStateOf(false) } - val showNewRepeatPinField = rememberSaveable { mutableStateOf(false) } + val showCurrentPinField = sharedMyEidViewModel.showCurrentPinField + val showNewPinField = sharedMyEidViewModel.showNewPinField + val showNewRepeatPinField = sharedMyEidViewModel.showNewRepeatPinField val pinErrorText = rememberSaveable { mutableStateOf("") } @@ -774,7 +774,7 @@ fun MyEidPinScreen( } else { focusManager.clearFocus() } - } + }, ) if (isTalkBackEnabled(context) && newPinState.value.isNotEmpty()) { IconButton( diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/shared/SharedMyEidViewModel.kt b/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/shared/SharedMyEidViewModel.kt index d2273764..85475e8c 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/shared/SharedMyEidViewModel.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/viewmodel/shared/SharedMyEidViewModel.kt @@ -22,6 +22,8 @@ package ee.ria.DigiDoc.viewmodel.shared import android.app.Activity +import androidx.compose.runtime.MutableState +import androidx.compose.runtime.mutableStateOf import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel @@ -79,6 +81,26 @@ class SharedMyEidViewModel private val _isPinBlocked = MutableLiveData(false) val isPinBlocked: LiveData = _isPinBlocked + val currentPinState: MutableState = mutableStateOf(byteArrayOf()) + val newPinState: MutableState = mutableStateOf(byteArrayOf()) + val newPinRepeatedState: MutableState = mutableStateOf(byteArrayOf()) + + val showCurrentPinField: MutableState = mutableStateOf(true) + val showNewPinField: MutableState = mutableStateOf(false) + val showNewRepeatPinField: MutableState = mutableStateOf(false) + + fun resetPinEntryState() { + currentPinState.value.fill(0.toByte()) + newPinState.value.fill(0.toByte()) + newPinRepeatedState.value.fill(0.toByte()) + currentPinState.value = byteArrayOf() + newPinState.value = byteArrayOf() + newPinRepeatedState.value = byteArrayOf() + showCurrentPinField.value = true + showNewPinField.value = false + showNewRepeatPinField.value = false + } + fun setIdCardData(idCardData: IdCardData) { _idCardData.postValue(idCardData) } @@ -213,6 +235,7 @@ class SharedMyEidViewModel } fun setScreenContent(pinVariant: PinChangeVariant) { + resetPinEntryState() _pinScreenContent.value = when (pinVariant) { PinChangeVariant.ChangePin1 -> @@ -388,6 +411,7 @@ class SharedMyEidViewModel resetIsPinBlocked() resetScreenContent() resetPinChangingState() + resetPinEntryState() } fun handleBackButton() {