diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml
index 673c284024..2cbf9e75ad 100644
--- a/core/res/src/main/res/values-de/strings.xml
+++ b/core/res/src/main/res/values-de/strings.xml
@@ -147,6 +147,7 @@
Schließen
Demnächst verfügbar
Bestätigen
+ Verbinden
Kontakt zum Tangem-Support
Kontakt zum Visa-Support
Weiter
@@ -249,6 +250,10 @@
Allgemeine Geschäftsbedingungen
Nutzungsbedingungen
Heute
+
+ - %d Token
+ - %d Token
+
Transaktion fehlgeschlagen
Transaktionsstatus
Transaktionen
diff --git a/core/res/src/main/res/values-es/strings.xml b/core/res/src/main/res/values-es/strings.xml
index 40a09f5b5a..f134baf614 100644
--- a/core/res/src/main/res/values-es/strings.xml
+++ b/core/res/src/main/res/values-es/strings.xml
@@ -1,5 +1,9 @@
+ Archivar cuenta
+ Archivo
+ Estás archivando esta cuenta, pero siempre puedes recuperarla.
+ Cuenta
¿No encuentra el token en su billetera? Consulte la sección de Mercados para encontrarlo y añadirlo a la compra
¿No encuentra el token en su billetera? Consulte los mercados para encontrarlo y añadirlo a la venta
Vender
@@ -34,12 +38,16 @@
Esta tarjeta no admite tokens en la red %1$s debido a una limitación del firmware.
¿Tiene dificultades para escanear su tarjeta/anillo?
Esta tarjeta no está diseñada para funcionar con Tangem
+ Utilice %1$s para desbloquear de forma rápida y segura su biletera y autorizar todas las acciones importantes, como la firma de transacciones. En el caso de las billeteras físicas, seguirá necesitando una tarjeta para firmar.
Tarifa por defecto
Habilite las Tarifas predeterminadas para establecer automáticamente las tarifas de transacción y omitir la página de Tarifas al enviar fondos. Siempre puede volver a esta página si es necesario.
Vaya a ajustes para habilitar la autenticación biométrica en la Tangem App
Habilitar autenticación biométrica
+ Para deshabilitar %1$s deberá ingresar su código de acceso para desbloquear la aplicación e interactuar con su billetera.
Esto eliminará todos los códigos de acceso guardados de la billetera. Cualquier operación posterior con la billetera requerirá introducir el código de acceso.
Eliminar la tarjeta guardada borra todos las billeteras guardadas y sus códigos de acceso de la app.
+ Requerir código de acceso
+ Esta opción desactiva la autenticación biométrica para acciones importantes. Se le pedirá que introduzca su código de acceso cada vez que, por ejemplo, deba firmar una transacción.
Guardar código de acceso
Se solicitará la autenticación biométrica en lugar del código de acceso para las interacciones con su tarjeta o anillo.
Mantener la billetera en la app
@@ -135,6 +143,7 @@
Cerrar
Próximamente
Confirme
+ Conectando
Contacte con el soporte de Tangem
Contacte con el soporte de Visa
Continuar
@@ -153,6 +162,7 @@
- días
Suprimir
+ Desactivar
Desactivado
Desconectar
Listo
@@ -191,6 +201,7 @@
No
Ninguna dirección
No aregada
+ Ahora no
Ahora
OK
Abrir en el navegador
@@ -206,6 +217,7 @@
Rechazar
Recargar
Renombrar
+ Requerido
Guarde
Guardar cambios
Buscar
@@ -235,6 +247,10 @@
términos y condiciones
Condiciones de uso
Hoy
+
+ - %d ficha
+ - %d fichas
+
Transacción fallida
Estado de la transacción
Transacciones
@@ -301,6 +317,8 @@
Detalles
Compruebe su conexión a internet o cambia a una red diferente
Condiciones de uso
+ Recibir activos
+ Error de Wallet Connect
Ha usado una tarjeta de otra billetera. Toque la tarjeta asociada con esta billetera
No hay fondos suficientes para la transacción. Por favor, recargue su cuenta.
Mis tokens
@@ -358,6 +376,7 @@
Proveedor
Mejor tarifa
Lista de advertencias de la FCA
+ Proveedor en la lista de advertencia de la FCA
Disponible hasta %s
Disponible desde %s
No disponible para este par
@@ -405,6 +424,8 @@
Escanee
a %s
En la red %s
+ ¿Está seguro de que desea salir del proceso de creación del código de acceso?
+ Si lo haces, tendrás que empezar de nuevo.
Mantente al día con las últimas funciones y noticias
Esta información fue generada con IA.\nPulse aquí si encuentra algún error.
Para cambiar el código de acceso coloque la tarjeta o el anillo como se muestra arriba y no lo retire hasta el fin de la operación
@@ -908,9 +929,14 @@
Cantidad no válida
La tarifa excede el saldo
El monto total excede el saldo
+ Intercambiar y enviar
+ ¿Continuar con la conversión? Esto borrará tus datos anteriores.
+ Confirmar Conversión
Envía cualquier token y lo convertiremos en el camino. Su destinatario obtiene exactamente lo que necesita, sin problemas.
- Se enviará un destinatario
+ El destinatario recibirá
+ Al destinatario
Cantidad a recibir
+ ¿Seguro que desea cancelar la conversión? Se borrarán sus datos anteriores.
Enviar con swap
Transacción enviada
Escanee la tarjeta/anillo que quiere configurar
@@ -1210,8 +1236,10 @@
Consíguelo ahora con un 10 % de descuento
Accede a más de 13 000 criptomonedas. Compra, vende, intercambia y realiza staking con un solo toque.\nVincula hasta tres tarjetas para hacer copias de seguridad.
Descubre Tangem Wallet
+ Cambiar código de acceso
Manténteinformado sobre las transacciones entrantes de la billetera y las actualizaciones de Tangem.
Notificaciones de transacciones
+ Establecer código de acceso
Ajustes de la wallet
Tangem
Use %s o escanee una tarjeta/anillo para desbloquear el acceso a su billetera
@@ -1354,6 +1382,12 @@
Desconectar todo
Texto sobre desconexión de todas las dApps
Desconectar todas las dApps
+ Intente emparejar nuevamente con una URI nueva
+ Dominio de dApp no válido
+ %s no especifica ninguna cadena de bloques, ni obligatoria ni opcional. Asegúrese de haber utilizado el URI correcto
+ Sin redes
+ Por favor, genere una nueva URI e intente conectarse nuevamente
+ Propuesta de conexión caducada
Cambios estimados en la billetera
La transacción no ha podido ser simulada. Por favor, proceda con precaución.
La estimación no es compatible con %s
@@ -1369,6 +1403,7 @@
No se han detectado cambios en la cartera
Se han detectado riesgos potenciales o comportamiento malicioso. Conectarse o firmar transacciones puede resultar en la pérdida de fondos.
Riesgo de seguridad conocido
+ Abra la aplicación Web3 y elija la opción WalletConnect
Solicitud de
Firmar de todos modos
Tipo de firma
diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml
index bbf154df4e..2ea53e27ab 100644
--- a/core/res/src/main/res/values-fr/strings.xml
+++ b/core/res/src/main/res/values-fr/strings.xml
@@ -124,6 +124,7 @@
Réclamez des récompenses
Fermer
Confirmez
+ Connexion
Continuer
Convertir
Copier
@@ -222,6 +223,10 @@
termes et conditions
Conditions d\'utilisation
Aujourd\'hui
+
+ - %d jeton
+ - %d jetons
+
La transaction a échoué
Statut de la transaction
Transactions
diff --git a/core/res/src/main/res/values-it/strings.xml b/core/res/src/main/res/values-it/strings.xml
index 5caec91961..82010eacf1 100644
--- a/core/res/src/main/res/values-it/strings.xml
+++ b/core/res/src/main/res/values-it/strings.xml
@@ -10,6 +10,7 @@
Impossibile creare la transazione
Non hai fornito l\'accesso alla tua videocamera, modifica le tue impostazioni sulla privacy
Annulla
+ Connessione in corso
Rimuovere
Fatto
Errore
@@ -20,6 +21,10 @@
Invia
Impossibile inviare la transazione
Con successo
+
+ - %d gettone
+ - %d gettoni
+
Codice di accesso
Prima di scansionare la carta sarà necessario inserire il codice di accesso corretto
Mantenimento della carta
diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml
index a598944ae0..6c32d0ad19 100644
--- a/core/res/src/main/res/values-ja/strings.xml
+++ b/core/res/src/main/res/values-ja/strings.xml
@@ -12,6 +12,10 @@
ウォレットのロックを解除するには、 %s桁のアクセスコードを設定します。
アクセスコードの作成
アクセスコード
+ アカウントをアーカイブする
+ アーカイブ
+ このアカウントをアーカイブしますが、いつでも復元できます。
+ アカウント
アカウントを追加
保存
アカウント名
@@ -171,6 +175,7 @@
閉じる
近日公開
確認
+ 接続中
Tangemサポートへ問い合わせる
Visaサポートへ問い合わせる
続ける
@@ -227,6 +232,7 @@
いいえ
アドレスがありません
未追加
+ 今はしない
今
わかりました
ブラウザで開く
@@ -273,6 +279,9 @@
利用規約
利用規約
今日
+
+ - %d トークン
+
取引が失敗しました
取引状況
取引
@@ -455,6 +464,7 @@
セットアップを完了するには、アクセスコードを使用してアプリへのアクセスを保護します。
そうした場合は、最初からやり直す必要があります。
アクティベーションプロセスを終了してもよろしいですか?
+ 実行すると、最初からやり直す必要があります。
Googleドライブのバックアップに保存されている既存のウォレットを復元する
Googleドライブのバックアップ
バックアップへ移動
@@ -968,12 +978,14 @@
トークンを変更してもよろしいですか? 変更後、以前のデータはリセットされます。
トークンの変更
スワップして送信
+ 変換を続行しますか? 以前のデータはリセットされます。
+ 変換を確定
トークンを送信すれば、送信中に変換されます。受信者は必要なものをシームレスに受け取ります。
受信者は受け取ります
受信者に送信されます
受取金額
変換をキャンセルしてもよろしいですか? 変更後、以前のデータはリセットされます。
- キャンセルの確認
+ キャンセルを確定
スワップして送信
取引が送信されました
設定したいカードまたはリングをスキャンするために準備してください。
@@ -1462,6 +1474,12 @@
すべての接続を解除する
すべてのdAppsの接続解除に関するテキスト
すべてのdAppを接続解除する
+ 新しいURIで、再度ペアリングを試してください
+ 無効なdAppドメイン
+ %sはブロックチェーンを指定していません(必須でもオプションでもありません)。 \n正しいURIを使用していることを確認してください。
+ ネットワークなし
+ 新しいURIを生成し、再度接続してください
+ 接続提案の期限が切れました
ウォレットの変更の予測
取引をシミュレーションできませんでした。注意して続行してください。
%sでは見積もりはサポートされていません
@@ -1477,6 +1495,7 @@
ウォレットの変更は検出されませんでした
潜在的なリスクまたは悪意のある行為が検出されました。接続または取引への署名は資金の損失につながる可能性があります。
既知のセキュリティリスク
+ Web3アプリを開き、WalletConnectオプションを選択します
リクエスト元
とにかく署名する
署名タイプ
diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml
index 10a53f974e..3807708210 100644
--- a/core/res/src/main/res/values-ru/strings.xml
+++ b/core/res/src/main/res/values-ru/strings.xml
@@ -121,6 +121,7 @@
Вывести награду
Закрыть
Подтвердить
+ Подключение
Продолжить
Копировать
Скопировать адрес
@@ -219,6 +220,12 @@
условия участия
Условиями использования
Сегодня
+
+ - %d токен
+ - %d токена
+ - %d токенов
+ - %d токенов
+
Ошибка транзакции
Статус транзакции
Транзакции
@@ -895,6 +902,18 @@
Недопустимая сумма
Комиссия превышает остаток
Отправляемая сумма превышает остаток
+ Вы уверены, что хотите изменить токен для получения? Это действие сбросит ранее введённые данные.
+ Изменение токена
+ Обмен и отправка
+ Продолжить с конвертацией? Это действие удалит предыдущие данные
+ Подтвердить конвертацию
+ Отправьте любой токен, и мы конвертируем его по пути. Адресат получит именно то, что нужно — без лишних действий.
+ Будет получено
+ Получателю
+ Сумма к получению
+ Вы уверены, что хотите отменить конвертацию? Ваши предыдущие данные будут удалены.
+ Убрать конвертацию
+ Отправка с обменом
Транзакция отправлена
Подготовьтесь к сканированию кольца или карты, которую вы хотите настроить.
Забыть кошелек
diff --git a/core/res/src/main/res/values-uk-rUA/strings.xml b/core/res/src/main/res/values-uk-rUA/strings.xml
index 9c820fac97..5f7bacb6cf 100644
--- a/core/res/src/main/res/values-uk-rUA/strings.xml
+++ b/core/res/src/main/res/values-uk-rUA/strings.xml
@@ -120,6 +120,7 @@
Отримати винагороди
Закрити
Підтвердити
+ Підключення
Продовжити
Копіювати
Скопіювати адресу
@@ -218,6 +219,12 @@
умови участі
Умовами використання
Сьогодні
+
+ - %d токен
+ - %d токени
+ - %d токенів
+ - %d токенів
+
Помилка транзакції
Статус транзакції
Транзакції
diff --git a/core/res/src/main/res/values-zh-rTW/strings.xml b/core/res/src/main/res/values-zh-rTW/strings.xml
index b33588b325..256268c8fb 100644
--- a/core/res/src/main/res/values-zh-rTW/strings.xml
+++ b/core/res/src/main/res/values-zh-rTW/strings.xml
@@ -53,6 +53,7 @@
删除
選擇代幣
關閉
+ 連線中
繼續
複製
複製地址
@@ -90,6 +91,9 @@
成功
交換
條款和條件
+
+ - %d 代幣
+
交易
我了解
無法觸達
@@ -129,6 +133,7 @@
更多
檢查您的網路連接或切換到其他網絡
服務條款
+ WalletConnect 錯誤
您使用了另一個錢包中的卡。點按與此錢包關聯的卡片
沒有足夠的資金進行交易。請先入金
以下信息是可選的。如果不想共享,可以將其刪除
diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml
index 62f1640aa6..0b4277eab7 100644
--- a/core/res/src/main/res/values/strings.xml
+++ b/core/res/src/main/res/values/strings.xml
@@ -178,6 +178,7 @@
Close
Coming Soon
Confirm
+ Connecting
Contact Tangem Support
Contact Visa Support
Continue
@@ -284,6 +285,10 @@
terms and conditions
Terms of Use
Today
+
+ - %d token
+ - %d tokens
+
Transaction failed
Transaction status
Transactions
@@ -354,6 +359,7 @@
Sending assets in other networks will result in permanent loss.
%s network
Send funds using only
+ Wallet Connect error
You have used a card or ring from another wallet. Tap the card or ring associated with this wallet
Not enough funds for the transaction. Please top up your account.
My tokens
@@ -459,6 +465,7 @@
Scan Tangem
to %s
On %s network
+ Are you sure you want to exit the access code creation process?
Backup Now
To complete setup, back up your wallet and secure app access with a Access Code.
Finish Now
@@ -986,17 +993,17 @@
Invalid amount
Fee exceeds balance
Total amount exceeds balance
- Are you sure you want to change the token? After changing, previous data will be reset.
+ Are you sure you want to change the receiving token? This will reset your previously entered data.
Changing token
Swap and send
- Proceed with conversion? Previous data will be reset.
- Confirm Convert
+ Proceed with conversion? This will clear your previous data.
+ Confirm Conversion
Send any token, and we’ll convert it on the way. Your recipient gets exactly what they need—seamlessly.
Recipient will receive
- Will be sent a recipient
+ To recipient
Amount to receive
- Are you sure you want to cancel the conversion? After changing, previous data will be reset.
- Confirm cancellation
+ Are you sure you want to cancel the conversion? Your previous data will be cleared.
+ Remove Conversion
Send with swap
Transaction sent
Prepare to scan card or ring you want to set up.
@@ -1534,6 +1541,12 @@
Disconnect all
Text about discnected all dApps
Disconect All dApps
+ Try pairing again with a fresh URI
+ Invalid dApp domain
+ %s does not specify any blockchains — neither required nor optional.\nPlease ensure you used the correct URI
+ No networks
+ Please, generate a new URI and attempt connecting again
+ Connection proposal expired
Estimated wallet changes
The transaction couldn\'t be simulated. Please proceed with caution.
Estimation is not supported for %s
@@ -1549,6 +1562,7 @@
No wallet changes detected
Potential risks or malicious behavior have been detected. Connecting or signing transactions may lead to loss of funds.
Known security risk
+ Open Web3 app and chose WalletConnect option
Request from
Sign anyway
Signature Type
diff --git a/domain/swap/src/main/java/com/tangem/domain/swap/usecase/GetSwapSupportedPairsUseCase.kt b/domain/swap/src/main/java/com/tangem/domain/swap/usecase/GetSwapSupportedPairsUseCase.kt
index b470cc5a4a..6ef54ca2bd 100644
--- a/domain/swap/src/main/java/com/tangem/domain/swap/usecase/GetSwapSupportedPairsUseCase.kt
+++ b/domain/swap/src/main/java/com/tangem/domain/swap/usecase/GetSwapSupportedPairsUseCase.kt
@@ -67,7 +67,9 @@ class GetSwapSupportedPairsUseCase(
// Search available to swap currency
.filter { pair ->
cryptoCurrencyList.any { currencyStatus ->
- currencyStatus.id == pair.to.currency.id
+ // Allowed only on networks without tx extras (e.i. memo and destination tag)
+ val isExtrasSupported = currencyStatus.network.transactionExtrasType.isTxExtrasSupported()
+ currencyStatus.id == pair.to.currency.id && !isExtrasSupported
}
}.map { pair -> SwapCryptoCurrency(groupingCurrency(pair), pair.providers) }
diff --git a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/SwapAmountModel.kt b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/SwapAmountModel.kt
index fb4748b307..4512f765ac 100644
--- a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/SwapAmountModel.kt
+++ b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/SwapAmountModel.kt
@@ -22,11 +22,11 @@ import com.tangem.domain.appcurrency.model.AppCurrency
import com.tangem.domain.express.models.ExpressError
import com.tangem.domain.models.currency.CryptoCurrency
import com.tangem.domain.models.currency.CryptoCurrencyStatus
+import com.tangem.domain.notifications.ShouldShowNotificationUseCase
import com.tangem.domain.settings.usercountry.GetUserCountryUseCase
import com.tangem.domain.settings.usercountry.models.UserCountry
-import com.tangem.domain.swap.models.SwapCurrencies
-import com.tangem.domain.notifications.ShouldShowNotificationUseCase
import com.tangem.domain.settings.usercountry.models.needApplyFCARestrictions
+import com.tangem.domain.swap.models.SwapCurrencies
import com.tangem.domain.swap.models.SwapDirection
import com.tangem.domain.swap.models.SwapDirection.Companion.withSwapDirection
import com.tangem.domain.swap.models.SwapQuoteModel
@@ -56,8 +56,8 @@ import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import com.tangem.utils.coroutines.Debouncer
import com.tangem.utils.coroutines.PeriodicTask
import com.tangem.utils.coroutines.SingleTaskScheduler
-import com.tangem.utils.extensions.isZero
import com.tangem.utils.extensions.orZero
+import com.tangem.utils.isNullOrZero
import com.tangem.utils.transformer.update
import kotlinx.coroutines.async
import kotlinx.coroutines.awaitAll
@@ -199,8 +199,6 @@ internal class SwapAmountModel @Inject constructor(
)
amountDebouncer.debounce(
coroutineScope = modelScope,
- waitMs = DEBOUNCE_AMOUNT_DELAY,
- forceUpdate = true,
destinationFunction = {
startLoadingQuotesTask(isSilentReload = false)
},
@@ -532,11 +530,12 @@ internal class SwapAmountModel @Inject constructor(
SwapDirection.Reverse -> state.secondaryAmount.amountField
} as? AmountState.Data
- if (fromAmount?.amountTextField?.isError == true) return
+ val fromAmountValue = fromAmount?.amountTextField?.cryptoAmount?.value.orZero()
- val fromAmountValue = fromAmount?.amountTextField?.cryptoAmount?.value ?: return
-
- if (fromAmountValue.isZero()) return
+ if (fromAmount?.amountTextField?.isError == true || fromAmountValue.isNullOrZero()) {
+ uiState.transformerUpdate(SwapQuoteEmptyStateTransformer)
+ return
+ }
val swapGroups = state.swapCurrencies.getGroupWithDirection(state.swapDirection)
diff --git a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/SwapAmountQuoteUtils.kt b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/SwapAmountQuoteUtils.kt
index 06fb3dc71b..d696518b75 100644
--- a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/SwapAmountQuoteUtils.kt
+++ b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/SwapAmountQuoteUtils.kt
@@ -56,15 +56,20 @@ internal object SwapAmountQuoteUtils {
): SwapAmountUM {
if (this !is SwapAmountUM.Content) return this
- return if (
+ val updatedAmountField = if (
selectedAmountType == SwapAmountType.From && swapDirection == SwapDirection.Direct
) {
val amountFieldUM = primaryAmount as? SwapAmountFieldUM.Content ?: return this
- copy(primaryAmount = amountFieldUM.onPrimaryAmount(primaryCryptoCurrencyStatus))
+ amountFieldUM.onPrimaryAmount(primaryCryptoCurrencyStatus)
} else {
if (secondaryCryptoCurrencyStatus == null) return this
val amountFieldUM = secondaryAmount as? SwapAmountFieldUM.Content ?: return this
- copy(secondaryAmount = amountFieldUM.onSecondaryAmount(secondaryCryptoCurrencyStatus))
+ amountFieldUM.onSecondaryAmount(secondaryCryptoCurrencyStatus)
}
+
+ return copy(
+ isPrimaryButtonEnabled = updatedAmountField.amountField.isPrimaryButtonEnabled,
+ primaryAmount = updatedAmountField,
+ )
}
}
\ No newline at end of file
diff --git a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/transformers/SwapAmountValueChangeTransformer.kt b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/transformers/SwapAmountValueChangeTransformer.kt
index 5a7e9eccb3..c364fd36a0 100644
--- a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/transformers/SwapAmountValueChangeTransformer.kt
+++ b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/transformers/SwapAmountValueChangeTransformer.kt
@@ -17,33 +17,39 @@ internal class SwapAmountValueChangeTransformer(
override fun transform(prevState: SwapAmountUM): SwapAmountUM {
if (prevState !is SwapAmountUM.Content) return prevState
- return prevState
- .copy(selectedQuote = SwapQuoteUM.Loading)
- .updateAmount(
- onPrimaryAmount = { primaryStatus ->
+ val updatedState = prevState.updateAmount(
+ onPrimaryAmount = { primaryStatus ->
+ copy(
+ amountField = AmountFieldChangeTransformer(
+ cryptoCurrencyStatus = primaryStatus,
+ maxEnterAmount = primaryMaximumAmountBoundary,
+ minimumTransactionAmount = primaryMinimumAmountBoundary,
+ value = value,
+ ).transform(prevState.primaryAmount.amountField),
+ )
+ },
+ onSecondaryAmount = { secondaryStatus ->
+ if (secondaryMaximumAmountBoundary != null) {
copy(
amountField = AmountFieldChangeTransformer(
- cryptoCurrencyStatus = primaryStatus,
- maxEnterAmount = primaryMaximumAmountBoundary,
- minimumTransactionAmount = primaryMinimumAmountBoundary,
+ cryptoCurrencyStatus = secondaryStatus,
+ maxEnterAmount = secondaryMaximumAmountBoundary,
+ minimumTransactionAmount = secondaryMinimumAmountBoundary,
value = value,
- ).transform(prevState.primaryAmount.amountField),
+ ).transform(prevState.secondaryAmount.amountField),
)
- },
- onSecondaryAmount = { secondaryStatus ->
- if (secondaryMaximumAmountBoundary != null) {
- copy(
- amountField = AmountFieldChangeTransformer(
- cryptoCurrencyStatus = secondaryStatus,
- maxEnterAmount = secondaryMaximumAmountBoundary,
- minimumTransactionAmount = secondaryMinimumAmountBoundary,
- value = value,
- ).transform(prevState.secondaryAmount.amountField),
- )
- } else {
- this
- }
- },
- )
+ } else {
+ this
+ }
+ },
+ )
+
+ return (updatedState as? SwapAmountUM.Content)?.copy(
+ selectedQuote = if (updatedState.isPrimaryButtonEnabled) {
+ SwapQuoteUM.Empty
+ } else {
+ SwapQuoteUM.Loading
+ },
+ ) ?: updatedState
}
}
\ No newline at end of file
diff --git a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/transformers/SwapQuoteEmptyStateTransformer.kt b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/transformers/SwapQuoteEmptyStateTransformer.kt
new file mode 100644
index 0000000000..32cd5ea158
--- /dev/null
+++ b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/amount/model/transformers/SwapQuoteEmptyStateTransformer.kt
@@ -0,0 +1,17 @@
+package com.tangem.features.swap.v2.impl.amount.model.transformers
+
+import com.tangem.features.swap.v2.impl.amount.entity.SwapAmountUM
+import com.tangem.features.swap.v2.impl.common.entity.SwapQuoteUM
+import com.tangem.utils.transformer.Transformer
+
+internal object SwapQuoteEmptyStateTransformer : Transformer {
+
+ override fun transform(prevState: SwapAmountUM): SwapAmountUM {
+ if (prevState !is SwapAmountUM.Content) return prevState
+
+ return prevState.copy(
+ selectedQuote = SwapQuoteUM.Empty,
+ isPrimaryButtonEnabled = false,
+ )
+ }
+}
\ No newline at end of file
diff --git a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/choosetoken/fromSupported/ui/SwapChooseTokenNetworkContent.kt b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/choosetoken/fromSupported/ui/SwapChooseTokenNetworkContent.kt
index d2c33cddad..b22718a200 100644
--- a/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/choosetoken/fromSupported/ui/SwapChooseTokenNetworkContent.kt
+++ b/features/swap-v2/impl/src/main/java/com/tangem/features/swap/v2/impl/choosetoken/fromSupported/ui/SwapChooseTokenNetworkContent.kt
@@ -96,9 +96,12 @@ internal fun SwapChooseTokenNetworkContent(state: SwapChooseTokenNetworkContentU
@Composable
private fun SwapChooseTokenNetworkContentList(swapNetworks: ImmutableList) {
Column(
- modifier = Modifier
- .padding(top = 8.dp)
- .padding(16.dp),
+ modifier = Modifier.padding(
+ top = 8.dp,
+ start = 16.dp,
+ end = 16.dp,
+ bottom = 16.dp,
+ ),
) {
swapNetworks.fastForEachIndexed { index, network ->
Row(
@@ -116,10 +119,7 @@ private fun SwapChooseTokenNetworkContentList(swapNetworks: ImmutableList