Updated on 2026-08-14

This commit is contained in:
Tangem 2023-01-13 16:57:58 +03:00
commit 0d131e337c
11 changed files with 53 additions and 15 deletions

View file

@ -207,6 +207,8 @@
<string name="swapping_token_list_your_title">Choose token</string>
<string name="swapping_token_list_your_tokens">Your tokens</string>
<string name="swapping_token_list_other_tokens">Other tokens</string>
<string name="swapping_pending_transaction_title">Waiting</string>
<string name="swapping_pending_transaction_subtitle">Transaction in progress…</string>
<string name="referral_error_failed_to_load_info">Failed to load the information about the referral program. Please try again later.</string>
<string name="referral_error_failed_to_load_info_with_reason">Failed to load the information about the referral program. Reason: %s. Please try again later.</string>
<string name="referral_error_failed_to_participate">Your participation request could not be processed. Reason: %s. Please try again later. If the problem persists — feel free to contact our support.</string>

View file

@ -207,6 +207,8 @@
<string name="swapping_token_list_your_title">Choose token</string>
<string name="swapping_token_list_your_tokens">Your tokens</string>
<string name="swapping_token_list_other_tokens">Other tokens</string>
<string name="swapping_pending_transaction_title">Waiting</string>
<string name="swapping_pending_transaction_subtitle">Transaction in progress…</string>
<string name="referral_error_failed_to_load_info">Failed to load the information about the referral program. Please try again later.</string>
<string name="referral_error_failed_to_load_info_with_reason">Failed to load the information about the referral program. Reason: %s. Please try again later.</string>
<string name="referral_error_failed_to_participate">Your participation request could not be processed. Reason: %s. Please try again later. If the problem persists — feel free to contact our support.</string>

View file

@ -207,6 +207,8 @@
<string name="swapping_token_list_your_title">Choose token</string>
<string name="swapping_token_list_your_tokens">Your tokens</string>
<string name="swapping_token_list_other_tokens">Other tokens</string>
<string name="swapping_pending_transaction_title">Waiting</string>
<string name="swapping_pending_transaction_subtitle">Transaction in progress…</string>
<string name="referral_error_failed_to_load_info">Failed to load the information about the referral program. Please try again later.</string>
<string name="referral_error_failed_to_load_info_with_reason">Failed to load the information about the referral program. Reason: %s. Please try again later.</string>
<string name="referral_error_failed_to_participate">Your participation request could not be processed. Reason: %s. Please try again later. If the problem persists — feel free to contact our support.</string>

View file

@ -207,6 +207,8 @@
<string name="swapping_token_list_your_title">Выберите токен</string>
<string name="swapping_token_list_your_tokens">Ваши токены</string>
<string name="swapping_token_list_other_tokens">Другие токены</string>
<string name="swapping_pending_transaction_title">Подождите</string>
<string name="swapping_pending_transaction_subtitle">Транзакция в процессе…</string>
<string name="referral_error_failed_to_load_info">Не удалось загрузить информацию по реферальной программе. Пожалуйста, попробуйте позже.</string>
<string name="referral_error_failed_to_load_info_with_reason">Не удалось загрузить информацию по реферальной программе. Код ошибки: %s. Пожалуйста, попробуйте позже.</string>
<string name="referral_error_failed_to_participate">Не удалось обработать вашу заявку на участие. Код ошибки: %s. Пожалуйста, попробуйте позже. Если проблема сохранится, вы можете обратиться в техподдержку.</string>

View file

@ -207,6 +207,8 @@
<string name="swapping_token_list_your_title">Choose token</string>
<string name="swapping_token_list_your_tokens">Your tokens</string>
<string name="swapping_token_list_other_tokens">Other tokens</string>
<string name="swapping_pending_transaction_title">Waiting</string>
<string name="swapping_pending_transaction_subtitle">Transaction in progress…</string>
<string name="referral_error_failed_to_load_info">Failed to load the information about the referral program. Please try again later.</string>
<string name="referral_error_failed_to_load_info_with_reason">Failed to load the information about the referral program. Error code: %s. Please try again later.</string>
<string name="referral_error_failed_to_participate">Your participation request could not be processed. Error code: %s. Please try again later. If the problem persists — feel free to contact our support.</string>

View file

