Updated on 2026-08-14
This commit is contained in:
parent
947c5e44e6
commit
ee097ad9f0
17 changed files with 247 additions and 147 deletions
|
|
@ -9,6 +9,7 @@ import com.tangem.common.ui.amountScreen.models.AmountSegmentedButtonsConfig
|
|||
import com.tangem.common.ui.amountScreen.models.AmountState
|
||||
import com.tangem.common.ui.amountScreen.models.EnterAmountBoundary
|
||||
import com.tangem.core.ui.components.currency.icon.converter.CryptoCurrencyToIconStateConverter
|
||||
import com.tangem.core.ui.extensions.combinedReference
|
||||
import com.tangem.core.ui.extensions.resourceReference
|
||||
import com.tangem.core.ui.extensions.stringReference
|
||||
import com.tangem.core.ui.extensions.wrappedList
|
||||
|
|
@ -18,6 +19,7 @@ import com.tangem.core.ui.format.bigdecimal.format
|
|||
import com.tangem.domain.appcurrency.model.AppCurrency
|
||||
import com.tangem.domain.models.currency.CryptoCurrencyStatus
|
||||
import com.tangem.utils.Provider
|
||||
import com.tangem.utils.StringsSigns.DOT
|
||||
import com.tangem.utils.converter.Converter
|
||||
import com.tangem.utils.isNullOrZero
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
|
|
@ -120,7 +122,11 @@ class AmountStateConverterV2(
|
|||
return AmountState.Data(
|
||||
title = value.title,
|
||||
availableBalance = if (isRedesignEnabled) {
|
||||
resourceReference(R.string.common_balance, wrappedList(crypto))
|
||||
combinedReference(
|
||||
stringReference(crypto),
|
||||
stringReference(" $DOT "),
|
||||
stringReference(fiat),
|
||||
)
|
||||
} else {
|
||||
resourceReference(R.string.common_crypto_fiat_format, wrappedList(crypto, fiat))
|
||||
},
|
||||
|
|
|
|||
|
|
@ -3,13 +3,16 @@ package com.tangem.common.ui.amountScreen.converters.field
|
|||
import com.tangem.common.ui.R
|
||||
import com.tangem.common.ui.amountScreen.models.AmountState
|
||||
import com.tangem.common.ui.amountScreen.models.EnterAmountBoundary
|
||||
import com.tangem.core.ui.extensions.combinedReference
|
||||
import com.tangem.core.ui.extensions.resourceReference
|
||||
import com.tangem.core.ui.extensions.stringReference
|
||||
import com.tangem.core.ui.extensions.wrappedList
|
||||
import com.tangem.core.ui.format.bigdecimal.crypto
|
||||
import com.tangem.core.ui.format.bigdecimal.fiat
|
||||
import com.tangem.core.ui.format.bigdecimal.format
|
||||
import com.tangem.domain.appcurrency.model.AppCurrency
|
||||
import com.tangem.domain.models.currency.CryptoCurrencyStatus
|
||||
import com.tangem.utils.StringsSigns.DOT
|
||||
import com.tangem.utils.transformer.Transformer
|
||||
|
||||
/**
|
||||
|
|
@ -34,7 +37,11 @@ class AmountBoundaryUpdateTransformer(
|
|||
val crypto = maxEnterAmount.amount.format { crypto(cryptoCurrencyStatus.currency) }
|
||||
|
||||
val availableBalance = if (isRedesignEnabled) {
|
||||
resourceReference(R.string.common_balance, wrappedList(crypto))
|
||||
combinedReference(
|
||||
stringReference(crypto),
|
||||
stringReference(" $DOT "),
|
||||
stringReference(fiat),
|
||||
)
|
||||
} else {
|
||||
resourceReference(R.string.common_crypto_fiat_format, wrappedList(crypto, fiat))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ internal fun LazyListScope.amountFieldV2(
|
|||
} else {
|
||||
Text(
|
||||
text = amountState.title.resolveReference(),
|
||||
style = TangemTheme.typography.caption2,
|
||||
style = TangemTheme.typography.subtitle2,
|
||||
color = TangemTheme.colors.text.tertiary,
|
||||
)
|
||||
}
|
||||
|
|
@ -164,7 +164,7 @@ private fun AmountInfo(amountUM: AmountState, onMaxAmountClick: () -> Unit, modi
|
|||
modifier = Modifier
|
||||
.padding(end = 16.dp)
|
||||
.clip(RoundedCornerShape(16.dp))
|
||||
.background(TangemTheme.colors.background.secondary)
|
||||
.background(TangemTheme.colors.button.secondary)
|
||||
.clickable(
|
||||
interactionSource = remember { MutableInteractionSource() },
|
||||
indication = ripple(),
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ private fun AmountSecondary(amountUM: AmountState, onCurrencyChange: (Boolean) -
|
|||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.animateContentSize()
|
||||
.padding(top = 8.dp),
|
||||
.padding(top = 4.dp),
|
||||
) {
|
||||
if (amountUM is AmountState.Empty) {
|
||||
TextShimmer(
|
||||
|
|
@ -141,6 +141,7 @@ private fun AmountSecondary(amountUM: AmountState, onCurrencyChange: (Boolean) -
|
|||
AmountFieldCurrencyInfo(
|
||||
amountUM = amountUM,
|
||||
onCurrencyChange = onCurrencyChange,
|
||||
|
||||
)
|
||||
AmountFieldError(
|
||||
isError = amountUM.amountTextField.isError,
|
||||
|
|
@ -148,7 +149,7 @@ private fun AmountSecondary(amountUM: AmountState, onCurrencyChange: (Boolean) -
|
|||
error = amountUM.amountTextField.error,
|
||||
modifier = Modifier
|
||||
.align(BottomCenter)
|
||||
.padding(top = 20.dp),
|
||||
.padding(top = 24.dp),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -161,12 +162,13 @@ private fun BoxScope.AmountFieldCurrencyInfo(amountUM: AmountState.Data, onCurre
|
|||
horizontalArrangement = Arrangement.spacedBy(4.dp),
|
||||
modifier = Modifier
|
||||
.align(TopCenter)
|
||||
.padding(bottom = 20.dp)
|
||||
.padding(bottom = 16.dp)
|
||||
.clickable(
|
||||
interactionSource = remember { MutableInteractionSource() },
|
||||
indication = null,
|
||||
onClick = { onCurrencyChange(!amountUM.amountTextField.isFiatValue) },
|
||||
),
|
||||
)
|
||||
.padding(4.dp),
|
||||
) {
|
||||
val iconRotateState by animateFloatAsState(
|
||||
targetValue = if (amountUM.amountTextField.isFiatValue) ROTATED_DEGREE else INITIAL_DEGREE,
|
||||
|
|
@ -324,6 +326,7 @@ private class AmountFieldV2PreviewProvider : PreviewParameterProvider<AmountStat
|
|||
get() = sequenceOf(
|
||||
AmountStatePreviewData.emptyState,
|
||||
AmountStatePreviewData.amountState,
|
||||
AmountStatePreviewData.amountErrorState,
|
||||
)
|
||||
}
|
||||
// endregion
|
||||
|
|
@ -320,6 +320,8 @@
|
|||
<string name="details_title">Details</string>
|
||||
<string name="disclaimer_error_loading">Überprüfe deine Internetverbindung oder wechseln zu einem anderen Netzwerk</string>
|
||||
<string name="disclaimer_title">Nutzungsbedingungen</string>
|
||||
<string name="email_preface_wc_error">Hallo Support-Team, ich habe einen Fehler mit dem Code %s festgestellt.</string>
|
||||
<string name="email_subject_wc_error">WalletConnect-Fehler</string>
|
||||
<string name="error_wrong_wallet_tapped">Du hast eine Karte oder Ring aus einer anderen Wallet verwendet. Tippe auf die Karte oder Ring, die dieser Wallet zugeordnet ist.</string>
|
||||
<string name="eth_gas_required_exceeds_allowance">Nicht genug Geld für die Transaktion. Bitte lade dein Konto auf.</string>
|
||||
<string name="exchange_tokens_available_tokens_header">Meine Token</string>
|
||||
|
|
@ -1431,6 +1433,12 @@
|
|||
<string name="wc_disconnect_all">Alle trennen</string>
|
||||
<string name="wc_disconnect_all_alert_desc">Text über die Trennung aller dApps</string>
|
||||
<string name="wc_disconnect_all_alert_title">Alle dApps trennen</string>
|
||||
<string name="wc_errors_invalid_domain_subtitle">Versuchen Sie erneut, mit einer neuen URI zu koppeln</string>
|
||||
<string name="wc_errors_invalid_domain_title">Ungültige dApp-Domain</string>
|
||||
<string name="wc_errors_no_blockchains_subtitle">%s gibt keine Blockchains an — weder erforderlich noch optional.\nBitte stellen Sie sicher, dass Sie die richtige URI verwendet haben</string>
|
||||
<string name="wc_errors_no_blockchains_title">Keine Netzwerke</string>
|
||||
<string name="wc_errors_proposal_expired_subtitle">Bitte generieren Sie eine neue URI und versuchen Sie erneut, eine Verbindung herzustellen</string>
|
||||
<string name="wc_errors_proposal_expired_title">Verbindungsvorschlag abgelaufen</string>
|
||||
<string name="wc_estimated_wallet_changes">Geschätzte Wallet-Änderungen</string>
|
||||
<string name="wc_estimated_wallet_changes_not_simulated">Die Transaktion konnte nicht simuliert werden. Bitte sei vorsichtig.</string>
|
||||
<string name="wc_malicious_transaction">Böswillige/ gefährliche Transaktion</string>
|
||||
|
|
|
|||
|
|
@ -318,7 +318,8 @@
|
|||
<string name="disclaimer_error_loading">Compruebe su conexión a internet o cambia a una red diferente</string>
|
||||
<string name="disclaimer_title">Condiciones de uso</string>
|
||||
<string name="domain_receive_assets_navigation_title">Recibir activos</string>
|
||||
<string name="email_subject_wc_error">Error de Wallet Connect</string>
|
||||
<string name="email_preface_wc_error">Hola equipo de soporte, he encontrado un error con el código: %s</string>
|
||||
<string name="email_subject_wc_error">Error de WalletConnect</string>
|
||||
<string name="error_wrong_wallet_tapped">Ha usado una tarjeta de otra billetera. Toque la tarjeta asociada con esta billetera</string>
|
||||
<string name="eth_gas_required_exceeds_allowance">No hay fondos suficientes para la transacción. Por favor, recargue su cuenta.</string>
|
||||
<string name="exchange_tokens_available_tokens_header">Mis tokens</string>
|
||||
|
|
|
|||
|
|
@ -293,6 +293,8 @@
|
|||
<string name="details_title">Détails</string>
|
||||
<string name="disclaimer_error_loading">Vérifiez votre connexion Internet ou passez à un réseau différent</string>
|
||||
<string name="disclaimer_title">Conditions d\'utilisation</string>
|
||||
<string name="email_preface_wc_error">Bonjour équipe de support, j’ai rencontré une erreur avec le code : %s</string>
|
||||
<string name="email_subject_wc_error">Erreur WalletConnect</string>
|
||||
<string name="error_wrong_wallet_tapped">Vous avez utilisé une carte d\'un autre portefeuille. Appuyez sur la carte associée à ce portefeuille</string>
|
||||
<string name="eth_gas_required_exceeds_allowance">Pas assez de fonds pour la transaction. Veuillez recharger votre compte.</string>
|
||||
<string name="exchange_tokens_available_tokens_header">Mes jetons</string>
|
||||
|
|
@ -1332,6 +1334,12 @@
|
|||
<string name="wc_disconnect_all">Déconnecter tout</string>
|
||||
<string name="wc_disconnect_all_alert_desc">Texte sur la déconnexion de toutes les dApps</string>
|
||||
<string name="wc_disconnect_all_alert_title">Déconnecter toutes les dApps</string>
|
||||
<string name="wc_errors_invalid_domain_subtitle">Essayez de jumeler à nouveau avec un nouvel URI</string>
|
||||
<string name="wc_errors_invalid_domain_title">Domaine dApp invalide</string>
|
||||
<string name="wc_errors_no_blockchains_subtitle">%s ne spécifie aucune blockchain — ni requise ni optionnelle.\nVeuillez vous assurer que vous avez utilisé l’URI correct</string>
|
||||
<string name="wc_errors_no_blockchains_title">Aucun réseau</string>
|
||||
<string name="wc_errors_proposal_expired_subtitle">Veuillez générer un nouvel URI et essayer de vous connecter à nouveau</string>
|
||||
<string name="wc_errors_proposal_expired_title">La proposition de connexion a expiré</string>
|
||||
<string name="wc_estimated_wallet_changes">Modifications estimées du portefeuille</string>
|
||||
<string name="wc_estimated_wallet_changes_not_simulated">La transaction n\'a pas pu être simulée. Veuillez procéder avec prudence.</string>
|
||||
<string name="wc_malicious_transaction">Transaction malveillante</string>
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
<string name="common_build_tx_error">Impossibile creare la transazione</string>
|
||||
<string name="common_camera_denied_alert_message">Non hai fornito l\'accesso alla tua videocamera, modifica le tue impostazioni sulla privacy</string>
|
||||
<string name="common_cancel">Annulla</string>
|
||||
<string name="common_choose_wallet">Scegli portafoglio</string>
|
||||
<string name="common_connecting">Connessione in corso</string>
|
||||
<string name="common_delete">Rimuovere</string>
|
||||
<string name="common_done">Fatto</string>
|
||||
|
|
@ -39,6 +40,8 @@
|
|||
<string name="details_row_title_signed_hashes">Firmato</string>
|
||||
<string name="details_title">Requisiti</string>
|
||||
<string name="disclaimer_title">Termini del servizio</string>
|
||||
<string name="email_preface_wc_error">Ciao team di supporto, ho riscontrato un errore con il codice: %s</string>
|
||||
<string name="email_subject_wc_error">Errore WalletConnect</string>
|
||||
<string name="eth_gas_required_exceeds_allowance">Not enough funds for the transaction. Please top up your account.</string>
|
||||
<string name="generic_error">An error occurred</string>
|
||||
<string name="generic_requires_memo_error">Notifica richiesta</string>
|
||||
|
|
@ -71,6 +74,12 @@
|
|||
<string name="wallet_notification_no_internet">Nessuna connessione a Internet</string>
|
||||
<string name="wallet_title">Tangem</string>
|
||||
<string name="warning_button_ok">Ok, ho capito!</string>
|
||||
<string name="wc_errors_invalid_domain_subtitle">Prova a eseguire nuovamente l’associazione con un nuovo URI</string>
|
||||
<string name="wc_errors_invalid_domain_title">Dominio dApp non valido</string>
|
||||
<string name="wc_errors_no_blockchains_subtitle">%s non specifica alcuna blockchain — né obbligatoria né opzionale.\nAssicurati di aver utilizzato l’URI corretto</string>
|
||||
<string name="wc_errors_no_blockchains_title">Nessuna rete</string>
|
||||
<string name="wc_errors_proposal_expired_subtitle">Genera un nuovo URI e prova a connetterti di nuovo</string>
|
||||
<string name="wc_errors_proposal_expired_title">La proposta di connessione è scaduta</string>
|
||||
<string name="xtz_withdrawal_message_ignore">No, invia l\'intero importo</string>
|
||||
<string name="xtz_withdrawal_message_reduce">Riduci di %s XTZ</string>
|
||||
<string name="xtz_withdrawal_message_warning">Per evitare di pagare una commissione maggiore la prossima volta che ricarichi il tuo portafoglio, riduci l\'importo di %s XTZ</string>
|
||||
|
|
|
|||
|
|
@ -352,6 +352,8 @@
|
|||
<string name="domain_receive_assets_onboarding_description">他のネットワークで資産を送金すると、永久に失われます。</string>
|
||||
<string name="domain_receive_assets_onboarding_network_name">%sネットワーク</string>
|
||||
<string name="domain_receive_assets_onboarding_title">下記のみを使用して資金を送金する</string>
|
||||
<string name="email_preface_wc_error">サポートチームの皆様、コード %s のエラーが発生しました。</string>
|
||||
<string name="email_subject_wc_error">WalletConnect エラー</string>
|
||||
<string name="error_wrong_wallet_tapped">別のウォレットのカードまたはリングを使用しました。このウォレットにリンクしているカードまたはリングをタップしてください。</string>
|
||||
<string name="eth_gas_required_exceeds_allowance">取引に必要な資金が不足しています。アカウントに入金してください。</string>
|
||||
<string name="exchange_tokens_available_tokens_header">マイトークン</string>
|
||||
|
|
@ -457,6 +459,7 @@
|
|||
<string name="home_button_scan">Tangemをスキャン</string>
|
||||
<string name="hot_crypto_add_token_subtitle">%sへ</string>
|
||||
<string name="hot_crypto_token_network">%sネットワーク</string>
|
||||
<string name="hw_access_code_create_alert_title">アクセスコードの作成プロセスを終了してもよろしいですか?</string>
|
||||
<string name="hw_activation_need_backup">今すぐバックアップ</string>
|
||||
<string name="hw_activation_need_description">セットアップを完了するには、ウォレットをバックアップし、アクセスコードを使用してアプリへのアクセスを保護します。</string>
|
||||
<string name="hw_activation_need_finish">今すぐ実施</string>
|
||||
|
|
@ -975,17 +978,17 @@
|
|||
<string name="send_validation_invalid_amount">無効な金額</string>
|
||||
<string name="send_validation_invalid_fee">手数料が残高を超えています</string>
|
||||
<string name="send_validation_invalid_total">合計金額が残高を超えています</string>
|
||||
<string name="send_with_swap_change_token_alert_message">トークンを変更してもよろしいですか? 変更後、以前のデータはリセットされます。</string>
|
||||
<string name="send_with_swap_change_token_alert_message">受信トークンを変更してもよろしいですか? 変更すると、以前入力したデータがリセットされます。</string>
|
||||
<string name="send_with_swap_change_token_alert_title">トークンの変更</string>
|
||||
<string name="send_with_swap_confirm_title">スワップして送信</string>
|
||||
<string name="send_with_swap_convert_token_alert_message">変換を続行しますか? 以前のデータはリセットされます。</string>
|
||||
<string name="send_with_swap_convert_token_alert_message">変換を続行しますか? これにより以前のデータは消去されます。</string>
|
||||
<string name="send_with_swap_convert_token_alert_title">変換を確定</string>
|
||||
<string name="send_with_swap_notification_text">トークンを送信すれば、送信中に変換されます。受信者は必要なものをシームレスに受け取ります。</string>
|
||||
<string name="send_with_swap_recipient_amount_success_title">受信者は受け取ります</string>
|
||||
<string name="send_with_swap_recipient_amount_text">受信者に送信されます</string>
|
||||
<string name="send_with_swap_recipient_amount_text">受取人へ</string>
|
||||
<string name="send_with_swap_recipient_amount_title">受取金額</string>
|
||||
<string name="send_with_swap_remove_convert_alert_message">変換をキャンセルしてもよろしいですか? 変更後、以前のデータはリセットされます。</string>
|
||||
<string name="send_with_swap_remove_convert_alert_title">キャンセルを確定</string>
|
||||
<string name="send_with_swap_remove_convert_alert_message">変換をキャンセルしてもよろしいですか?以前のデータは消去されます。</string>
|
||||
<string name="send_with_swap_remove_convert_alert_title">変換を削除</string>
|
||||
<string name="send_with_swap_title">スワップして送信</string>
|
||||
<string name="sent_transaction_sent_title">取引が送信されました</string>
|
||||
<string name="settings_card_settings_footer">設定したいカードまたはリングをスキャンするために準備してください。</string>
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@
|
|||
<string name="common_choose_action">Выберите действие</string>
|
||||
<string name="common_choose_network">Выберите сеть</string>
|
||||
<string name="common_choose_token">Выберите токен</string>
|
||||
<string name="common_choose_wallet">Выберите кошелек</string>
|
||||
<string name="common_choose_wallet">Выберите кошелёк</string>
|
||||
<string name="common_claim">Получить</string>
|
||||
<string name="common_claim_rewards">Вывести награду</string>
|
||||
<string name="common_close">Закрыть</string>
|
||||
|
|
@ -291,6 +291,8 @@
|
|||
<string name="details_title">Подробности</string>
|
||||
<string name="disclaimer_error_loading">Проверьте подключение с интернетом или переключитесь на другую сеть</string>
|
||||
<string name="disclaimer_title">Условия использования</string>
|
||||
<string name="email_preface_wc_error">Привет, команда поддержки, у меня возникла ошибка с кодом: %s</string>
|
||||
<string name="email_subject_wc_error">Ошибка WalletConnect</string>
|
||||
<string name="error_wrong_wallet_tapped">Вы использовали карту или кольцо от другого кошелька. Приложите карту или кольцо, связанную с этим кошельком.</string>
|
||||
<string name="eth_gas_required_exceeds_allowance">Недостаточно средств для совершения транзакции. Пожалуйста, пополните свой аккаунт.</string>
|
||||
<string name="exchange_tokens_available_tokens_header">Мои токены</string>
|
||||
|
|
@ -1304,7 +1306,7 @@
|
|||
<string name="warning_token_trustline_title">Требуется трастлайн</string>
|
||||
<string name="wc_alert_audit_malicious_domain">Вредоносный домен</string>
|
||||
<string name="wc_alert_audit_unknown_domain">Неизвестный домен</string>
|
||||
<string name="wc_alert_connect_anyway">Подключиться всё равно</string>
|
||||
<string name="wc_alert_connect_anyway">Всё равно подключиться</string>
|
||||
<string name="wc_alert_connection_timeout_description">Ошибка тайм-аута. Пожалуйста, попробуйте позже.</string>
|
||||
<string name="wc_alert_connection_timeout_title">Не удалось подключиться через Wallet Connect</string>
|
||||
<string name="wc_alert_domain_issues_description">Этот домен не может быть верифицирован. Внимательно проверьте запрос перед одобрением.</string>
|
||||
|
|
@ -1348,6 +1350,12 @@
|
|||
<string name="wc_dapp_disconnected">dApp отключен</string>
|
||||
<string name="wc_disconnect_all">Отключить все</string>
|
||||
<string name="wc_disconnect_all_alert_title">Отключить все dApp</string>
|
||||
<string name="wc_errors_invalid_domain_subtitle">Попробуйте соединиться снова, используя новый URI</string>
|
||||
<string name="wc_errors_invalid_domain_title">Недействительный домен dApp</string>
|
||||
<string name="wc_errors_no_blockchains_subtitle">%s не указывает никаких блокчейнов — ни обязательных, ни опциональных.\nПожалуйста, убедитесь, что вы использовали правильный URI</string>
|
||||
<string name="wc_errors_no_blockchains_title">Нет сетей</string>
|
||||
<string name="wc_errors_proposal_expired_subtitle">Пожалуйста, сгенерируйте новый URI и попробуйте подключиться снова</string>
|
||||
<string name="wc_errors_proposal_expired_title">Предложение подключения истекло</string>
|
||||
<string name="wc_estimated_wallet_changes">Предварительные изменения</string>
|
||||
<string name="wc_estimated_wallet_changes_not_simulated">Не удалось выполнить симуляцию транзакции. Пожалуйста, действуйте с осторожностью.</string>
|
||||
<string name="wc_estimation_is_not_supported">Оценка не поддерживается для %s</string>
|
||||
|
|
|
|||
|
|
@ -192,6 +192,7 @@
|
|||
<string name="common_reject">Відхилити</string>
|
||||
<string name="common_reload">Оновити</string>
|
||||
<string name="common_rename">Перейменувати</string>
|
||||
<string name="common_required">Обов\'язково</string>
|
||||
<string name="common_save">Зберегти</string>
|
||||
<string name="common_save_changes">Зберегти зміни</string>
|
||||
<string name="common_search">Пошук</string>
|
||||
|
|
@ -289,6 +290,8 @@
|
|||
<string name="details_title">Деталі</string>
|
||||
<string name="disclaimer_error_loading">Перевірте підключення до інтернету або змініть мережу</string>
|
||||
<string name="disclaimer_title">Умови використання</string>
|
||||
<string name="email_preface_wc_error">Привіт, команда підтримки, я зіткнувся з помилкою з кодом: %s</string>
|
||||
<string name="email_subject_wc_error">Помилка WalletConnect</string>
|
||||
<string name="error_wrong_wallet_tapped">Ви використали картку або кільце від іншого гаманця. Прикладіть картку або кільце, пов\'язану з цим гаманцем.</string>
|
||||
<string name="eth_gas_required_exceeds_allowance">Недостатньо коштів для здійснення транзакції. Будь ласка, поповніть свій акаунт.</string>
|
||||
<string name="exchange_tokens_available_tokens_header">Мої токени</string>
|
||||
|
|
@ -1289,18 +1292,64 @@
|
|||
<string name="warning_token_trustline_button_title">Відкрити Trustline</string>
|
||||
<string name="warning_token_trustline_subtitle">Щоб отримати цей токен, потрібно увімкнути Trustline. Мережа вимагає резерв %1$s %2$s.</string>
|
||||
<string name="warning_token_trustline_title">Відкрийте Trustline</string>
|
||||
<string name="wc_alert_audit_unknown_domain">Невідомий домен</string>
|
||||
<string name="wc_alert_connect_anyway">Все одно підключитися</string>
|
||||
<string name="wc_alert_connection_timeout_description">Помилка тайм-ауту. Будь ласка, спробуйте пізніше.</string>
|
||||
<string name="wc_alert_connection_timeout_title">Не вдалося зʼєднатися через Wallet Connect</string>
|
||||
<string name="wc_alert_domain_issues_description">Цей домен не може бути підтверджений. Уважно перевірте запит перед схваленням.</string>
|
||||
<string name="wc_alert_session_disconnected_description">Будь ласка, поверніться до браузеру і повторно підключіться через WalletConnect.</string>
|
||||
<string name="wc_alert_session_disconnected_title">Сеанс Wallet Connect було завершено</string>
|
||||
<string name="wc_alert_unknown_error_description">Код помилки: %s. Якщо проблема зберігається, зверніться до нашої служби підтримки.</string>
|
||||
<string name="wc_alert_unknown_error_title">Ми зіткнулися з невідомою помилкою</string>
|
||||
<string name="wc_alert_unsupported_networks_description">Tangem наразі не підтримує необхідну мережу для %s.</string>
|
||||
<string name="wc_alert_unsupported_networks_title">Непідтримувані мережі</string>
|
||||
<string name="wc_alert_verified_domain_description">Tangem підтримує мережу, необхідну для %s</string>
|
||||
<string name="wc_alert_verified_domain_title">Верифікований домен</string>
|
||||
<string name="wc_alert_wrong_card_description">Обрана не вірна картка або кільце</string>
|
||||
<string name="wc_alert_wrong_card_title">Схоже, виникла проблема</string>
|
||||
<string name="wc_all_dapps_disconnected">Усі dApps відключені</string>
|
||||
<string name="wc_common_address">Адреса</string>
|
||||
<string name="wc_common_connect">Підключення</string>
|
||||
<string name="wc_common_network">Мережа</string>
|
||||
<string name="wc_common_networks">Мережі</string>
|
||||
<string name="wc_common_wallet">Гаманець</string>
|
||||
<string name="wc_connected_app_title">Підключений додаток</string>
|
||||
<string name="wc_connected_networks">Підключені мережі</string>
|
||||
<string name="wc_connected_to">Підключений до %1$s</string>
|
||||
<string name="wc_connection_reqeust_can_view_balance">Переглянути баланс гаманця та активність</string>
|
||||
<string name="wc_connection_reqeust_cant_sign">Підписати транзакцію без вашої участі</string>
|
||||
<string name="wc_connection_reqeust_request_approval">Запит схвалення на транзакцію</string>
|
||||
<string name="wc_connection_reqeust_will_not">Не має можливості</string>
|
||||
<string name="wc_connection_reqeust_would_like">Хотіли б</string>
|
||||
<string name="wc_connection_request">Запит на підключення</string>
|
||||
<string name="wc_connections">З\'єднання</string>
|
||||
<string name="wc_contents">Вміст</string>
|
||||
<string name="wc_copy_data_button_text">Копіювати дані</string>
|
||||
<string name="wc_dapp_disconnected">dApp відключено</string>
|
||||
<string name="wc_disconnect_all">Розʼєднати все</string>
|
||||
<string name="wc_disconnect_all_alert_desc">Відключити всі dApps</string>
|
||||
<string name="wc_disconnect_all_alert_title">Відключити всі dApps</string>
|
||||
<string name="wc_errors_invalid_domain_subtitle">Спробуйте ще раз з новим URI</string>
|
||||
<string name="wc_errors_invalid_domain_title">Недійсний домен dApp</string>
|
||||
<string name="wc_errors_no_blockchains_subtitle">%s не вказує жодних блокчейнів — ні обов\'язкових, ні необов\'язкових. \n Переконайтеся, що ви використали правильний URI</string>
|
||||
<string name="wc_errors_no_blockchains_title">Немає мереж</string>
|
||||
<string name="wc_errors_proposal_expired_subtitle">Будь ласка, згенеруйте новий URI та спробуйте ще раз</string>
|
||||
<string name="wc_errors_proposal_expired_title">Термін для з’єднання минув</string>
|
||||
<string name="wc_insufficient_warning_subtitle">Поповніть баланс, щоб покрити комісію мережі</string>
|
||||
<string name="wc_insufficient_warning_title">Недостатньо %1$s</string>
|
||||
<string name="wc_missing_required_network_description">Додайте %s мережі до вашого портфелю для цього гаманця</string>
|
||||
<string name="wc_missing_required_network_title">В гаманці не додані необхідні мережі</string>
|
||||
<string name="wc_new_connection">Нове з\'єднання</string>
|
||||
<string name="wc_no_sessions_desc">Підключайте свій гаманець до різних dApps</string>
|
||||
<string name="wc_no_sessions_title">Немає підключень</string>
|
||||
<string name="wc_notification_security_risk_subtitle">Виявлено потенційні ризики або шкідливу активність. Підключення чи підпис транзакцій можуть призвести до втрати коштів.</string>
|
||||
<string name="wc_notification_security_risk_title">Відомий ризик безпеки</string>
|
||||
<string name="wc_qr_scan_hint">Відкрийте програму Web3 та виберіть опцію WalletConnect</string>
|
||||
<string name="wc_request_from">Запит від</string>
|
||||
<string name="wc_signature_type">Тип підпису</string>
|
||||
<string name="wc_specify_networks_subtitle">Для підключення dApp потрібна принаймні одна мережа</string>
|
||||
<string name="wc_specify_networks_title">Вкажіть вибрані мережі</string>
|
||||
<string name="wc_successfully_signed">Успішно підписано</string>
|
||||
<string name="wc_transaction_info_to_title">До</string>
|
||||
<string name="wc_transaction_request">Запит транзакції</string>
|
||||
<string name="wc_transaction_request_title">Запит транзакції</string>
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@
|
|||
<string name="common_camera_denied_alert_message">您尚未授予相機訪問權限,請更改您的隱私設置</string>
|
||||
<string name="common_cancel">删除</string>
|
||||
<string name="common_choose_token">選擇代幣</string>
|
||||
<string name="common_choose_wallet">選擇錢包</string>
|
||||
<string name="common_close">關閉</string>
|
||||
<string name="common_connecting">連線中</string>
|
||||
<string name="common_continue">繼續</string>
|
||||
|
|
@ -133,6 +134,7 @@
|
|||
<string name="details_title">更多</string>
|
||||
<string name="disclaimer_error_loading">檢查您的網路連接或切換到其他網絡</string>
|
||||
<string name="disclaimer_title">服務條款</string>
|
||||
<string name="email_preface_wc_error">您好,支援團隊,我遇到了一個錯誤,代碼為:%s</string>
|
||||
<string name="email_subject_wc_error">WalletConnect 錯誤</string>
|
||||
<string name="error_wrong_wallet_tapped">您使用了另一個錢包中的卡。點按與此錢包關聯的卡片</string>
|
||||
<string name="eth_gas_required_exceeds_allowance">沒有足夠的資金進行交易。請先入金</string>
|
||||
|
|
@ -377,6 +379,12 @@
|
|||
<string name="warning_failed_to_verify_card_title">認證檢查失敗</string>
|
||||
<string name="warning_network_unreachable_title">網路無法使用</string>
|
||||
<string name="warning_solana_rent_fee_message">Solana 網絡每 2 天收取 %1$s 的費用。無法付此費用的帳戶將從網絡中清除。向您的帳戶存入超過 %2$s 即可免費使用</string>
|
||||
<string name="wc_errors_invalid_domain_subtitle">請使用新的 URI 再次嘗試配對</string>
|
||||
<string name="wc_errors_invalid_domain_title">無效的 dApp 網域</string>
|
||||
<string name="wc_errors_no_blockchains_subtitle">%s 未指定任何區塊鏈——無論是必須的還是可選的。\n請確保您使用了正確的 URI</string>
|
||||
<string name="wc_errors_no_blockchains_title">沒有網路</string>
|
||||
<string name="wc_errors_proposal_expired_subtitle">請生成新的 URI,然後再次嘗試連線</string>
|
||||
<string name="wc_errors_proposal_expired_title">連線提案已過期</string>
|
||||
<string name="welcome_interrupted_backup_alert_discard">捨棄</string>
|
||||
<string name="welcome_interrupted_backup_alert_message">您有一個備份中斷了,您想繼續嗎?</string>
|
||||
<string name="welcome_interrupted_backup_alert_resume">是的,恢復</string>
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@
|
|||
<string name="access_code_create_description">Set a %s-digit Access Code to unlock your wallet.</string>
|
||||
<string name="access_code_create_title">Create Access Code</string>
|
||||
<string name="access_code_navtitle">Access code</string>
|
||||
<string name="account_archived_recover">Recover</string>
|
||||
<string name="account_archived_title">Archived</string>
|
||||
<string name="account_details_archive">Archive account</string>
|
||||
<string name="account_details_archive_action">Archive</string>
|
||||
<string name="account_details_archive_description">You are archiving this account, but you can always get it back.</string>
|
||||
|
|
@ -359,7 +361,8 @@
|
|||
<string name="domain_receive_assets_onboarding_description">Sending assets in other networks will result in permanent loss.</string>
|
||||
<string name="domain_receive_assets_onboarding_network_name">%s network</string>
|
||||
<string name="domain_receive_assets_onboarding_title">Send funds using only</string>
|
||||
<string name="email_subject_wc_error">Wallet Connect error</string>
|
||||
<string name="email_preface_wc_error">Hi support team, I\'ve encountered an error with code: %s</string>
|
||||
<string name="email_subject_wc_error">WalletConnect error</string>
|
||||
<string name="error_wrong_wallet_tapped">You have used a card or ring from another wallet. Tap the card or ring associated with this wallet</string>
|
||||
<string name="eth_gas_required_exceeds_allowance">Not enough funds for the transaction. Please top up your account.</string>
|
||||
<string name="exchange_tokens_available_tokens_header">My tokens</string>
|
||||
|
|
@ -1002,6 +1005,7 @@
|
|||
<string name="send_with_swap_recipient_amount_success_title">Recipient will receive</string>
|
||||
<string name="send_with_swap_recipient_amount_text">To recipient</string>
|
||||
<string name="send_with_swap_recipient_amount_title">Amount to receive</string>
|
||||
<string name="send_with_swap_recipient_get_amount">Recipient get %s</string>
|
||||
<string name="send_with_swap_remove_convert_alert_message">Are you sure you want to cancel the conversion? Your previous data will be cleared.</string>
|
||||
<string name="send_with_swap_remove_convert_alert_title">Remove Conversion</string>
|
||||
<string name="send_with_swap_title">Send with swap</string>
|
||||
|
|
@ -1569,7 +1573,7 @@
|
|||
<string name="wc_specify_networks_subtitle">At least one network is required for dApp connection</string>
|
||||
<string name="wc_specify_networks_title">Specify selected networks</string>
|
||||
<string name="wc_successfully_signed">Successfully signed</string>
|
||||
<string name="wc_transaction_flow_title" translatable="false">Wallet connect</string>
|
||||
<string name="wc_transaction_flow_title" translatable="false">WalletConnect</string>
|
||||
<string name="wc_transaction_info_to_title">To</string>
|
||||
<string name="wc_transaction_request">Transaction request</string>
|
||||
<string name="wc_transaction_request_title">Transaction request</string>
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ private fun AddressWithMemoBlock(
|
|||
Column(modifier = Modifier.weight(1f)) {
|
||||
Text(
|
||||
text = address.value,
|
||||
style = TangemTheme.typography.body2,
|
||||
style = TangemTheme.typography.body1,
|
||||
color = TangemTheme.colors.text.primary1,
|
||||
)
|
||||
val blockchainAddress = address.briefBlockchainAddress
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import com.tangem.core.ui.components.atoms.text.TextEllipsis
|
|||
import com.tangem.core.ui.components.currency.icon.converter.CryptoCurrencyToIconStateConverter
|
||||
import com.tangem.core.ui.extensions.*
|
||||
import com.tangem.core.ui.format.bigdecimal.crypto
|
||||
import com.tangem.core.ui.format.bigdecimal.fiat
|
||||
import com.tangem.core.ui.format.bigdecimal.format
|
||||
import com.tangem.domain.appcurrency.model.AppCurrency
|
||||
import com.tangem.domain.models.currency.CryptoCurrencyStatus
|
||||
|
|
@ -16,6 +17,7 @@ import com.tangem.domain.swap.models.SwapDirection
|
|||
import com.tangem.features.swap.v2.impl.R
|
||||
import com.tangem.features.swap.v2.impl.amount.entity.SwapAmountFieldUM
|
||||
import com.tangem.features.swap.v2.impl.amount.entity.SwapAmountType
|
||||
import com.tangem.utils.StringsSigns.DOT
|
||||
|
||||
internal class SwapAmountFieldConverter(
|
||||
private val swapDirection: SwapDirection,
|
||||
|
|
@ -60,15 +62,26 @@ internal class SwapAmountFieldConverter(
|
|||
}
|
||||
|
||||
private fun getSubtitle(selectedType: SwapAmountType, cryptoCurrencyStatus: CryptoCurrencyStatus) = when {
|
||||
selectedType.isEnteringField() -> resourceReference(
|
||||
R.string.common_balance,
|
||||
wrappedList(
|
||||
selectedType.isEnteringField() -> combinedReference(
|
||||
stringReference(
|
||||
cryptoCurrencyStatus.value.amount.format {
|
||||
crypto(cryptoCurrency = cryptoCurrencyStatus.currency)
|
||||
},
|
||||
),
|
||||
stringReference(value = " $DOT "),
|
||||
stringReference(
|
||||
cryptoCurrencyStatus.value.fiatAmount.format {
|
||||
fiat(
|
||||
fiatCurrencyCode = appCurrency.code,
|
||||
fiatCurrencySymbol = appCurrency.symbol,
|
||||
)
|
||||
},
|
||||
),
|
||||
).orMaskWithStars(isBalanceHidden)
|
||||
selectedType.isViewingField() -> resourceReference(R.string.send_with_swap_recipient_amount_text)
|
||||
selectedType.isViewingField() -> resourceReference(
|
||||
R.string.send_with_swap_recipient_get_amount,
|
||||
|
||||
)
|
||||
else -> TextReference.Companion.EMPTY
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -154,10 +154,7 @@ private fun SwapAmountDivider(modifier: Modifier = Modifier) {
|
|||
style = TangemTheme.typography.caption1,
|
||||
color = TangemTheme.colors.text.tertiary,
|
||||
modifier = Modifier
|
||||
.background(TangemTheme.colors.stroke.primary, RoundedCornerShape(32.dp))
|
||||
.padding(1.dp)
|
||||
.background(TangemTheme.colors.text.primary2, RoundedCornerShape(32.dp)) // workaround
|
||||
.background(TangemTheme.colors.icon.informative.copy(alpha = 0.1f), RoundedCornerShape(32.dp))
|
||||
.background(TangemTheme.colors.button.secondary, RoundedCornerShape(32.dp))
|
||||
.padding(horizontal = 11.dp, vertical = 5.dp)
|
||||
.align(Alignment.Center),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -3,8 +3,6 @@ package com.tangem.features.swap.v2.impl.amount.ui
|
|||
import android.content.res.Configuration
|
||||
import androidx.compose.animation.AnimatedContent
|
||||
import androidx.compose.animation.AnimatedVisibility
|
||||
import androidx.compose.animation.fadeIn
|
||||
import androidx.compose.animation.fadeOut
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||
|
|
@ -26,7 +24,7 @@ import androidx.compose.ui.unit.dp
|
|||
import androidx.constraintlayout.compose.ConstraintLayout
|
||||
import com.tangem.common.ui.amountScreen.models.AmountState
|
||||
import com.tangem.common.ui.amountScreen.ui.AmountFieldV2
|
||||
import com.tangem.core.ui.components.RectangleShimmer
|
||||
import com.tangem.core.ui.components.SpacerH2
|
||||
import com.tangem.core.ui.components.SpacerWMax
|
||||
import com.tangem.core.ui.components.TextShimmer
|
||||
import com.tangem.core.ui.components.atoms.text.EllipsisText
|
||||
|
|
@ -38,7 +36,6 @@ import com.tangem.core.ui.extensions.stringResourceSafe
|
|||
import com.tangem.core.ui.res.TangemTheme
|
||||
import com.tangem.core.ui.res.TangemThemePreview
|
||||
import com.tangem.domain.express.models.ExpressRateType
|
||||
import com.tangem.domain.swap.models.SwapDirection
|
||||
import com.tangem.features.swap.v2.impl.R
|
||||
import com.tangem.features.swap.v2.impl.amount.entity.SwapAmountFieldUM
|
||||
import com.tangem.features.swap.v2.impl.amount.entity.SwapAmountType
|
||||
|
|
@ -54,13 +51,17 @@ internal fun SwapAmountContent(
|
|||
clickIntents: SwapAmountClickIntents,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
val swapAmountContent = amountUM as? SwapAmountUM.Content
|
||||
val isFixedRate = swapAmountContent?.swapRateType == ExpressRateType.Fixed
|
||||
ConstraintLayout(
|
||||
modifier = modifier,
|
||||
) {
|
||||
val (amountFromRef, amountToRef, middleButtonRef) = createRefs()
|
||||
SwapAmountBlock(
|
||||
amountUM = amountUM,
|
||||
amountFieldUM = amountUM.primaryAmount,
|
||||
selectedAmountType = amountUM.selectedAmountType,
|
||||
selectedQuote = swapAmountContent?.selectedQuote,
|
||||
isFixedRate = isFixedRate,
|
||||
clickIntents = clickIntents,
|
||||
modifier = Modifier.constrainAs(amountFromRef) {
|
||||
top.linkTo(parent.top)
|
||||
|
|
@ -69,8 +70,10 @@ internal fun SwapAmountContent(
|
|||
},
|
||||
)
|
||||
SwapAmountBlock(
|
||||
amountUM = amountUM,
|
||||
amountFieldUM = amountUM.secondaryAmount,
|
||||
selectedAmountType = amountUM.selectedAmountType,
|
||||
selectedQuote = swapAmountContent?.selectedQuote,
|
||||
isFixedRate = isFixedRate,
|
||||
clickIntents = clickIntents,
|
||||
modifier = Modifier.constrainAs(amountToRef) {
|
||||
top.linkTo(amountFromRef.bottom, 8.dp)
|
||||
|
|
@ -100,7 +103,7 @@ private fun SwapAmountBlockSeparator(onClick: () -> Unit, modifier: Modifier = M
|
|||
modifier = modifier
|
||||
.heightIn(max = 28.dp)
|
||||
.clip(RoundedCornerShape(32.dp))
|
||||
.background(TangemTheme.colors.background.secondary)
|
||||
.background(TangemTheme.colors.button.secondary)
|
||||
.clickable(onClick = onClick)
|
||||
.padding(vertical = 6.dp, horizontal = 12.dp),
|
||||
) {
|
||||
|
|
@ -109,10 +112,6 @@ private fun SwapAmountBlockSeparator(onClick: () -> Unit, modifier: Modifier = M
|
|||
style = TangemTheme.typography.caption1,
|
||||
color = TangemTheme.colors.text.tertiary,
|
||||
)
|
||||
VerticalDivider(
|
||||
thickness = 1.dp,
|
||||
color = TangemTheme.colors.icon.inactive,
|
||||
)
|
||||
Icon(
|
||||
painter = rememberVectorPainter(
|
||||
ImageVector.vectorResource(R.drawable.ic_close_24),
|
||||
|
|
@ -126,11 +125,14 @@ private fun SwapAmountBlockSeparator(onClick: () -> Unit, modifier: Modifier = M
|
|||
|
||||
@Composable
|
||||
private fun SwapAmountBlock(
|
||||
amountUM: SwapAmountUM,
|
||||
amountFieldUM: SwapAmountFieldUM,
|
||||
selectedQuote: SwapQuoteUM?,
|
||||
selectedAmountType: SwapAmountType,
|
||||
isFixedRate: Boolean,
|
||||
clickIntents: SwapAmountClickIntents,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
val isSelectedAmountType = selectedAmountType == amountFieldUM.amountType
|
||||
Column(
|
||||
modifier = modifier
|
||||
.padding(horizontal = 16.dp)
|
||||
|
|
@ -138,7 +140,7 @@ private fun SwapAmountBlock(
|
|||
.fillMaxWidth()
|
||||
.background(TangemTheme.colors.background.action),
|
||||
) {
|
||||
AnimatedVisibility(amountUM.selectedAmountType == amountFieldUM.amountType) {
|
||||
AnimatedVisibility(isSelectedAmountType) {
|
||||
Box {
|
||||
SwapAmountEditBlock(
|
||||
amountFieldUM = amountFieldUM,
|
||||
|
|
@ -157,8 +159,10 @@ private fun SwapAmountBlock(
|
|||
}
|
||||
}
|
||||
SwapAmountInfo(
|
||||
amountUM = amountUM,
|
||||
amountFieldUM = amountFieldUM,
|
||||
selectedQuote = selectedQuote,
|
||||
isSelectedAmountType = isSelectedAmountType,
|
||||
isFixedRate = isFixedRate,
|
||||
onExpandEditField = clickIntents::onExpandEditField,
|
||||
onSelectTokenClick = clickIntents::onSelectTokenClick,
|
||||
onMaxAmountClick = clickIntents::onMaxValueClick,
|
||||
|
|
@ -187,7 +191,7 @@ private fun SwapAmountEditBlock(
|
|||
} else {
|
||||
Text(
|
||||
text = (amountFieldUM.amountField as AmountState.Data).title.resolveReference(),
|
||||
style = TangemTheme.typography.caption2,
|
||||
style = TangemTheme.typography.subtitle2,
|
||||
color = TangemTheme.colors.text.tertiary,
|
||||
)
|
||||
}
|
||||
|
|
@ -201,10 +205,13 @@ private fun SwapAmountEditBlock(
|
|||
}
|
||||
}
|
||||
|
||||
@Suppress("LongParameterList")
|
||||
@Composable
|
||||
private fun SwapAmountInfo(
|
||||
amountUM: SwapAmountUM,
|
||||
amountFieldUM: SwapAmountFieldUM,
|
||||
selectedQuote: SwapQuoteUM?,
|
||||
isSelectedAmountType: Boolean,
|
||||
isFixedRate: Boolean,
|
||||
onExpandEditField: (SwapAmountType) -> Unit,
|
||||
onMaxAmountClick: () -> Unit,
|
||||
onSelectTokenClick: () -> Unit,
|
||||
|
|
@ -220,7 +227,7 @@ private fun SwapAmountInfo(
|
|||
indication = ripple(),
|
||||
enabled = (amountFieldUM as? SwapAmountFieldUM.Content)?.isClickEnabled == true,
|
||||
onClick = {
|
||||
if ((amountUM as? SwapAmountUM.Content)?.swapRateType == ExpressRateType.Fixed) {
|
||||
if (isFixedRate) {
|
||||
onExpandEditField(amountFieldUM.amountType)
|
||||
} else {
|
||||
onSelectTokenClick()
|
||||
|
|
@ -237,107 +244,85 @@ private fun SwapAmountInfo(
|
|||
bottom = 16.dp,
|
||||
),
|
||||
)
|
||||
SwapAmountInfoMain(amountFieldUM = amountFieldUM)
|
||||
SwapAmountInfoMain(
|
||||
amountFieldUM = amountFieldUM,
|
||||
selectedQuote = selectedQuote,
|
||||
isSelectedAmountType = isSelectedAmountType,
|
||||
)
|
||||
SpacerWMax()
|
||||
AnimatedContent(
|
||||
amountFieldUM,
|
||||
) { wrappedFieldAmountUM ->
|
||||
if (amountUM is SwapAmountUM.Content) {
|
||||
SwapAmountInfoExtra(
|
||||
amountUM = amountUM,
|
||||
amountFieldUM = wrappedFieldAmountUM,
|
||||
onMaxAmountClick = onMaxAmountClick,
|
||||
targetState = isSelectedAmountType,
|
||||
) { isSelected ->
|
||||
if (isSelected) {
|
||||
AmountMaxButton(onMaxAmountClick)
|
||||
} else {
|
||||
SwapAmountInfoQuote(
|
||||
quoteUM = selectedQuote,
|
||||
isFixedRate = isFixedRate,
|
||||
onSelectTokenClick = onSelectTokenClick,
|
||||
)
|
||||
} else {
|
||||
RectangleShimmer()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun SwapAmountInfoMain(amountFieldUM: SwapAmountFieldUM, modifier: Modifier = Modifier) {
|
||||
AnimatedContent(
|
||||
targetState = amountFieldUM is SwapAmountFieldUM.Content,
|
||||
private fun SwapAmountInfoMain(
|
||||
amountFieldUM: SwapAmountFieldUM,
|
||||
selectedQuote: SwapQuoteUM?,
|
||||
isSelectedAmountType: Boolean,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
Column(
|
||||
modifier = modifier,
|
||||
) { isContent ->
|
||||
if (isContent && amountFieldUM is SwapAmountFieldUM.Content) {
|
||||
Column(
|
||||
verticalArrangement = Arrangement.spacedBy(2.dp),
|
||||
) {
|
||||
) {
|
||||
AnimatedContent(amountFieldUM is SwapAmountFieldUM.Content) { isContent ->
|
||||
if (isContent && amountFieldUM is SwapAmountFieldUM.Content) {
|
||||
Text(
|
||||
text = amountFieldUM.title.resolveReference(),
|
||||
style = TangemTheme.typography.subtitle2,
|
||||
color = TangemTheme.colors.text.primary1,
|
||||
maxLines = 1,
|
||||
)
|
||||
} else {
|
||||
TextShimmer(
|
||||
style = TangemTheme.typography.subtitle2,
|
||||
modifier = Modifier.width(56.dp),
|
||||
)
|
||||
}
|
||||
}
|
||||
AnimatedContent(isSelectedAmountType) { isSelected ->
|
||||
if (isSelected && amountFieldUM is SwapAmountFieldUM.Content) {
|
||||
SpacerH2()
|
||||
EllipsisText(
|
||||
text = amountFieldUM.subtitle.resolveReference(),
|
||||
style = TangemTheme.typography.caption2,
|
||||
color = TangemTheme.colors.text.tertiary,
|
||||
ellipsis = amountFieldUM.subtitleEllipsis,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
Column(
|
||||
verticalArrangement = Arrangement.spacedBy(2.dp),
|
||||
) {
|
||||
TextShimmer(
|
||||
style = TangemTheme.typography.subtitle2,
|
||||
modifier = Modifier.width(56.dp),
|
||||
)
|
||||
TextShimmer(
|
||||
style = TangemTheme.typography.caption2,
|
||||
modifier = Modifier.width(72.dp),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun SwapAmountInfoExtra(
|
||||
amountUM: SwapAmountUM.Content,
|
||||
amountFieldUM: SwapAmountFieldUM,
|
||||
onMaxAmountClick: () -> Unit,
|
||||
onSelectTokenClick: () -> Unit,
|
||||
) {
|
||||
when (amountFieldUM.amountType) {
|
||||
SwapAmountType.From -> when (amountUM.swapDirection) {
|
||||
SwapDirection.Direct -> {
|
||||
AnimatedVisibility(
|
||||
visible = amountUM.selectedAmountType == amountFieldUM.amountType,
|
||||
enter = fadeIn(),
|
||||
exit = fadeOut(),
|
||||
) {
|
||||
AmountMaxButton(onMaxAmountClick)
|
||||
}
|
||||
}
|
||||
SwapDirection.Reverse -> {
|
||||
SwapAmountInfoQuote(
|
||||
quoteUM = amountUM.selectedQuote,
|
||||
swapRateType = amountUM.swapRateType,
|
||||
onSelectTokenClick = onSelectTokenClick,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
SwapAmountType.To -> when (amountUM.swapDirection) {
|
||||
SwapDirection.Direct -> {
|
||||
SwapAmountInfoQuote(
|
||||
quoteUM = amountUM.selectedQuote,
|
||||
swapRateType = amountUM.swapRateType,
|
||||
onSelectTokenClick = onSelectTokenClick,
|
||||
)
|
||||
}
|
||||
SwapDirection.Reverse -> {
|
||||
AnimatedVisibility(
|
||||
visible = amountUM.selectedAmountType == amountFieldUM.amountType,
|
||||
enter = fadeIn(),
|
||||
exit = fadeOut(),
|
||||
) {
|
||||
AmountMaxButton(onMaxAmountClick)
|
||||
} else {
|
||||
AnimatedContent(selectedQuote) { quote ->
|
||||
when (quote) {
|
||||
is SwapQuoteUM.Content -> {
|
||||
SpacerH2()
|
||||
EllipsisText(
|
||||
text = stringResourceSafe(
|
||||
R.string.send_with_swap_recipient_get_amount,
|
||||
quote.quoteAmountValue.resolveReference(),
|
||||
),
|
||||
style = TangemTheme.typography.caption2,
|
||||
color = TangemTheme.colors.text.tertiary,
|
||||
)
|
||||
}
|
||||
SwapQuoteUM.Loading -> {
|
||||
SpacerH2()
|
||||
TextShimmer(
|
||||
style = TangemTheme.typography.caption2,
|
||||
modifier = Modifier.width(72.dp),
|
||||
)
|
||||
}
|
||||
else -> Unit
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -353,7 +338,7 @@ private fun AmountMaxButton(onMaxAmountClick: () -> Unit) {
|
|||
modifier = Modifier
|
||||
.padding(end = 16.dp)
|
||||
.clip(RoundedCornerShape(16.dp))
|
||||
.background(TangemTheme.colors.background.secondary)
|
||||
.background(TangemTheme.colors.button.secondary)
|
||||
.clickable(
|
||||
interactionSource = remember { MutableInteractionSource() },
|
||||
indication = ripple(),
|
||||
|
|
@ -364,11 +349,11 @@ private fun AmountMaxButton(onMaxAmountClick: () -> Unit) {
|
|||
}
|
||||
|
||||
@Composable
|
||||
private fun SwapAmountInfoQuote(quoteUM: SwapQuoteUM, swapRateType: ExpressRateType, onSelectTokenClick: () -> Unit) {
|
||||
private fun SwapAmountInfoQuote(quoteUM: SwapQuoteUM?, isFixedRate: Boolean, onSelectTokenClick: () -> Unit) {
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
modifier = Modifier.conditionalCompose(
|
||||
condition = swapRateType == ExpressRateType.Fixed,
|
||||
condition = isFixedRate,
|
||||
modifier = {
|
||||
clickable(
|
||||
interactionSource = remember { MutableInteractionSource() },
|
||||
|
|
@ -378,29 +363,20 @@ private fun SwapAmountInfoQuote(quoteUM: SwapQuoteUM, swapRateType: ExpressRateT
|
|||
},
|
||||
),
|
||||
) {
|
||||
when (quoteUM) {
|
||||
is SwapQuoteUM.Content -> EllipsisText(
|
||||
text = quoteUM.quoteAmountValue.resolveReference(),
|
||||
style = TangemTheme.typography.body2,
|
||||
color = TangemTheme.colors.text.tertiary,
|
||||
modifier = Modifier.padding(end = 2.dp),
|
||||
)
|
||||
|
||||
is SwapQuoteUM.Error,
|
||||
is SwapQuoteUM.Empty,
|
||||
-> Box(modifier = Modifier.padding(start = 16.dp))
|
||||
|
||||
is SwapQuoteUM.Loading -> CircularProgressIndicator(
|
||||
color = TangemTheme.colors.icon.inactive,
|
||||
modifier = Modifier
|
||||
.padding(end = 4.dp)
|
||||
.size(20.dp),
|
||||
)
|
||||
|
||||
is SwapQuoteUM.Allowance -> Text(
|
||||
text = "ALLOWANCE NOT IMPLEMENTED",
|
||||
)
|
||||
AnimatedContent(
|
||||
quoteUM,
|
||||
) { quote ->
|
||||
when (quote) {
|
||||
is SwapQuoteUM.Loading -> CircularProgressIndicator(
|
||||
color = TangemTheme.colors.icon.inactive,
|
||||
modifier = Modifier
|
||||
.padding(end = 4.dp)
|
||||
.size(20.dp),
|
||||
)
|
||||
else -> Box(modifier = Modifier.padding(start = 16.dp))
|
||||
}
|
||||
}
|
||||
|
||||
Icon(
|
||||
painter = rememberVectorPainter(
|
||||
ImageVector.vectorResource(R.drawable.ic_chevron_24),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue