Updated on 2026-08-14
This commit is contained in:
parent
26d0b1c624
commit
f2c6c7be52
6 changed files with 68 additions and 31 deletions
|
|
@ -23,34 +23,43 @@ data class ExchangeStatusResponse(
|
|||
enum class ExchangeStatus {
|
||||
|
||||
@Json(name = "new")
|
||||
NEW,
|
||||
New,
|
||||
|
||||
@Json(name = "waiting")
|
||||
WAITING,
|
||||
Waiting,
|
||||
|
||||
@Json(name = "confirming")
|
||||
CONFIRMING,
|
||||
Confirming,
|
||||
|
||||
@Json(name = "exchanging")
|
||||
EXCHANGING,
|
||||
Exchanging,
|
||||
|
||||
@Json(name = "sending")
|
||||
SENDING,
|
||||
Sending,
|
||||
|
||||
@Json(name = "finished")
|
||||
FINISHED,
|
||||
Finished,
|
||||
|
||||
@Json(name = "failed")
|
||||
FAILED,
|
||||
Failed,
|
||||
|
||||
@Json(name = "refunded")
|
||||
REFUNDED,
|
||||
Refunded,
|
||||
|
||||
@Json(name = "verifying")
|
||||
VERIFYING,
|
||||
Verifying,
|
||||
|
||||
@Json(name = "expired")
|
||||
CANCELLED,
|
||||
Cancelled,
|
||||
|
||||
@Json(name = "waiting-tx-hash")
|
||||
WaitingTxHash,
|
||||
|
||||
@Json(name = "tx-failed")
|
||||
TxFailed,
|
||||
|
||||
@Json(name = "unknown")
|
||||
Unknown,
|
||||
}
|
||||
|
||||
data class ExchangeStatusError(
|
||||
|
|
|
|||
|
|
@ -225,6 +225,7 @@
|
|||
<string name="express_exchange_status_subtitle">Данные провайдера. Сумма к получению может измениться в зависимости от рыночных условий.</string>
|
||||
<string name="express_exchange_status_title">Статус обмена</string>
|
||||
<string name="express_exchange_status_verifying">Требуется верификация</string>
|
||||
<string name="express_exchange_status_waiting_tx_hash">Ожидание хеша транзакции</string>
|
||||
<string name="express_exchange_token_list_subtitle">Список токенов в вашем кошельке</string>
|
||||
<string name="express_fetch_best_rates">Получение наилучших курсов...</string>
|
||||
<string name="express_floating_rate">Плавающая ставка</string>
|
||||
|
|
|
|||
|
|
@ -224,6 +224,7 @@
|
|||
<string name="express_exchange_status_subtitle">Provider-sourced data. Estimated amount subject to change due to market conditions.</string>
|
||||
<string name="express_exchange_status_title">Exchange status</string>
|
||||
<string name="express_exchange_status_verifying">Verification required</string>
|
||||
<string name="express_exchange_status_waiting_tx_hash">Awaiting transaction hash</string>
|
||||
<string name="express_exchange_token_list_subtitle">List of all tokens added to your wallet</string>
|
||||
<string name="express_fetch_best_rates">Fetching best rates...</string>
|
||||
<string name="express_floating_rate">Floating rate</string>
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ data class ExchangeStatusModel(
|
|||
enum class ExchangeStatus {
|
||||
New,
|
||||
Waiting,
|
||||
WaitingTxHash,
|
||||
Confirming,
|
||||
Verifying,
|
||||
Exchanging,
|
||||
|
|
@ -19,4 +20,5 @@ enum class ExchangeStatus {
|
|||
Finished,
|
||||
Refunded,
|
||||
Cancelled,
|
||||
Unknown,
|
||||
}
|
||||
|
|
@ -162,6 +162,7 @@ internal class TokenDetailsSwapTransactionsStateConverter(
|
|||
private fun getStatuses(status: ExchangeStatus?, hasFailed: Boolean = false): ImmutableList<ExchangeStatusState> {
|
||||
if (status == null) return persistentListOf()
|
||||
val isWaiting = status == ExchangeStatus.New || status == ExchangeStatus.Waiting
|
||||
val isWaitingTxHash = status == ExchangeStatus.WaitingTxHash
|
||||
val isConfirming = status == ExchangeStatus.Confirming
|
||||
val isVerifying = status == ExchangeStatus.Verifying
|
||||
val isExchanging = status == ExchangeStatus.Exchanging
|
||||
|
|
@ -174,27 +175,35 @@ internal class TokenDetailsSwapTransactionsStateConverter(
|
|||
val isExchangingDone = !isExchanging && isConfirmingDone
|
||||
val isSendingDone = !isSending && !isVerifying && !isFailed && isExchangingDone
|
||||
|
||||
return if (status == ExchangeStatus.Cancelled) {
|
||||
listOf(cancelledStep())
|
||||
} else {
|
||||
listOf(
|
||||
waitStep(isWaiting, isWaitingDone),
|
||||
confirmStep(isConfirming, isConfirmingDone),
|
||||
exchangeStep(
|
||||
isExchanging = isExchanging,
|
||||
isExchangingDone = isExchangingDone,
|
||||
isRefunded = isRefunded,
|
||||
hasFailed = hasFailed,
|
||||
isVerifying = isVerifying,
|
||||
isFailed = isFailed,
|
||||
),
|
||||
sendStep(
|
||||
isSending = isSending,
|
||||
isSendingDone = isSendingDone,
|
||||
isRefunded = isRefunded,
|
||||
hasFailed = hasFailed,
|
||||
),
|
||||
)
|
||||
return buildList {
|
||||
when {
|
||||
status == ExchangeStatus.Cancelled -> add(cancelledStep())
|
||||
isWaitingTxHash -> add(waitTxStep())
|
||||
// ExchangeStatus.Unknown is temporary added for 1inch
|
||||
status == ExchangeStatus.Unknown -> add(unknownStateStep())
|
||||
else -> {
|
||||
add(waitStep(isWaiting, isWaitingDone))
|
||||
add(confirmStep(isConfirming, isConfirmingDone))
|
||||
add(
|
||||
exchangeStep(
|
||||
isExchanging = isExchanging,
|
||||
isExchangingDone = isExchangingDone,
|
||||
isRefunded = isRefunded,
|
||||
hasFailed = hasFailed,
|
||||
isVerifying = isVerifying,
|
||||
isFailed = isFailed,
|
||||
),
|
||||
)
|
||||
add(
|
||||
sendStep(
|
||||
isSending = isSending,
|
||||
isSendingDone = isSendingDone,
|
||||
isRefunded = isRefunded,
|
||||
hasFailed = hasFailed,
|
||||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
}.toPersistentList()
|
||||
}
|
||||
|
||||
|
|
@ -216,6 +225,20 @@ internal class TokenDetailsSwapTransactionsStateConverter(
|
|||
isDone = isNewDone,
|
||||
)
|
||||
|
||||
private fun waitTxStep() = ExchangeStatusState(
|
||||
status = ExchangeStatus.Verifying,
|
||||
text = TextReference.Res(R.string.express_exchange_status_waiting_tx_hash),
|
||||
isActive = false,
|
||||
isDone = false,
|
||||
)
|
||||
|
||||
private fun unknownStateStep() = ExchangeStatusState(
|
||||
status = ExchangeStatus.Failed,
|
||||
text = TextReference.Res(R.string.express_exchange_status_failed),
|
||||
isActive = false,
|
||||
isDone = true,
|
||||
)
|
||||
|
||||
private fun confirmStep(isConfirming: Boolean, isConfirmingDone: Boolean) = ExchangeStatusState(
|
||||
status = ExchangeStatus.Confirming,
|
||||
text = when {
|
||||
|
|
|
|||
|
|
@ -163,6 +163,7 @@ internal class ExchangeStatusFactory(
|
|||
return when (status) {
|
||||
ExchangeStatus.New,
|
||||
ExchangeStatus.Waiting,
|
||||
ExchangeStatus.WaitingTxHash,
|
||||
ExchangeStatus.Sending,
|
||||
ExchangeStatus.Confirming,
|
||||
ExchangeStatus.Exchanging,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue