Updated on 2026-08-14

This commit is contained in:
Tangem 2025-05-28 13:44:23 +03:00
parent 0627f0e62c
commit 3e4e8c8f90
4 changed files with 9 additions and 32 deletions

View file

@ -4,34 +4,19 @@ import com.tangem.datasource.api.visa.models.response.CardActivationRemoteStateR
import com.tangem.domain.visa.model.VisaActivationOrderInfo
import com.tangem.domain.visa.model.VisaActivationRemoteState
import com.tangem.utils.converter.Converter
import kotlinx.coroutines.flow.MutableStateFlow
private const val PIN_CODE_VALIDATION_ERROR = 1000
private const val PIN_CODE_VALIDATION_ERROR = "pin_entry"
object VisaActivationStatusConverterWithState :
Converter<CardActivationRemoteStateResponse, VisaActivationRemoteState> {
private val lastUpdatedAt = MutableStateFlow<String?>(null)
override fun convert(value: CardActivationRemoteStateResponse): VisaActivationRemoteState {
// handle pin code error
// either we entered pin code before with an error (WasError) or after receiving an error (InProgress)
// TODO [REDACTED_TASK_KEY]
val result = value.result
if (result.status == Status.PinCodeRequired.stringValue && result.stepChangeCode == PIN_CODE_VALIDATION_ERROR) {
return if (lastUpdatedAt.value != result.updatedAt) {
lastUpdatedAt.value = result.updatedAt
VisaActivationRemoteState.AwaitingPinCode(
activationOrderInfo = result.activationOrder!!.convert(),
status = VisaActivationRemoteState.AwaitingPinCode.Status.WasError,
)
} else {
VisaActivationRemoteState.AwaitingPinCode(
activationOrderInfo = result.activationOrder!!.convert(),
status = VisaActivationRemoteState.AwaitingPinCode.Status.InProgress,
)
}
if (result.status == Status.PinCodeRequired.stringValue && result.stepError == PIN_CODE_VALIDATION_ERROR) {
return VisaActivationRemoteState.AwaitingPinCode(
activationOrderInfo = result.activationOrder!!.convert(),
status = VisaActivationRemoteState.AwaitingPinCode.Status.WasError,
)
}
val status = Status.entries.find { it.stringValue == result.status } ?: error(