Updated on 2026-08-14
This commit is contained in:
parent
0627f0e62c
commit
3e4e8c8f90
4 changed files with 9 additions and 32 deletions
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue