Updated on 2026-08-14

This commit is contained in:
Tangem 2024-03-02 13:09:13 +00:00
parent 22a0838103
commit 9186376885
2 changed files with 16 additions and 4 deletions

View file

@ -888,10 +888,10 @@ internal class StateBuilder(
)
}
fun addAlert(uiState: SwapStateHolder, onClick: () -> Unit): SwapStateHolder {
fun addAlert(uiState: SwapStateHolder, message: TextReference? = null, onClick: () -> Unit): SwapStateHolder {
return uiState.copy(
alert = SwapWarning.GenericWarning(
message = null,
message = message,
onClick = onClick,
),
)

View file

@ -8,6 +8,7 @@ import arrow.core.getOrElse
import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.core.analytics.models.AnalyticsParam
import com.tangem.core.analytics.models.Basic
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.utils.InputNumberFormatter
import com.tangem.domain.appcurrency.GetSelectedAppCurrencyUseCase
import com.tangem.domain.appcurrency.model.AppCurrency
@ -113,7 +114,7 @@ internal class SwapViewModel @Inject constructor(
val cryptoCurrencyStatus =
getCryptoCurrencyStatusUseCase(it.walletId, initialCryptoCurrency.id).getOrNull()
if (cryptoCurrencyStatus == null) {
uiState = stateBuilder.addAlert(uiState, swapRouter::back)
uiState = stateBuilder.addAlert(uiState = uiState, onClick = swapRouter::back)
} else {
initialCryptoCurrencyStatus = cryptoCurrencyStatus
initTokens()
@ -459,7 +460,12 @@ internal class SwapViewModel @Inject constructor(
return
}
val fromCurrency = requireNotNull(dataState.fromCryptoCurrency)
val fee = requireNotNull(dataState.selectedFee)
val fee = dataState.selectedFee
// TODO: unexpected crash for some users, this workaround to prevent app crash and follow to support
if (fee == null) {
makeDefaultAlert(TextReference.Str("Fee estimation error. Please send feedback to support."))
return
}
viewModelScope.launch(dispatchers.main) {
runCatching(dispatchers.io) {
swapInteractor.onSwap(
@ -749,6 +755,12 @@ internal class SwapViewModel @Inject constructor(
}
}
private fun makeDefaultAlert(message: TextReference) {
uiState = stateBuilder.addAlert(uiState, message) {
uiState = stateBuilder.clearAlert(uiState)
}
}
@Suppress("LongMethod", "CyclomaticComplexMethod")
private fun createUiActions(): UiActions {
return UiActions(