@ -31,6 +31,7 @@ data class TangemDimens internal constructor(
// region Size
val size0: Dp = 0.dp,
val size0_5: Dp = 0.5.dp,
val size2: Dp = 2.dp,
val size4: Dp = 4.dp,
val size8: Dp = 8.dp,
val size11: Dp = 11.dp,

View file

@ -1,14 +1,21 @@
package com.tangem.feature.swap.models
data class SwapPermissionStateHolder(
val currency: String,
val amount: String,
val walletAddress: String,
val spenderAddress: String,
val fee: String,
val approveButton: ApprovePermissionButton,
val cancelButton: CancelPermissionButton,
)
sealed class SwapPermissionState {
object InProgress : SwapPermissionState()
object Empty : SwapPermissionState()
data class ReadyForRequest(
val currency: String,
val amount: String,
val walletAddress: String,
val spenderAddress: String,
val fee: String,
val approveButton: ApprovePermissionButton,
val cancelButton: CancelPermissionButton,
) : SwapPermissionState()
}
data class ApprovePermissionButton(
val enabled: Boolean,

View file

@ -9,7 +9,7 @@ data class SwapStateHolder(
val fee: FeeState = FeeState.Loaded(),
val warnings: List<SwapWarning> = emptyList(),
val permissionState: SwapPermissionStateHolder? = null,
val permissionState: SwapPermissionState = SwapPermissionState.Empty,
val successState: SwapSuccessStateHolder? = null,
val selectTokenState: SwapSelectTokenStateHolder? = null,

View file

@ -26,12 +26,12 @@ import com.tangem.core.ui.components.atoms.Hand
import com.tangem.core.ui.res.TangemTheme
import com.tangem.feature.swap.models.ApprovePermissionButton
import com.tangem.feature.swap.models.CancelPermissionButton
import com.tangem.feature.swap.models.SwapPermissionStateHolder
import com.tangem.feature.swap.models.SwapPermissionState
import com.tangem.feature.swap.presentation.R
@Composable
fun SwapPermissionBottomSheetContent(
data: SwapPermissionStateHolder?,
data: SwapPermissionState.ReadyForRequest?,
onCancel: () -> Unit,
) {
Column(
@ -209,7 +209,7 @@ fun Preview_AgreementBottomSheet_InDarkTheme() {
}
}
private val previewData = SwapPermissionStateHolder(
private val previewData = SwapPermissionState.ReadyForRequest(
currency = "DAI",
amount = "",
walletAddress = "",

View file

@ -11,6 +11,7 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.res.stringResource
import com.tangem.core.ui.components.appbar.AppBarWithBackButton
import com.tangem.core.ui.res.TangemTheme
import com.tangem.feature.swap.models.SwapPermissionState
import com.tangem.feature.swap.models.SwapStateHolder
import com.tangem.feature.swap.presentation.R
import kotlinx.coroutines.launch
@ -34,7 +35,7 @@ internal fun SwapScreen(stateHolder: SwapStateHolder) {
},
sheetContent = {
SwapPermissionBottomSheetContent(
data = stateHolder.permissionState,
data = stateHolder.permissionState as? SwapPermissionState.ReadyForRequest,
onCancel = { coroutineScope.launch { bottomSheetScaffoldState.bottomSheetState.collapse() } },
)
},
@ -51,7 +52,7 @@ internal fun SwapScreen(stateHolder: SwapStateHolder) {
onPermissionWarningClick = {
coroutineScope.launch {
if (bottomSheetScaffoldState.bottomSheetState.isCollapsed
&& stateHolder.permissionState != null
&& stateHolder.permissionState is SwapPermissionState.ReadyForRequest
) {
bottomSheetScaffoldState.bottomSheetState.expand()
} else {

View file

@ -14,6 +14,7 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.Card
import androidx.compose.material.CircularProgressIndicator
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
@ -27,6 +28,7 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import com.tangem.core.ui.components.CardWithIcon
import com.tangem.core.ui.components.ClickableWarningCard
import com.tangem.core.ui.components.Keyboard
import com.tangem.core.ui.components.PrimaryButtonIconRight
@ -39,6 +41,7 @@ import com.tangem.core.ui.res.TangemTheme
import com.tangem.feature.swap.models.FeeState
import com.tangem.feature.swap.models.SwapButton
import com.tangem.feature.swap.models.SwapCardData
import com.tangem.feature.swap.models.SwapPermissionState
import com.tangem.feature.swap.models.SwapStateHolder
import com.tangem.feature.swap.models.SwapWarning
import com.tangem.feature.swap.models.TransactionCardType
@ -84,6 +87,21 @@ internal fun SwapScreenContent(
)
}
if (state.permissionState is SwapPermissionState.InProgress) {
CardWithIcon(
title = stringResource(id = R.string.swapping_pending_transaction_title),
description = stringResource(id = R.string.swapping_pending_transaction_subtitle),
icon = {
CircularProgressIndicator(
modifier = Modifier
.size(TangemTheme.dimens.size16),
color = TangemTheme.colors.icon.primary1,
strokeWidth = TangemTheme.dimens.size2,
)
},
)
}
PrimaryButtonIconRight(
modifier = Modifier.fillMaxWidth(),
text = stringResource(id = R.string.swapping_swap),
@ -261,6 +279,7 @@ private val state = SwapStateHolder(
networkCurrency = "MATIC",
swapButton = SwapButton(enabled = true, loading = false, onClick = {}),
onRefresh = {}, onBackClicked = {}, onChangeCardsClicked = {},
permissionState = SwapPermissionState.InProgress,
)
@Preview