diff --git a/common/ui/src/main/java/com/tangem/common/ui/bottomsheet/permission/state/GiveTxPermissionState.kt b/common/ui/src/main/java/com/tangem/common/ui/bottomsheet/permission/state/GiveTxPermissionState.kt index b88bfa47d4..402c43b957 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/bottomsheet/permission/state/GiveTxPermissionState.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/bottomsheet/permission/state/GiveTxPermissionState.kt @@ -27,6 +27,10 @@ sealed class GiveTxPermissionState { val cancelButton: CancelPermissionButton, val onChangeApproveType: ((ApproveType) -> Unit)? = null, ) : GiveTxPermissionState() + + fun GiveTxPermissionState.getApproveTypeOrNull(): ApproveType? { + return (this as? ReadyForRequest)?.approveType + } } enum class ApproveType(val text: TextReference) { diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapProcessDataState.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapProcessDataState.kt index 8a505fb148..b35cb05405 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapProcessDataState.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapProcessDataState.kt @@ -1,6 +1,5 @@ package com.tangem.feature.swap.viewmodels -import com.tangem.common.ui.bottomsheet.permission.state.ApproveType import com.tangem.domain.tokens.model.CryptoCurrencyStatus import com.tangem.feature.swap.domain.models.domain.SwapDataModel import com.tangem.feature.swap.domain.models.domain.SwapProvider @@ -16,7 +15,6 @@ data class SwapProcessDataState( // Amount from input val amount: String? = null, val approveDataModel: RequestApproveStateData? = null, - val approveType: ApproveType? = null, val swapDataModel: SwapDataModel? = null, val selectedFee: TxFee? = null, val tokensDataState: TokensDataStateExpress? = null, diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt index 216f2860fa..bb3600983b 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt @@ -10,6 +10,7 @@ import arrow.core.getOrElse import com.tangem.common.routing.AppRoute import com.tangem.common.routing.bundle.unbundle import com.tangem.common.ui.bottomsheet.permission.state.ApproveType +import com.tangem.common.ui.bottomsheet.permission.state.GiveTxPermissionState.InProgress.getApproveTypeOrNull import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.analytics.models.AnalyticsParam import com.tangem.core.analytics.models.Basic @@ -512,10 +513,7 @@ internal class SwapViewModel @Inject constructor( swapDataModel: SwapDataModel?, ) { dataState = if (permissionState is PermissionDataState.PermissionReadyForRequest) { - dataState.copy( - approveDataModel = permissionState.requestApproveData, - approveType = dataState.approveType ?: ApproveType.UNLIMITED, - ) + dataState.copy(approveDataModel = permissionState.requestApproveData) } else { dataState.copy( swapDataModel = swapDataModel, @@ -655,9 +653,10 @@ internal class SwapViewModel @Inject constructor( val approveDataModel = requireNotNull(dataState.approveDataModel) { "dataState.approveDataModel.spenderAddress shouldn't be null" } - val approveType = requireNotNull(dataState.approveType?.toDomainApproveType()) { - "uiState.permissionState should not be null" - } + val approveType = + requireNotNull(uiState.permissionState.getApproveTypeOrNull()?.toDomainApproveType()) { + "uiState.permissionState should not be null" + } val feeForPermission = when (val fee = approveDataModel.fee) { TxFeeState.Empty -> { makeDefaultAlert(resourceReference(R.string.swapping_fee_estimation_error_text)) @@ -1008,7 +1007,6 @@ internal class SwapViewModel @Inject constructor( onAmountSelected = { onAmountSelected(it) }, onChangeApproveType = { approveType -> uiState = stateBuilder.updateApproveType(uiState, approveType) - dataState = dataState.copy(approveType = approveType) }, onClickFee = { val selectedFee = dataState.selectedFee?.feeType ?: FeeType.NORMAL @@ -1228,7 +1226,7 @@ internal class SwapViewModel @Inject constructor( private fun sendPermissionApproveClickedEvent() { val sendTokenSymbol = dataState.fromCryptoCurrency?.currency?.symbol val receiveTokenSymbol = dataState.toCryptoCurrency?.currency?.symbol - val approveType = dataState.approveType + val approveType = uiState.permissionState.getApproveTypeOrNull() if (sendTokenSymbol != null && receiveTokenSymbol != null && approveType != null) { analyticsEventHandler.send( SwapEvents.ButtonPermissionApproveClicked(