diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml
index c45019e608..e81c23629f 100644
--- a/core/res/src/main/res/values-de/strings.xml
+++ b/core/res/src/main/res/values-de/strings.xml
@@ -207,6 +207,8 @@
Choose token
Your tokens
Other tokens
+ Waiting
+ Transaction in progress…
Failed to load the information about the referral program. Please try again later.
Failed to load the information about the referral program. Reason: %s. Please try again later.
Your participation request could not be processed. Reason: %s. Please try again later. If the problem persists — feel free to contact our support.
diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml
index 141884f103..7fa8a61c7d 100644
--- a/core/res/src/main/res/values-fr/strings.xml
+++ b/core/res/src/main/res/values-fr/strings.xml
@@ -207,6 +207,8 @@
Choose token
Your tokens
Other tokens
+ Waiting
+ Transaction in progress…
Failed to load the information about the referral program. Please try again later.
Failed to load the information about the referral program. Reason: %s. Please try again later.
Your participation request could not be processed. Reason: %s. Please try again later. If the problem persists — feel free to contact our support.
diff --git a/core/res/src/main/res/values-it/strings.xml b/core/res/src/main/res/values-it/strings.xml
index 191394da45..d183fa7130 100644
--- a/core/res/src/main/res/values-it/strings.xml
+++ b/core/res/src/main/res/values-it/strings.xml
@@ -207,6 +207,8 @@
Choose token
Your tokens
Other tokens
+ Waiting
+ Transaction in progress…
Failed to load the information about the referral program. Please try again later.
Failed to load the information about the referral program. Reason: %s. Please try again later.
Your participation request could not be processed. Reason: %s. Please try again later. If the problem persists — feel free to contact our support.
diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml
index ab80bdbeee..1301436efc 100644
--- a/core/res/src/main/res/values-ru/strings.xml
+++ b/core/res/src/main/res/values-ru/strings.xml
@@ -207,6 +207,8 @@
Выберите токен
Ваши токены
Другие токены
+ Подождите
+ Транзакция в процессе…
Не удалось загрузить информацию по реферальной программе. Пожалуйста, попробуйте позже.
Не удалось загрузить информацию по реферальной программе. Код ошибки: %s. Пожалуйста, попробуйте позже.
Не удалось обработать вашу заявку на участие. Код ошибки: %s. Пожалуйста, попробуйте позже. Если проблема сохранится, вы можете обратиться в техподдержку.
diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml
index db71c3e8d1..0824f29b0f 100644
--- a/core/res/src/main/res/values/strings.xml
+++ b/core/res/src/main/res/values/strings.xml
@@ -207,6 +207,8 @@
Choose token
Your tokens
Other tokens
+ Waiting
+ Transaction in progress…
Failed to load the information about the referral program. Please try again later.
Failed to load the information about the referral program. Error code: %s. Please try again later.
Your participation request could not be processed. Error code: %s. Please try again later. If the problem persists — feel free to contact our support.
diff --git a/core/ui/src/main/java/com/tangem/core/ui/res/TangemDimens.kt b/core/ui/src/main/java/com/tangem/core/ui/res/TangemDimens.kt
index 3fdc09bdb6..c97f04e9f0 100644
--- a/core/ui/src/main/java/com/tangem/core/ui/res/TangemDimens.kt
+++ b/core/ui/src/main/java/com/tangem/core/ui/res/TangemDimens.kt
@@ -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,
diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/SwapPermissionStateHolder.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/SwapPermissionStateHolder.kt
index 76d4ee8587..0fd2f4fef7 100644
--- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/SwapPermissionStateHolder.kt
+++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/SwapPermissionStateHolder.kt
@@ -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,
diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/SwapStateHolder.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/SwapStateHolder.kt
index f8e9dada94..3f78f0a311 100644
--- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/SwapStateHolder.kt
+++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/models/SwapStateHolder.kt
@@ -9,7 +9,7 @@ data class SwapStateHolder(
val fee: FeeState = FeeState.Loaded(),
val warnings: List = emptyList(),
- val permissionState: SwapPermissionStateHolder? = null,
+ val permissionState: SwapPermissionState = SwapPermissionState.Empty,
val successState: SwapSuccessStateHolder? = null,
val selectTokenState: SwapSelectTokenStateHolder? = null,
diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapPermissionBottomSheetContent.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapPermissionBottomSheetContent.kt
index 0d8f96198f..e81b1da59c 100644
--- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapPermissionBottomSheetContent.kt
+++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapPermissionBottomSheetContent.kt
@@ -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 = "",
diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreen.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreen.kt
index e49409bd4e..d93ee56774 100644
--- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreen.kt
+++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreen.kt
@@ -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 {
diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreenContent.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreenContent.kt
index 41c04fcfbd..a0475d02a6 100644
--- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreenContent.kt
+++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreenContent.kt
@@ -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