Updated on 2026-08-14

This commit is contained in:
Tangem 2024-08-22 12:58:12 +03:00
parent e01127186c
commit be115fc505
9 changed files with 28 additions and 29 deletions

View file

@ -221,7 +221,6 @@
<string name="express_choose_providers_subtitle">Tangem bietet Token-Swaps über Drittanbieter gemäß den jeweiligen Bedingungen des jeweiligen Anbieters an.</string>
<string name="express_choose_providers_title">Anbieter wählen</string>
<string name="express_error_code">Es ist ein Fehler aufgetreten. Code: %s</string>
<string name="express_error_provider_unavailable">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)</string>
<string name="express_error_swap_pair_unavailable">Der gewählte Anbieter ist im Moment nicht verfügbar. Bitte versuche es später noch einmal. (Code: %s)</string>
<string name="express_error_swap_unavailable">Swaps sind im Moment nicht verfügbar. Bitte versuche es später noch einmal. (Code: %s)</string>
<string name="express_estimated_amount">Geschätzter Betrag</string>

View file

@ -217,7 +217,6 @@
<string name="express_choose_providers_subtitle">Tangem propose des échanges de jetons via des fournisseurs tiers selon les conditions de chaque fournisseur</string>
<string name="express_choose_providers_title">Choisissez un fournisseur</string>
<string name="express_error_code">Une erreur s\'est produite. Code : %s</string>
<string name="express_error_provider_unavailable">Oups! L\'échange de la paire sélectionnée via le fournisseur choisi est temporairement indisponible. Veuillez réessayer plus tard. (Code : %s)</string>
<string name="express_error_swap_pair_unavailable">Le fournisseur sélectionné n\'est pas disponible pour le moment. Veuillez réessayer plus tard. (Code : %s)</string>
<string name="express_error_swap_unavailable">Les échanges ne sont pas disponibles pour le moment. Veuillez réessayer plus tard. (Code : %s)</string>
<string name="express_estimated_amount">Montant estimé</string>

View file

@ -219,7 +219,6 @@
<string name="express_choose_providers_subtitle">Tangemは、各プロバイダーの条件に従って、サードパーティプロバイダーを介してトークンスワップを提供します。</string>
<string name="express_choose_providers_title">プロバイダーを選択</string>
<string name="express_error_code">エラーが発生しました。コード: %s</string>
<string name="express_error_provider_unavailable">おっと!このプロバイダーで選択したペアを交換することは一時的にできません。後でもう一度お試しください。(Code:%s)</string>
<string name="express_error_swap_pair_unavailable">選択したプロバイダーは現在利用できません。しばらくしてからもう一度お試しください。(コード: %s )</string>
<string name="express_error_swap_unavailable">現在、交換はご利用いただけません。しばらくしてからもう一度お試しください。(コード: %s )</string>
<string name="express_estimated_amount">推定金額</string>

View file

@ -225,7 +225,6 @@
<string name="express_choose_providers_subtitle">Tangem предоставляет доступ к обмену через сторонних поставщиков в соответствии с их правилами</string>
<string name="express_choose_providers_title">Выберите провайдера</string>
<string name="express_error_code">Произошла ошибка. Код: %s</string>
<string name="express_error_provider_unavailable">К сожалению, обмен указанной пары через выбранного провайдера на данный момент невозможен. Попробуйте совершить обмен позже. (Код: %s)</string>
<string name="express_error_swap_pair_unavailable">Выбранный провайдер недоступен для обмена. Попробуйте позже. (Код: %s)</string>
<string name="express_error_swap_unavailable">В данный момент обмен невозможен. Попробуйте позже. (Код: %s)</string>
<string name="express_estimated_amount">Курс обмена</string>

View file

@ -225,7 +225,6 @@
<string name="express_choose_providers_subtitle">Tangem пропонує обмін токенів через сторонніх провайдерів відповідно до умов кожного провайдера</string>
<string name="express_choose_providers_title">Оберіть провайдера</string>
<string name="express_error_code">Виникла помилка. Код: %s</string>
<string name="express_error_provider_unavailable">На жаль, обмін вказаної пари через обраного провайдера тимчасово неможливий. Спробуйте здійснити обмін пізніше. (Код: %s)</string>
<string name="express_error_swap_pair_unavailable">Наразі обраний провайдер недоступний для обміну. Спробуй пізніше. (Код: %s)</string>
<string name="express_error_swap_unavailable">Наразі обмін неможливий. Спробуй пізніше. (Код: %s)</string>
<string name="express_estimated_amount">Курс обміну</string>

View file

@ -222,7 +222,6 @@
<string name="express_choose_providers_subtitle">Tangem offers token swaps via 3rd-party providers according to each provider\'s terms</string>
<string name="express_choose_providers_title">Choose provider</string>
<string name="express_error_code">An error occurred. Code: %s</string>
<string name="express_error_provider_unavailable">Oops! Swapping the selected pair through the chosen provider is temporarily unavailable. Please try again later. (Code: %s)</string>
<string name="express_error_swap_pair_unavailable">Selected provider is unavailable at the moment. Please try again later. (Code: %s)</string>
<string name="express_error_swap_unavailable">Swaps are unavailable at the moment. Please try again later. (Code: %s)</string>
<string name="express_estimated_amount">Estimated amount</string>

View file

@ -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(),
),
)

View file

@ -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)
}
}

View file

@ -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,
),