Updated on 2026-08-14
This commit is contained in:
commit
488d1c5037
16 changed files with 65 additions and 7 deletions
|
|
@ -10,9 +10,5 @@
|
|||
{
|
||||
"name": "NEXA/test",
|
||||
"version": "undefined"
|
||||
},
|
||||
{
|
||||
"name": "clore-ai",
|
||||
"version": "undefined"
|
||||
}
|
||||
]
|
||||
|
|
@ -580,6 +580,7 @@
|
|||
<string name="onboarding_wallet_info_title_second">Cartes identiques</string>
|
||||
<string name="onboarding_wallet_info_title_third">Code d\'accès</string>
|
||||
<string name="onramp_avaiable_with_payment_methods">Disponible avec %s</string>
|
||||
<string name="onramp_choose_provider_title_hint">L\'achat de crypto-monnaies sur Tangem est assuré par des fournisseurs tiers selon leurs conditions.</string>
|
||||
<string name="onramp_country_search">Recherche par pays</string>
|
||||
<string name="onramp_country_unavailable">Indisponible</string>
|
||||
<string name="onramp_currency_other">Autres devises</string>
|
||||
|
|
|
|||
|
|
@ -51,6 +51,8 @@
|
|||
<string name="balance_hidden_do_not_show_button">Больше не показывать</string>
|
||||
<string name="balance_hidden_got_it_button">Понятно</string>
|
||||
<string name="balance_hidden_title">Балансы скрыты</string>
|
||||
<string name="beta_mode_warning_message">Согласно информации от разработчиков сети, токены Kaspa находятся в режиме бета. Следите за обновлениями!</string>
|
||||
<string name="beta_mode_warning_title">Бета режим</string>
|
||||
<string name="biometric_lockout_permanent_warning_description">Пожалуйста, отсканируйте карту или кольцо</string>
|
||||
<string name="biometric_lockout_warning_description">Пожалуйста, попробуйте снова через 30 секунд или отсканируйте карту или кольцо</string>
|
||||
<string name="biometric_lockout_warning_title">Слишком много попыток</string>
|
||||
|
|
@ -227,7 +229,7 @@
|
|||
<string name="custom_token_network_input_not_selected">Не выбрано</string>
|
||||
<string name="custom_token_network_input_title">Сеть</string>
|
||||
<string name="custom_token_network_selector_title">Сеть</string>
|
||||
<string name="custom_token_subtitle">Вы можете добавить токен в ручную, если он не поддерживается Tangem</string>
|
||||
<string name="custom_token_subtitle">Вы можете добавить токен вручную, если он не поддерживается Tangem</string>
|
||||
<string name="custom_token_token_symbol_input_placeholder">Например, USDC</string>
|
||||
<string name="custom_token_token_symbol_input_title">Символ</string>
|
||||
<string name="custom_token_token_symbol_input_title_old">Символ токена</string>
|
||||
|
|
|
|||
|
|
@ -51,6 +51,8 @@
|
|||
<string name="balance_hidden_do_not_show_button">Don\'t show again</string>
|
||||
<string name="balance_hidden_got_it_button">Got it</string>
|
||||
<string name="balance_hidden_title">Balances are hidden</string>
|
||||
<string name="beta_mode_warning_message">According to the blockchain developers, Kaspa tokens are currently in beta. Stay tuned for updates!</string>
|
||||
<string name="beta_mode_warning_title">Beta Mode</string>
|
||||
<string name="biometric_lockout_permanent_warning_description">Please scan the card or ring</string>
|
||||
<string name="biometric_lockout_warning_description">Please try again in 30 seconds or scan the card or ring</string>
|
||||
<string name="biometric_lockout_warning_title">Too many attempts</string>
|
||||
|
|
|
|||
|
|
@ -74,6 +74,16 @@ sealed class TokenScreenAnalyticsEvent(
|
|||
params = mapOf("Token" to tokenSymbol, "Blockchain" to blockchain),
|
||||
)
|
||||
|
||||
class RevealTryAgain(tokenSymbol: String, blockchain: String) : TokenScreenAnalyticsEvent(
|
||||
event = "Button - Reveal Try Again",
|
||||
params = mapOf("Token" to tokenSymbol, "Blockchain" to blockchain),
|
||||
)
|
||||
|
||||
class RevealCancel(tokenSymbol: String, blockchain: String) : TokenScreenAnalyticsEvent(
|
||||
event = "Button - Reveal Cancel",
|
||||
params = mapOf("Token" to tokenSymbol, "Blockchain" to blockchain),
|
||||
)
|
||||
|
||||
data class StakingClicked(val token: String) : TokenScreenAnalyticsEvent(
|
||||
event = "Staking Clicked",
|
||||
params = mapOf("Token" to token),
|
||||
|
|
|
|||
|
|
@ -57,4 +57,6 @@ sealed class CryptoCurrencyWarning {
|
|||
val amount: BigDecimal,
|
||||
val maxAmount: BigDecimal?,
|
||||
) : CryptoCurrencyWarning()
|
||||
|
||||
data object TokensInBetaWarning : CryptoCurrencyWarning()
|
||||
}
|
||||
|
|
@ -173,6 +173,7 @@ class GetCurrencyWarningsUseCase(
|
|||
when {
|
||||
tokenStatus != null && coinStatus != null -> {
|
||||
buildList {
|
||||
getIsBetaTokensWarning(tokenStatus.currency)?.let(::add)
|
||||
getFeeWarning(
|
||||
userWalletId = userWalletId,
|
||||
coinStatus = coinStatus,
|
||||
|
|
@ -219,6 +220,15 @@ class GetCurrencyWarningsUseCase(
|
|||
}
|
||||
}
|
||||
|
||||
private fun getIsBetaTokensWarning(currency: CryptoCurrency): CryptoCurrencyWarning? {
|
||||
val isTokenBetaFunctionality = BlockchainUtils.isTokenBetaFunctionality(currency.network.id.value)
|
||||
return if (currency is CryptoCurrency.Token && isTokenBetaFunctionality) {
|
||||
CryptoCurrencyWarning.TokensInBetaWarning
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun constructTokenBalanceNotEnoughWarning(
|
||||
userWalletId: UserWalletId,
|
||||
tokenStatus: CryptoCurrencyStatus,
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ dependencies {
|
|||
implementation(deps.androidx.appCompat)
|
||||
implementation(deps.androidx.fragment.ktx)
|
||||
implementation(deps.lifecycle.viewModel.ktx)
|
||||
implementation(deps.androidx.activity.compose)
|
||||
|
||||
/** Compose */
|
||||
implementation(deps.compose.foundation)
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.tangem.feature.referral.ui
|
|||
|
||||
import android.content.res.Configuration
|
||||
import android.content.res.Resources
|
||||
import androidx.activity.compose.BackHandler
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.background
|
||||
|
|
@ -52,6 +53,8 @@ internal fun ReferralScreen(stateHolder: ReferralStateHolder) {
|
|||
|
||||
val snackbarHostState = remember(::SnackbarHostState)
|
||||
|
||||
BackHandler(onBack = stateHolder.headerState.onBackClicked)
|
||||
|
||||
Scaffold(
|
||||
topBar = {
|
||||
AppBarWithBackButton(
|
||||
|
|
|
|||
|
|
@ -23,5 +23,10 @@ internal open class TokenDetailsAnalyticsEvent(
|
|||
event = "Not Enough Fee",
|
||||
params = currency.toAnalyticsParams(),
|
||||
)
|
||||
|
||||
class Reveal(currency: CryptoCurrency) : Notice(
|
||||
event = "Reveal Transaction",
|
||||
params = currency.toAnalyticsParams(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -41,6 +41,9 @@ internal class TokenDetailsNotificationsAnalyticsSender(
|
|||
programName = TokenSwapPromoAnalyticsEvent.ProgramName.OKX,
|
||||
source = AnalyticsParam.ScreensSources.Token,
|
||||
)
|
||||
is TokenDetailsNotification.KaspaIncompleteTransactionWarning -> TokenDetailsAnalyticsEvent.Notice.Reveal(
|
||||
currency = cryptoCurrency,
|
||||
)
|
||||
is TokenDetailsNotification.NetworksUnreachable,
|
||||
is TokenDetailsNotification.ExistentialDeposit,
|
||||
is TokenDetailsNotification.NetworksNoAccount,
|
||||
|
|
@ -48,9 +51,9 @@ internal class TokenDetailsNotificationsAnalyticsSender(
|
|||
is TokenDetailsNotification.RentInfo,
|
||||
is TokenDetailsNotification.NetworkShutdown,
|
||||
is TokenDetailsNotification.HederaAssociateWarning,
|
||||
is TokenDetailsNotification.KaspaIncompleteTransactionWarning,
|
||||
is TokenDetailsNotification.KoinosMana,
|
||||
is TokenDetailsNotification.MigrationMaticToPol,
|
||||
is TokenDetailsNotification.TokensInBeta,
|
||||
-> null
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,6 @@ import com.tangem.domain.tokens.model.CryptoCurrency
|
|||
internal fun CryptoCurrency.toAnalyticsParams(): Map<String, String> {
|
||||
return mapOf(
|
||||
"Token" to symbol,
|
||||
"Blockchain" to network.currencySymbol,
|
||||
"Blockchain" to network.name,
|
||||
)
|
||||
}
|
||||
|
|
@ -229,4 +229,9 @@ internal sealed class TokenDetailsNotification(val config: NotificationConfig) {
|
|||
title = resourceReference(id = R.string.warning_matic_migration_title),
|
||||
subtitle = resourceReference(id = R.string.warning_matic_migration_message),
|
||||
)
|
||||
|
||||
data object TokensInBeta : Warning(
|
||||
title = resourceReference(id = R.string.beta_mode_warning_title),
|
||||
subtitle = resourceReference(id = R.string.beta_mode_warning_message),
|
||||
)
|
||||
}
|
||||
|
|
@ -135,6 +135,7 @@ internal class TokenDetailsNotificationConverter(
|
|||
},
|
||||
)
|
||||
is CryptoCurrencyWarning.MigrationMaticToPol -> MigrationMaticToPol
|
||||
is CryptoCurrencyWarning.TokensInBetaWarning -> TokensInBeta
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -825,6 +825,12 @@ internal class TokenDetailsViewModel @Inject constructor(
|
|||
}
|
||||
|
||||
override fun onRetryIncompleteTransactionClick() {
|
||||
analyticsEventsHandler.send(
|
||||
TokenScreenAnalyticsEvent.RevealTryAgain(
|
||||
tokenSymbol = cryptoCurrency.symbol,
|
||||
blockchain = cryptoCurrency.network.name,
|
||||
),
|
||||
)
|
||||
viewModelScope.launch {
|
||||
retryIncompleteTransactionUseCase(
|
||||
userWalletId = userWalletId,
|
||||
|
|
@ -860,6 +866,12 @@ internal class TokenDetailsViewModel @Inject constructor(
|
|||
}
|
||||
|
||||
override fun onDismissIncompleteTransactionClick() {
|
||||
analyticsEventsHandler.send(
|
||||
TokenScreenAnalyticsEvent.RevealCancel(
|
||||
tokenSymbol = cryptoCurrency.symbol,
|
||||
blockchain = cryptoCurrency.network.name,
|
||||
),
|
||||
)
|
||||
viewModelScope.launch {
|
||||
internalUiState.value = stateFactory.getStateWithDismissIncompleteTransactionConfirmDialog()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -141,4 +141,9 @@ object BlockchainUtils {
|
|||
private fun getNetworkNameWithoutTestnet(blockchain: Blockchain): String {
|
||||
return blockchain.getNetworkName().replace(oldValue = " Testnet", newValue = "")
|
||||
}
|
||||
|
||||
fun isTokenBetaFunctionality(blockchainId: String): Boolean {
|
||||
val blockchain = Blockchain.fromId(blockchainId)
|
||||
return blockchain == Blockchain.Kaspa
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue