Updated on 2026-08-14
This commit is contained in:
parent
0627f0e62c
commit
3e4e8c8f90
4 changed files with 9 additions and 32 deletions
|
|
@ -11,8 +11,7 @@ data class CardActivationRemoteStateResponse(
|
|||
data class Result(
|
||||
@Json(name = "status") val status: String,
|
||||
@Json(name = "order") val activationOrder: ActivationOrder?,
|
||||
@Json(name = "stepChangeCode") val stepChangeCode: Int?,
|
||||
@Json(name = "updatedAt") val updatedAt: String?,
|
||||
@Json(name = "step_error") val stepError: String?,
|
||||
)
|
||||
|
||||
@JsonClass(generateAdapter = true)
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ sealed class VisaActivationRemoteState {
|
|||
val status: Status,
|
||||
) : VisaActivationRemoteState() {
|
||||
enum class Status {
|
||||
WaitingForPinCode, InProgress, WasError
|
||||
WaitingForPinCode, WasError
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -71,7 +71,7 @@ enum class VisaActivationRemoteState_Type {
|
|||
@Suppress("ClassNaming")
|
||||
@JsonClass(generateAdapter = false)
|
||||
enum class AwaitingPinCodeStatus_Type {
|
||||
WaitingForPinCode, InProgress, WasError
|
||||
WaitingForPinCode, WasError
|
||||
}
|
||||
|
||||
@Suppress("ClassNaming")
|
||||
|
|
@ -91,8 +91,6 @@ class VisaActivationRemoteState_JsonAdapter {
|
|||
status = when (value.awaitingPinCodeStatus!!) {
|
||||
AwaitingPinCodeStatus_Type.WaitingForPinCode ->
|
||||
AwaitingPinCode.Status.WaitingForPinCode
|
||||
AwaitingPinCodeStatus_Type.InProgress ->
|
||||
AwaitingPinCode.Status.InProgress
|
||||
AwaitingPinCodeStatus_Type.WasError ->
|
||||
AwaitingPinCode.Status.WasError
|
||||
},
|
||||
|
|
@ -127,8 +125,6 @@ class VisaActivationRemoteState_JsonAdapter {
|
|||
awaitingPinCodeStatus = when (value.status) {
|
||||
AwaitingPinCode.Status.WaitingForPinCode ->
|
||||
AwaitingPinCodeStatus_Type.WaitingForPinCode
|
||||
AwaitingPinCode.Status.InProgress ->
|
||||
AwaitingPinCodeStatus_Type.InProgress
|
||||
AwaitingPinCode.Status.WasError ->
|
||||
AwaitingPinCodeStatus_Type.WasError
|
||||
},
|
||||
|
|
|
|||
|
|
@ -153,9 +153,6 @@ internal class OnboardingVisaInProgressModel @Inject constructor(
|
|||
)
|
||||
complete()
|
||||
}
|
||||
VisaActivationRemoteState.AwaitingPinCode.Status.InProgress -> {
|
||||
/** waiting for the new state */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue