From be115fc505741a052aaff74670da6a88618c130b Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 22 Aug 2024 12:58:12 +0300 Subject: [PATCH] Updated on 2026-08-14 --- core/res/src/main/res/values-de/strings.xml | 1 - core/res/src/main/res/values-fr/strings.xml | 1 - core/res/src/main/res/values-ja/strings.xml | 1 - core/res/src/main/res/values-ru/strings.xml | 1 - .../src/main/res/values-uk-rUA/strings.xml | 1 - core/res/src/main/res/values/strings.xml | 1 - .../feature/swap/analytics/SwapEvents.kt | 8 ++-- .../tangem/feature/swap/ui/StateBuilder.kt | 37 +++++++++---------- .../feature/swap/viewmodels/SwapViewModel.kt | 6 ++- 9 files changed, 28 insertions(+), 29 deletions(-) diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml index 1e9ed93914..b1797d3a2a 100644 --- a/core/res/src/main/res/values-de/strings.xml +++ b/core/res/src/main/res/values-de/strings.xml @@ -221,7 +221,6 @@ Tangem bietet Token-Swaps über Drittanbieter gemäß den jeweiligen Bedingungen des jeweiligen Anbieters an. Anbieter wählen Es ist ein Fehler aufgetreten. Code: %s - Huch! Der Tausch des ausgewählten Paares über den gewählten Anbieter ist vorübergehend nicht möglich. Bitte versuche es später erneut. (Code: %s) Der gewählte Anbieter ist im Moment nicht verfügbar. Bitte versuche es später noch einmal. (Code: %s) Swaps sind im Moment nicht verfügbar. Bitte versuche es später noch einmal. (Code: %s) Geschätzter Betrag diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml index d39ab86d92..581c5d1af7 100644 --- a/core/res/src/main/res/values-fr/strings.xml +++ b/core/res/src/main/res/values-fr/strings.xml @@ -217,7 +217,6 @@ Tangem propose des échanges de jetons via des fournisseurs tiers selon les conditions de chaque fournisseur Choisissez un fournisseur Une erreur s\'est produite. Code : %s - Oups! L\'échange de la paire sélectionnée via le fournisseur choisi est temporairement indisponible. Veuillez réessayer plus tard. (Code : %s) Le fournisseur sélectionné n\'est pas disponible pour le moment. Veuillez réessayer plus tard. (Code : %s) Les échanges ne sont pas disponibles pour le moment. Veuillez réessayer plus tard. (Code : %s) Montant estimé diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml index e5c43474a1..cbfddbaa7f 100644 --- a/core/res/src/main/res/values-ja/strings.xml +++ b/core/res/src/main/res/values-ja/strings.xml @@ -219,7 +219,6 @@ Tangemは、各プロバイダーの条件に従って、サードパーティプロバイダーを介してトークンスワップを提供します。 プロバイダーを選択 エラーが発生しました。コード: %s - おっと!このプロバイダーで選択したペアを交換することは一時的にできません。後でもう一度お試しください。(Code:%s) 選択したプロバイダーは現在利用できません。しばらくしてからもう一度お試しください。(コード: %s ) 現在、交換はご利用いただけません。しばらくしてからもう一度お試しください。(コード: %s ) 推定金額 diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml index e89bb61d95..ff9fce14ea 100644 --- a/core/res/src/main/res/values-ru/strings.xml +++ b/core/res/src/main/res/values-ru/strings.xml @@ -225,7 +225,6 @@ Tangem предоставляет доступ к обмену через сторонних поставщиков в соответствии с их правилами Выберите провайдера Произошла ошибка. Код: %s - К сожалению, обмен указанной пары через выбранного провайдера на данный момент невозможен. Попробуйте совершить обмен позже. (Код: %s) Выбранный провайдер недоступен для обмена. Попробуйте позже. (Код: %s) В данный момент обмен невозможен. Попробуйте позже. (Код: %s) Курс обмена 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 d352a7be3c..4a4839b4e7 100644 --- a/core/res/src/main/res/values-uk-rUA/strings.xml +++ b/core/res/src/main/res/values-uk-rUA/strings.xml @@ -225,7 +225,6 @@ Tangem пропонує обмін токенів через сторонніх провайдерів відповідно до умов кожного провайдера Оберіть провайдера Виникла помилка. Код: %s - На жаль, обмін вказаної пари через обраного провайдера тимчасово неможливий. Спробуйте здійснити обмін пізніше. (Код: %s) Наразі обраний провайдер недоступний для обміну. Спробуй пізніше. (Код: %s) Наразі обмін неможливий. Спробуй пізніше. (Код: %s) Курс обміну diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index 79135b1d0d..dadb67073c 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -222,7 +222,6 @@ Tangem offers token swaps via 3rd-party providers according to each provider\'s terms Choose provider An error occurred. Code: %s - Oops! Swapping the selected pair through the chosen provider is temporarily unavailable. Please try again later. (Code: %s) Selected provider is unavailable at the moment. Please try again later. (Code: %s) Swaps are unavailable at the moment. Please try again later. (Code: %s) Estimated amount diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/analytics/SwapEvents.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/analytics/SwapEvents.kt index 55450cbdec..68d9795026 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/analytics/SwapEvents.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/analytics/SwapEvents.kt @@ -104,15 +104,17 @@ sealed class SwapEvents( ) data class NoticeProviderError( - val token: String, + val sendToken: String, + val receiveToken: String, val provider: SwapProvider, val errorCode: Int, ) : SwapEvents( event = "Notice - Express Error", params = mapOf( - "Token" to token, + "Send Token" to sendToken, + "Receive Token" to receiveToken, "Provider" to provider.name, - "Error code" to errorCode.toString(), + "Error Code" to errorCode.toString(), ), ) diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt index 517c795db6..c013b188e0 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt @@ -736,6 +736,7 @@ internal class StateBuilder( private fun getWarningForError(dataError: DataError, fromToken: CryptoCurrency): SwapWarning { val providerErrorMessage = getProviderErrorMessage(dataError) + val providerErrorTitle = getProviderErrorTitle(dataError) return when (dataError) { is DataError.ExchangeTooSmallAmountError -> SwapWarning.GeneralError( notificationConfig = NotificationConfig( @@ -759,22 +760,8 @@ internal class StateBuilder( ) else -> SwapWarning.GeneralWarning( notificationConfig = NotificationConfig( - title = if (dataError is DataError.UnknownError) { - resourceReference(R.string.common_error) - } else { - resourceReference(R.string.warning_express_refresh_required_title) - }, - subtitle = when { - dataError is DataError.UnknownError -> { - resourceReference(R.string.common_unknown_error) - } - providerErrorMessage != null -> { - providerErrorMessage - } - else -> { - resourceReference(R.string.express_error_code, wrappedList(dataError.code.toString())) - } - }, + title = providerErrorTitle, + subtitle = providerErrorMessage, iconResId = R.drawable.img_attention_20, buttonsState = NotificationConfig.ButtonsState.SecondaryButtonConfig( text = resourceReference(R.string.warning_button_refresh), @@ -1096,16 +1083,17 @@ internal class StateBuilder( ) } - private fun getProviderErrorMessage(dataError: DataError): TextReference? { + private fun getProviderErrorMessage(dataError: DataError): TextReference { return when (dataError) { is DataError.SwapsAreUnavailableNowError -> resourceReference( id = R.string.express_error_swap_unavailable, formatArgs = wrappedList(dataError.code), ) is DataError.ExchangeNotPossibleError -> resourceReference( - id = R.string.express_error_provider_unavailable, + id = R.string.warning_express_pair_unavailable_message, formatArgs = wrappedList(dataError.code), ) + is DataError.UnknownError -> resourceReference(R.string.common_unknown_error) is DataError.ExchangeProviderNotActiveError, is DataError.ExchangeProviderNotFoundError, is DataError.ExchangeProviderNotAvailableError, @@ -1114,7 +1102,18 @@ internal class StateBuilder( id = R.string.express_error_swap_pair_unavailable, formatArgs = wrappedList(dataError.code), ) - else -> null + else -> resourceReference(R.string.express_error_code, wrappedList(dataError.code.toString())) + } + } + + private fun getProviderErrorTitle(dataError: DataError): TextReference { + return when (dataError) { + is DataError.ExchangeNotPossibleError -> resourceReference( + id = R.string.warning_express_pair_unavailable_title, + formatArgs = wrappedList(dataError.code), + ) + is DataError.UnknownError -> resourceReference(R.string.common_error) + else -> resourceReference(R.string.warning_express_refresh_required_title) } } diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt index eb128c84db..e0061c0c1b 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt @@ -405,9 +405,13 @@ internal class SwapViewModel @Inject constructor( } private fun sendErrorAnalyticsEvent(error: DataError, provider: SwapProvider) { + val receiveToken = dataState.toCryptoCurrency?.currency?.let { + "${it.network.backendId}:${it.symbol}" + } analyticsEventHandler.send( SwapEvents.NoticeProviderError( - token = initialCryptoCurrency.symbol, + sendToken = "${initialCryptoCurrency.network.backendId}:${initialCryptoCurrency.symbol}", + receiveToken = receiveToken ?: "", provider = provider, errorCode = error.code, ),