Updated on 2026-08-14
This commit is contained in:
commit
7a0ea3076e
16 changed files with 116 additions and 231 deletions
|
|
@ -14,6 +14,7 @@ import com.tangem.tap.features.welcome.redux.WelcomeAction
|
|||
import com.tangem.tap.features.welcome.redux.WelcomeState
|
||||
import com.tangem.tap.features.welcome.ui.WelcomeScreenState
|
||||
import com.tangem.tap.features.welcome.ui.model.WarningModel
|
||||
import com.tangem.tap.mainScope
|
||||
import com.tangem.tap.store
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
|
|
@ -39,7 +40,7 @@ internal class WelcomeModel @Inject constructor(
|
|||
val state: MutableStateFlow<WelcomeScreenState> = MutableStateFlow(initialState)
|
||||
|
||||
init {
|
||||
store.dispatch(WelcomeAction.SetCoroutineScope(modelScope))
|
||||
store.dispatch(WelcomeAction.SetCoroutineScope(mainScope))
|
||||
|
||||
subscribeToStoreChanges()
|
||||
initGlobalState()
|
||||
|
|
|
|||
|
|
@ -1,85 +0,0 @@
|
|||
package com.tangem.tap.features.welcome.ui
|
||||
|
||||
import androidx.activity.compose.BackHandler
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.systemBarsPadding
|
||||
import androidx.compose.material3.SnackbarHost
|
||||
import androidx.compose.material3.SnackbarHostState
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalLifecycleOwner
|
||||
import androidx.hilt.navigation.compose.hiltViewModel
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.tangem.core.analytics.Analytics
|
||||
import com.tangem.core.ui.UiDependencies
|
||||
import com.tangem.core.ui.res.TangemTheme
|
||||
import com.tangem.core.ui.screen.ComposeFragment
|
||||
import com.tangem.tap.common.analytics.events.SignIn
|
||||
import com.tangem.tap.common.extensions.eraseContext
|
||||
import com.tangem.tap.features.details.ui.cardsettings.resolveReference
|
||||
import com.tangem.tap.features.welcome.ui.components.WarningDialog
|
||||
import com.tangem.tap.features.welcome.ui.components.WelcomeScreenContent
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import javax.inject.Inject
|
||||
|
||||
@AndroidEntryPoint
|
||||
internal class WelcomeFragment : ComposeFragment() {
|
||||
|
||||
@Inject
|
||||
override lateinit var uiDependencies: UiDependencies
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
Analytics.eraseContext()
|
||||
Analytics.send(SignIn.ScreenOpened())
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun ScreenContent(modifier: Modifier) {
|
||||
val viewModel = hiltViewModel<WelcomeViewModel>()
|
||||
LocalLifecycleOwner.current.lifecycle.addObserver(viewModel)
|
||||
|
||||
val state by viewModel.state.collectAsStateWithLifecycle()
|
||||
val snackbarHostState = remember { SnackbarHostState() }
|
||||
val errorMessage by rememberUpdatedState(newValue = state.error?.resolveReference())
|
||||
val warning by rememberUpdatedState(newValue = state.warning)
|
||||
|
||||
BackHandler {
|
||||
requireActivity().finish()
|
||||
}
|
||||
|
||||
Box(
|
||||
modifier = modifier
|
||||
.background(TangemTheme.colors.background.primary)
|
||||
.systemBarsPadding(),
|
||||
) {
|
||||
WelcomeScreenContent(
|
||||
showUnlockProgress = state.showUnlockWithBiometricsProgress,
|
||||
showScanCardProgress = state.showUnlockWithCardProgress,
|
||||
onUnlockClick = viewModel::unlockWallets,
|
||||
onScanCardClick = viewModel::scanCard,
|
||||
)
|
||||
|
||||
SnackbarHost(
|
||||
modifier = Modifier
|
||||
.align(Alignment.BottomCenter)
|
||||
.padding(vertical = TangemTheme.dimens.spacing16)
|
||||
.fillMaxWidth(),
|
||||
hostState = snackbarHostState,
|
||||
)
|
||||
}
|
||||
|
||||
WarningDialog(warning)
|
||||
|
||||
LaunchedEffect(key1 = errorMessage) {
|
||||
errorMessage?.let {
|
||||
snackbarHostState.showSnackbar(it)
|
||||
viewModel.closeError()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,134 +0,0 @@
|
|||
package com.tangem.tap.features.welcome.ui
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.lifecycle.*
|
||||
import com.tangem.common.core.TangemError
|
||||
import com.tangem.common.routing.AppRoute
|
||||
import com.tangem.common.routing.bundle.unbundle
|
||||
import com.tangem.common.routing.entity.SerializableIntent
|
||||
import com.tangem.core.analytics.Analytics
|
||||
import com.tangem.domain.wallets.legacy.UserWalletsListError
|
||||
import com.tangem.tap.common.analytics.events.SignIn
|
||||
import com.tangem.tap.common.redux.global.GlobalAction
|
||||
import com.tangem.tap.features.details.ui.cardsettings.TextReference
|
||||
import com.tangem.tap.features.welcome.redux.WelcomeAction
|
||||
import com.tangem.tap.features.welcome.redux.WelcomeState
|
||||
import com.tangem.tap.features.welcome.ui.model.WarningModel
|
||||
import com.tangem.tap.store
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import org.rekotlin.StoreSubscriber
|
||||
import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
internal class WelcomeViewModel @Inject constructor(
|
||||
savedStateHandle: SavedStateHandle,
|
||||
) : ViewModel(),
|
||||
StoreSubscriber<WelcomeState>,
|
||||
DefaultLifecycleObserver {
|
||||
|
||||
private val initialIntent: SerializableIntent? = savedStateHandle.get<Bundle>(AppRoute.Welcome.INITIAL_INTENT_KEY)
|
||||
?.unbundle(SerializableIntent.serializer())
|
||||
|
||||
private val stateInternal = MutableStateFlow(WelcomeScreenState())
|
||||
val state: StateFlow<WelcomeScreenState> = stateInternal
|
||||
|
||||
override fun onCreate(owner: LifecycleOwner) {
|
||||
store.dispatch(WelcomeAction.SetCoroutineScope(viewModelScope))
|
||||
|
||||
subscribeToStoreChanges()
|
||||
initGlobalState()
|
||||
|
||||
val welcomeAction = if (initialIntent != null) {
|
||||
WelcomeAction.ProceedWithIntent(initialIntent.toIntent())
|
||||
} else {
|
||||
WelcomeAction.ProceedWithBiometrics()
|
||||
}
|
||||
|
||||
store.dispatch(welcomeAction)
|
||||
}
|
||||
|
||||
fun unlockWallets() {
|
||||
Analytics.send(SignIn.ButtonBiometricSignIn())
|
||||
store.dispatch(WelcomeAction.ProceedWithBiometrics())
|
||||
}
|
||||
|
||||
fun scanCard() {
|
||||
Analytics.send(SignIn.ButtonCardSignIn())
|
||||
store.dispatch(WelcomeAction.ProceedWithCard)
|
||||
}
|
||||
|
||||
fun closeError() {
|
||||
store.dispatch(WelcomeAction.CloseError)
|
||||
}
|
||||
|
||||
// TODO: Refactor errors handling
|
||||
override fun newState(state: WelcomeState) {
|
||||
val warning = createWarningIfNeeded(state.error)
|
||||
|
||||
stateInternal.update { prevState ->
|
||||
prevState.copy(
|
||||
showUnlockWithBiometricsProgress = state.isUnlockWithBiometricsInProgress,
|
||||
showUnlockWithCardProgress = state.isUnlockWithCardInProgress,
|
||||
warning = warning,
|
||||
error = state.error
|
||||
?.takeIf { !it.silent && warning == null }
|
||||
?.let { e ->
|
||||
e.messageResId?.let { TextReference.Res(it) }
|
||||
?: TextReference.Str(e.customMessage)
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy(owner: LifecycleOwner) {
|
||||
store.dispatch(WelcomeAction.ClearCoroutineScope)
|
||||
store.unsubscribe(this)
|
||||
super.onDestroy(owner)
|
||||
}
|
||||
|
||||
private fun createWarningIfNeeded(error: TangemError?): WarningModel? {
|
||||
return when (error) {
|
||||
is UserWalletsListError.BiometricsAuthenticationLockout -> WarningModel.BiometricsLockoutWarning(
|
||||
isPermanent = error.isPermanent,
|
||||
onDismiss = this::dismissWarning,
|
||||
)
|
||||
is UserWalletsListError.AllKeysInvalidated,
|
||||
is UserWalletsListError.NoUserWalletSelected,
|
||||
-> WarningModel.KeyInvalidatedWarning(
|
||||
onDismiss = this::dismissWarning,
|
||||
)
|
||||
is UserWalletsListError.BiometricsAuthenticationDisabled -> WarningModel.BiometricsDisabledWarning(
|
||||
onDismiss = this::clearUserWallets,
|
||||
)
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
private fun dismissWarning() {
|
||||
stateInternal.update { prevState ->
|
||||
prevState.copy(
|
||||
warning = null,
|
||||
)
|
||||
}
|
||||
closeError()
|
||||
}
|
||||
|
||||
private fun clearUserWallets() {
|
||||
store.dispatch(WelcomeAction.ClearUserWallets)
|
||||
}
|
||||
|
||||
private fun subscribeToStoreChanges() {
|
||||
store.subscribe(this) { appState ->
|
||||
appState.skip { old, new -> old.welcomeState == new.welcomeState }
|
||||
.select { it.welcomeState }
|
||||
}
|
||||
}
|
||||
|
||||
private fun initGlobalState() {
|
||||
store.dispatch(GlobalAction.RestoreAppCurrency)
|
||||
store.dispatch(GlobalAction.ExchangeManager.Init)
|
||||
}
|
||||
}
|
||||
|
|
@ -37,7 +37,6 @@ import com.tangem.tap.features.onboarding.products.twins.ui.OnboardingTwinsFragm
|
|||
import com.tangem.tap.features.onboarding.products.wallet.ui.OnboardingWalletFragment
|
||||
import com.tangem.tap.features.saveWallet.ui.SaveWalletBottomSheetFragment
|
||||
import com.tangem.tap.features.welcome.component.WelcomeComponent
|
||||
import com.tangem.tap.features.welcome.ui.WelcomeFragment
|
||||
import com.tangem.tap.routing.component.RoutingComponent.Child
|
||||
import com.tangem.tap.routing.toggle.RoutingFeatureToggles
|
||||
import com.tangem.utils.Provider
|
||||
|
|
@ -614,7 +613,13 @@ internal class ChildFactory @Inject constructor(
|
|||
)
|
||||
}
|
||||
is AppRoute.Welcome -> {
|
||||
route.asFragmentChild(Provider { WelcomeFragment() })
|
||||
route.asComponentChild(
|
||||
contextProvider = contextProvider(route, contextFactory),
|
||||
params = WelcomeComponent.Params(
|
||||
intent = route.intent,
|
||||
),
|
||||
componentFactory = welcomeComponentFactory,
|
||||
)
|
||||
}
|
||||
is AppRoute.TesterMenu -> {
|
||||
Child.LegacyIntent(testerRouter.getEntryIntent())
|
||||
|
|
|
|||
|
|
@ -126,6 +126,7 @@
|
|||
</plurals>
|
||||
<string name="common_delete">Entfernen</string>
|
||||
<string name="common_disabled">Deaktiviert</string>
|
||||
<string name="common_disconnect">Trennen</string>
|
||||
<string name="common_done">Erledigt</string>
|
||||
<string name="common_enable">Aktivieren</string>
|
||||
<string name="common_enabled">Aktiviert</string>
|
||||
|
|
@ -498,6 +499,10 @@
|
|||
<string name="markets_tooltip_message">Rufe dies auf oder tippe auf die Suchleiste, um Token direkt vom Markt hinzuzufügen</string>
|
||||
<string name="markets_tooltip_title">Token hinzufügen</string>
|
||||
<string name="nfc_error_unavailable">NFC ist auf deinem Gerät nicht verfügbar</string>
|
||||
<plurals name="nft_collections_count">
|
||||
<item quantity="one">%d Stück</item>
|
||||
<item quantity="other">%d Stücke</item>
|
||||
</plurals>
|
||||
<string name="nft_wallet_count">%1$d NFTs in der %2$d Sammlung</string>
|
||||
<string name="nft_wallet_receive_nft">Tippe hier, um das erste NFT zu erhalten</string>
|
||||
<string name="nft_wallet_title">NFT-Sammlungen</string>
|
||||
|
|
@ -1011,6 +1016,7 @@
|
|||
<item quantity="other">Verfügbar für %d Tage</item>
|
||||
</plurals>
|
||||
<string name="visa_main_balances_and_limits">Guthaben und Limits</string>
|
||||
<string name="visa_onboarding_access_code_navigation_title">Zugangscode</string>
|
||||
<string name="visa_onboarding_approve_wallet_selector_notification_message">Bitte wähle die Wallet aus, mit der Du den Registrierungsprozess gestartet hast, um die Transaktion zur Erstellung Deines Kontos auf der Blockchain zu signieren</string>
|
||||
<string name="visa_onboarding_close_alert_message">Möchtest Du den Vorgang wirklich beenden? Du kannst später dort fortfahren, wo Du aufgehört hast.</string>
|
||||
<string name="visa_onboarding_in_progress_description">Das wird nicht lange dauern. Wir richten gerade Dein Konto ein.</string>
|
||||
|
|
@ -1157,6 +1163,12 @@
|
|||
<string name="warning_testnet_card_message">Dies ist eine Testnet-Karte. Sie kann keine Transaktionen verarbeiten und sollte nur zu Test- und Entwicklungszwecken verwendet werden.</string>
|
||||
<string name="warning_testnet_card_title">Nur für Testzwecke</string>
|
||||
<string name="warning_token_balance_not_updated">Der Kontostand ist möglicherweise veraltet. Aktualisiere bittre die Seite.</string>
|
||||
<string name="wc_connections">Verbindungen</string>
|
||||
<string name="wc_disconnect_all">Alle trennen</string>
|
||||
<string name="wc_disconnect_all_alert_title">Alle dApps trennen</string>
|
||||
<string name="wc_new_connection">Neue Verbindung</string>
|
||||
<string name="wc_no_sessions_desc">Verbinde Deine Wallet mit einer anderen dApp</string>
|
||||
<string name="wc_no_sessions_title">Keine Sitzungen</string>
|
||||
<string name="welcome_interrupted_backup_alert_discard">Verwerfen</string>
|
||||
<string name="welcome_interrupted_backup_alert_message">Du hast eine unterbrochene Sicherung. Möchtest du diese fortsetzen?</string>
|
||||
<string name="welcome_interrupted_backup_alert_resume">Ja, fortsetzen</string>
|
||||
|
|
|
|||
|
|
@ -126,6 +126,7 @@
|
|||
</plurals>
|
||||
<string name="common_delete">Suprimir</string>
|
||||
<string name="common_disabled">Desactivado</string>
|
||||
<string name="common_disconnect">Desconectar</string>
|
||||
<string name="common_done">Listo</string>
|
||||
<string name="common_enable">Activar</string>
|
||||
<string name="common_enabled">Activado</string>
|
||||
|
|
@ -139,6 +140,7 @@
|
|||
<string name="common_fee_selector_option_market">Mercado</string>
|
||||
<string name="common_fee_selector_option_slow">Lento</string>
|
||||
<string name="common_fee_selector_title">Velocidad y tarifa</string>
|
||||
<string name="common_finish">Finalizar</string>
|
||||
<string name="common_generate_addresses">Sincronizar direcciones</string>
|
||||
<string name="common_go_to_provider">Ir al proveedor</string>
|
||||
<string name="common_go_to_token">Ir al token</string>
|
||||
|
|
@ -158,6 +160,7 @@
|
|||
<string name="common_no_address">Ninguna dirección</string>
|
||||
<string name="common_now">Ahora</string>
|
||||
<string name="common_ok">OK</string>
|
||||
<string name="common_open_in_browser">Abrir en el navegador</string>
|
||||
<string name="common_origin_card">Tarjeta principal</string>
|
||||
<string name="common_origin_ring">Anillo primario</string>
|
||||
<string name="common_passphrase">Frase de contraseña</string>
|
||||
|
|
@ -181,6 +184,7 @@
|
|||
<string name="common_send">Enviar</string>
|
||||
<string name="common_server_unavailable">El servidor no está disponible, por favor inténtelo de nuevo más tarde</string>
|
||||
<string name="common_share">Compartir</string>
|
||||
<string name="common_share_link">Compartir enlace</string>
|
||||
<string name="common_sign">Firme</string>
|
||||
<string name="common_sign_and_send">Firme y envíe</string>
|
||||
<string name="common_stake">Stake</string>
|
||||
|
|
@ -272,6 +276,8 @@
|
|||
<string name="express_exchange_by">Intercambio por %s</string>
|
||||
<string name="express_exchange_notification_failed_text">Visite el sitio web del proveedor para reembolsar su dinero</string>
|
||||
<string name="express_exchange_notification_failed_title">Operación fallida por el proveedor</string>
|
||||
<string name="express_exchange_notification_long_transaction_time_text">Su intercambio está tardando más de lo esperado. Por favor, consulte al soporte del proveedor para obtener ayuda.</string>
|
||||
<string name="express_exchange_notification_long_transaction_time_title">Tiempo de transacción prolongado</string>
|
||||
<string name="express_exchange_notification_refund_text">El monto de la transacción fue reembolsado en %1$s a su billetera debido a OKX o reglas puente. %2$s</string>
|
||||
<string name="express_exchange_notification_refund_title">El monto fue reembolsado en %1$s (red %2$s)</string>
|
||||
<string name="express_exchange_notification_verification_text">Visite el sitio web del proveedor para la verificación</string>
|
||||
|
|
@ -759,6 +765,8 @@
|
|||
<string name="send_summary_transaction_description_suffix_including">incluida una tarifa de red de %1$s</string>
|
||||
<string name="send_transaction_success">La transacción se firmó con éxito y se envió al nodo blockchain. El saldo de la billetera se actualizará después de un tiempo.</string>
|
||||
<string name="send_tron_account_activation_error">%1$s es un activo en la red Tron. Para calcular la tarifa y realizar una transacción, deba depositar algo de Tron (TRX) en su cuenta.</string>
|
||||
<string name="send_validation_destination_tag_required_description">Es necesario una etiqueta de destino (memo) para completar esta transacción para la dirección especificada.</string>
|
||||
<string name="send_validation_destination_tag_required_title">Etiqueta de destino obligatoria</string>
|
||||
<string name="sent_transaction_sent_title">Transacción enviada</string>
|
||||
<string name="settings_card_settings_footer">Escanee la tarjeta/anillo que quiere configurar</string>
|
||||
<string name="settings_forget_wallet">Olvidar la billetera</string>
|
||||
|
|
@ -780,6 +788,7 @@
|
|||
<string name="staking_details_estimated_profit">%s beneficio estimado</string>
|
||||
<string name="staking_details_market_rating">Calificación de mercado</string>
|
||||
<string name="staking_details_metrics_block_header">Métrica</string>
|
||||
<string name="staking_details_min_rewards_notification">Según las reglas de la red %1$s, se pueden reclamar recompensas desde %2$s. Las cantidades a continuación se acreditarán en su cuenta al deshacer el staking.</string>
|
||||
<string name="staking_details_minimum_requirement">Mínimo requerido</string>
|
||||
<string name="staking_details_no_rewards_to_claim">No hay recompensas para reclamar</string>
|
||||
<string name="staking_details_reward_claiming">Reclamo de recompensa</string>
|
||||
|
|
@ -817,11 +826,16 @@
|
|||
<string name="staking_notification_low_staked_balance_title">Saldo de staking bajo</string>
|
||||
<string name="staking_notification_minimum_balance_error_text">Un mínimo de %1$s %2$s es necesario para añadir más staking. Por favor recargue su saldo.</string>
|
||||
<string name="staking_notification_minimum_balance_error_title">No tiene suficiente %s</string>
|
||||
<string name="staking_notification_minimum_balance_title">Saldo insuficiente para Staking</string>
|
||||
<string name="staking_notification_minimum_restake_ada_text">Se requiere un mínimo de 3 ADA para hacer más staking. Por favor, recargue su saldo.</string>
|
||||
<string name="staking_notification_minimum_restake_ada_title">No hay suficiente ADA</string>
|
||||
<string name="staking_notification_minimum_stake_ada_text">La cantidad mínima requerida para hacer staking debe ser superior a 5 ADA. Recargue su saldo para continuar.</string>
|
||||
<string name="staking_notification_network_error_text">El staking no está disponible actualmente debido a las condiciones de la red. Inténtelo de nuevo más tarde.</string>
|
||||
<string name="staking_notification_new_validator_funds_transfer">El staking en la red %1$s con un nuevo validador transferirá automáticamente todos los fondos previamente en staking a este validador.</string>
|
||||
<string name="staking_notification_restake_rewards_text">Reinvierta las recompensas obtenidas en el monto apostado, aumentando las ganancias potenciales.</string>
|
||||
<string name="staking_notification_restake_text">La opción de volver a staking le permite mover sus fondos de un validador a otro sin necesidad de retirarlos.</string>
|
||||
<string name="staking_notification_stake_entire_balance_text">Está a punto de hacer staking con todo su saldo. Recomendamos dejar una cantidad para cubrir las tarifas de la red por unstaking o reclamo de recompensas.</string>
|
||||
<string name="staking_notification_ton_activate_account">Para empezar a hacer staking en TON, realice primero una transacción de salida de cualquier importe - esto activará su billetera.</string>
|
||||
<string name="staking_notification_unlock_text">Desbloquee su dinero para retirarlo del proceso de staking. El desbloqueo demora %s minuto.</string>
|
||||
<string name="staking_notification_unstake_cosmos_text">Sus fondos estarán disponibles para su uso después del período de desvinculación de 21 días. La recompensa se retirará junto con los fondos de desvinculación.</string>
|
||||
<string name="staking_notification_unstake_text">Sus fondos estarán disponibles para su uso después del período de desvinculación de %s.</string>
|
||||
|
|
@ -850,6 +864,7 @@
|
|||
<string name="staking_rewards">Recompensas</string>
|
||||
<string name="staking_stake_locked">El stake está bloqueado</string>
|
||||
<string name="staking_stake_more">Hacer más staking</string>
|
||||
<string name="staking_stake_more_button_unavailability_reason">Al hacer staking de %1$s, se realiza sobre todo su saldo de %2$s. Cualquier %2$s adicional que deposite en su billetera Tangem también se pondrá en staking automáticamente.</string>
|
||||
<string name="staking_staked_amount">Monto del staking</string>
|
||||
<string name="staking_summary_description_text">Ud hace el staking de %1$s y recibirá %2$s</string>
|
||||
<string name="staking_tap_to_unlock">Toque para desbloquear</string>
|
||||
|
|
@ -884,6 +899,8 @@
|
|||
<string name="story_meet_title">Descubra Tangem</string>
|
||||
<string name="story_web3_description">Intercambie, compre NFT, haga préstamos y depósitos en más de 100 servicios descentralizados diferentes</string>
|
||||
<string name="story_web3_title">Compatible con Web 3.0</string>
|
||||
<string name="sui_not_enough_coin_for_fee_description">Se requiere una transacción entrante de al menos %1$s para proceder</string>
|
||||
<string name="sui_not_enough_coin_for_fee_title">Fondos insuficientes</string>
|
||||
<string name="swap_give_permission_fee_footer">La red cobrará una tarifa de aprobación de token para verificar que está autorizando el uso de su token para el swap.</string>
|
||||
<string name="swap_promo_text">Intercambie más tokens a mejores tasas directamente en su billetera.</string>
|
||||
<string name="swap_promo_title">¡Nuevo proveedor de intercambio disponible!</string>
|
||||
|
|
@ -919,10 +936,12 @@
|
|||
<string name="toast_undo">Cancelar</string>
|
||||
<string name="token_button_unavailability_generic_description">Esta operación no está disponible actualmente. Por favor, inténtalo de nuevo más tarde.</string>
|
||||
<string name="token_button_unavailability_reason_buy_unavailable">Comprar %s no está disponible con los proveedores actuales pero estamos trabajando para agregar más opciones.</string>
|
||||
<string name="token_button_unavailability_reason_custom_token">La acción no está disponible para tokens personalizados.</string>
|
||||
<string name="token_button_unavailability_reason_empty_balance_sell">No tiene fondos para vender. Recargue su cuenta para poder vender fondos desde ella.</string>
|
||||
<string name="token_button_unavailability_reason_empty_balance_send">No tienes fondos para enviar. Recarga tu cuenta para poder enviar fondos desde ella.</string>
|
||||
<string name="token_button_unavailability_reason_loading">Los datos aún no se han cargado. Esto puede tardar unos segundos. Por favor, inténtelo de nuevo más tarde.</string>
|
||||
<string name="token_button_unavailability_reason_not_exchangeable">El servicio de intercambio %s no está compatible con los proveedores actuales pero estamos trabajando para agregar más opciones.</string>
|
||||
<string name="token_button_unavailability_reason_out_of_date_balance">Es posible que el saldo mostrado esté desactualizado debido al almacenamiento en caché.</string>
|
||||
<string name="token_button_unavailability_reason_pending_transaction_sell">La venta de fondos estará disponible una vez que la(s) transacción(es) pendiente(s) en la red %s se complete</string>
|
||||
<string name="token_button_unavailability_reason_pending_transaction_send">El envío de fondos estará disponible una vez que se completen las transacciones pendientes en la red %s.</string>
|
||||
<string name="token_button_unavailability_reason_sell_unavailable">Vender %s no es compatible con los proveedores actuales, pero estamos trabajando para agregar más opciones.</string>
|
||||
|
|
@ -969,6 +988,7 @@
|
|||
<string name="twins_recreate_toolbar">Tangem Twin</string>
|
||||
<string name="twins_recreate_warning">Esta acción es irreversible. No tendrá acceso la billetera antigua.</string>
|
||||
<string name="twins_scan_twin_with_number">Toque la tarjeta gemela con el número %s y no la retira hasta el final de la operación</string>
|
||||
<string name="universal_error">Hemos encontrado un error. Código de error: %s. Póngase en contacto con nuestro servicio de asistencia.</string>
|
||||
<string name="unlock_wallet_description_full">Use %s o escanee una tarjeta/anillo para tener acceso a su billetera</string>
|
||||
<string name="unsupported_wc_version">Error de conexión: Esta dApp utiliza la versión 1.0 de Wallet Connect, que no es compatible. Asegúrese de que la dApp sea compatible con la versión 2.0 de Wallet Connect para conectarse correctamente.</string>
|
||||
<string name="user_push_notification_agreement_argument_one">Manténgase actualizado con las últimas funciones y noticias</string>
|
||||
|
|
@ -1112,6 +1132,7 @@
|
|||
<string name="warning_some_token_balances_not_updated">No se han podido actualizar los saldos de algunos tokens</string>
|
||||
<string name="warning_testnet_card_message">Esta es una tarjeta de Testnet. No puede procesar transacciones y solo deba usarse para pruebas y desarrollo.</string>
|
||||
<string name="warning_testnet_card_title">Solo para fines de prueba</string>
|
||||
<string name="warning_token_balance_not_updated">El saldo podría estar desactualizado. Actualice la página.</string>
|
||||
<string name="welcome_interrupted_backup_alert_discard">Ignorar</string>
|
||||
<string name="welcome_interrupted_backup_alert_message">Tiene un backup interrumpido. ¿Quiere reanudarlo?</string>
|
||||
<string name="welcome_interrupted_backup_alert_resume">Sí, reanudar</string>
|
||||
|
|
|
|||
|
|
@ -126,6 +126,7 @@
|
|||
</plurals>
|
||||
<string name="common_delete">Supprimer</string>
|
||||
<string name="common_disabled">Désactivé</string>
|
||||
<string name="common_disconnect">Se déconnecter</string>
|
||||
<string name="common_done">Exécuté</string>
|
||||
<string name="common_enable">Activer</string>
|
||||
<string name="common_enabled">Activé</string>
|
||||
|
|
|
|||
|
|
@ -123,6 +123,7 @@
|
|||
</plurals>
|
||||
<string name="common_delete">削除</string>
|
||||
<string name="common_disabled">無効</string>
|
||||
<string name="common_disconnect">切断</string>
|
||||
<string name="common_done">完了</string>
|
||||
<string name="common_enable">有効にする</string>
|
||||
<string name="common_enabled">有効</string>
|
||||
|
|
@ -1009,6 +1010,7 @@
|
|||
<item quantity="other">%d日間利用可能</item>
|
||||
</plurals>
|
||||
<string name="visa_main_balances_and_limits">残高と限度額</string>
|
||||
<string name="visa_onboarding_access_code_navigation_title">アクセスコード</string>
|
||||
<string name="visa_onboarding_close_alert_message">本当に終了してもよろしいですか?中断したところから後で続行できます。</string>
|
||||
<string name="visa_onboarding_in_progress_description">長くはかかりません。アカウントを設定しています。</string>
|
||||
<string name="visa_onboarding_in_progress_issuer_description">長くはかかりません。アクティベーションを完了しています。</string>
|
||||
|
|
@ -1151,6 +1153,13 @@
|
|||
<string name="warning_testnet_card_message">これはテストネットカードです。取引処理はできませんので、テストおよび開発目的でのみご利用ください。</string>
|
||||
<string name="warning_testnet_card_title">テスト目的のみ</string>
|
||||
<string name="warning_token_balance_not_updated">残高が古い可能性があります。ページを更新してください。</string>
|
||||
<string name="wc_connections">接続</string>
|
||||
<string name="wc_disconnect_all">すべての接続を解除する</string>
|
||||
<string name="wc_disconnect_all_alert_desc">すべてのdAppsの接続解除に関するテキスト</string>
|
||||
<string name="wc_disconnect_all_alert_title">すべてのdAppを接続解除する</string>
|
||||
<string name="wc_new_connection">新しい接続</string>
|
||||
<string name="wc_no_sessions_desc">ウォレットを別のdAppに接続する</string>
|
||||
<string name="wc_no_sessions_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>
|
||||
|
|
|
|||
|
|
@ -132,6 +132,7 @@
|
|||
</plurals>
|
||||
<string name="common_delete">Удалить</string>
|
||||
<string name="common_disabled">Отключено</string>
|
||||
<string name="common_disconnect">Отключить</string>
|
||||
<string name="common_done">Готово</string>
|
||||
<string name="common_enable">Включить</string>
|
||||
<string name="common_enabled">Включено</string>
|
||||
|
|
@ -145,6 +146,7 @@
|
|||
<string name="common_fee_selector_option_market">По рынку</string>
|
||||
<string name="common_fee_selector_option_slow">Медленно</string>
|
||||
<string name="common_fee_selector_title">Скорость и комиссия</string>
|
||||
<string name="common_finish">Завершить</string>
|
||||
<string name="common_generate_addresses">Синхронизировать адреса</string>
|
||||
<string name="common_go_to_provider">К провайдеру</string>
|
||||
<string name="common_go_to_token">Перейти в токен</string>
|
||||
|
|
@ -164,6 +166,7 @@
|
|||
<string name="common_no_address">Нет адреса</string>
|
||||
<string name="common_now">Сейчас</string>
|
||||
<string name="common_ok">OK</string>
|
||||
<string name="common_open_in_browser">Открыть в браузере</string>
|
||||
<string name="common_origin_card">Основная карта</string>
|
||||
<string name="common_origin_ring">Основное кольцо</string>
|
||||
<string name="common_passphrase">Парольная фраза</string>
|
||||
|
|
@ -187,6 +190,7 @@
|
|||
<string name="common_send">Отправить</string>
|
||||
<string name="common_server_unavailable">Сервер недоступен, повторите попытку позднее</string>
|
||||
<string name="common_share">Поделиться</string>
|
||||
<string name="common_share_link">Поделиться ссылкой</string>
|
||||
<string name="common_sign">Подписать</string>
|
||||
<string name="common_sign_and_send">Подписать и отправить</string>
|
||||
<string name="common_stake">Застейкать</string>
|
||||
|
|
@ -278,6 +282,7 @@
|
|||
<string name="express_exchange_by">Обмен через %s</string>
|
||||
<string name="express_exchange_notification_failed_text">Чтобы вернуть ваши деньги, посетите сайт провайдера</string>
|
||||
<string name="express_exchange_notification_failed_title">Операция не выполнена провайдером</string>
|
||||
<string name="express_exchange_notification_long_transaction_time_text">Ваш обмен занимает больше времени, чем ожидалось. Пожалуйста, обратитесь в службу поддержки провайдера для уточнения.</string>
|
||||
<string name="express_exchange_notification_refund_text">Отправленные средства были возвращены в %1$s на ваш кошелек в соответствии с правилами OKX или моста обмена. %2$s</string>
|
||||
<string name="express_exchange_notification_refund_title">Сумма была возвращена в %1$s (%2$s сети)</string>
|
||||
<string name="express_exchange_notification_verification_text">Посетите сайт провайдера для проверки</string>
|
||||
|
|
@ -779,6 +784,7 @@
|
|||
<string name="send_summary_transaction_description_suffix_including">включая комиссию сети в размере %1$s</string>
|
||||
<string name="send_transaction_success">Транзакция успешно подписана и отправлена в блокчейн. Баланс будет обновлен через некоторое время</string>
|
||||
<string name="send_tron_account_activation_error">%1$s — это монета в сети Tron. Чтобы рассчитать комиссию и совершить транзакцию, вам необходимо внести немного Tron (TRX) на свой адрес.</string>
|
||||
<string name="send_validation_destination_tag_required_description">Для завершения транзакции на указанный адрес необходим тег назначения (мемо).</string>
|
||||
<string name="sent_transaction_sent_title">Транзакция отправлена</string>
|
||||
<string name="settings_card_settings_footer">Подготовьтесь к сканированию кольца или карты, которую вы хотите настроить.</string>
|
||||
<string name="settings_forget_wallet">Забыть кошелек</string>
|
||||
|
|
@ -837,6 +843,10 @@
|
|||
<string name="staking_notification_low_staked_balance_title">Низкий баланс стейкинга</string>
|
||||
<string name="staking_notification_minimum_balance_error_text">Для рестейкинга необходимо %1$s%2$s. Пожалуйста, пополните баланс.</string>
|
||||
<string name="staking_notification_minimum_balance_error_title">Недостаточно %s</string>
|
||||
<string name="staking_notification_minimum_balance_title">Недостаточный баланс для стейкинга</string>
|
||||
<string name="staking_notification_minimum_restake_ada_text">Для рестейкинга необходимо 3 ADA. Пожалуйста, пополните баланс.</string>
|
||||
<string name="staking_notification_minimum_restake_ada_title">Недостаточно ADA</string>
|
||||
<string name="staking_notification_minimum_stake_ada_text">Минимальная сумма для стейкинга должна быть больше, чем 5 ADA. Пожалуйста, пополните баланс, чтобы приступить к стейкингу.</string>
|
||||
<string name="staking_notification_network_error_text">Стейкинг временно недоступен из-за проблем в сети. Пожалуйста, попробуйте позже.</string>
|
||||
<string name="staking_notification_new_validator_funds_transfer">Стейкинг в сети %1$s с новым валидатором автоматически переведет ваши текущие застейканные средства на него.</string>
|
||||
<string name="staking_notification_restake_rewards_text">Реинвестируйте свои заработанные награды в вашу застейканную сумму, увеличивая потенциальный доход</string>
|
||||
|
|
@ -850,6 +860,7 @@
|
|||
<string name="staking_notifications_revote_tron_text">Стейкинг в сети Tron с новым валидатором автоматически переведет ваши текущие застейканные средства на него.</string>
|
||||
<string name="staking_preparing">Подготовка</string>
|
||||
<string name="staking_ready_to_withdraw">Доступно для вывода</string>
|
||||
<string name="staking_rebond">Повторно застейкать</string>
|
||||
<string name="staking_restake">Сменить валидатора</string>
|
||||
<string name="staking_restake_rewards">Застейкать вознаграждения</string>
|
||||
<string name="staking_revoke">Отозвать</string>
|
||||
|
|
@ -870,6 +881,7 @@
|
|||
<string name="staking_rewards">Вознаграждения</string>
|
||||
<string name="staking_stake_locked">Стейкинг закрыт</string>
|
||||
<string name="staking_stake_more">Застейкать еще</string>
|
||||
<string name="staking_stake_more_button_unavailability_reason">При стейкинге %1$s используется весь ваш баланс в %2$s. Любой дополнительный %2$s депозит будет автоматически застейкан.</string>
|
||||
<string name="staking_staked_amount">Застейканная сумма</string>
|
||||
<string name="staking_summary_description_text">Вы стейкаете %1$s и будете получать награду %2$s</string>
|
||||
<string name="staking_tap_to_unlock">Нажмите для разблокировки</string>
|
||||
|
|
@ -941,10 +953,12 @@
|
|||
<string name="toast_undo">Отменить</string>
|
||||
<string name="token_button_unavailability_generic_description">Выбранная операция в данный момент недоступна. Попробуйте позже.</string>
|
||||
<string name="token_button_unavailability_reason_buy_unavailable">Покупка %s в данный момент не поддерживается ни одним провайдером. Мы работаем над добавлением новых возможностей. Следите за нашими новостями.</string>
|
||||
<string name="token_button_unavailability_reason_custom_token">Действие недоступно для кастомных токенов.</string>
|
||||
<string name="token_button_unavailability_reason_empty_balance_sell">У вас нет средств для продажи. Пополните счет, чтобы иметь возможность продать с него средства.</string>
|
||||
<string name="token_button_unavailability_reason_empty_balance_send">У вас нет средств для отправки. Пополните счет, чтобы иметь возможность отправить с него средства.</string>
|
||||
<string name="token_button_unavailability_reason_loading">Данные в процессе загрузки. Это может занять несколько секунд. Пожалуйста, попробуйте позже.</string>
|
||||
<string name="token_button_unavailability_reason_not_exchangeable">Обмен %s в данный момент не поддерживается ни одним провайдером. Мы работаем над добавлением новых возможностей. Следите за нашими новостями.</string>
|
||||
<string name="token_button_unavailability_reason_out_of_date_balance">Отображаемый баланс мог устареть из-за кеширования.</string>
|
||||
<string name="token_button_unavailability_reason_pending_transaction_sell">Продажа средств станет доступной после завершения транзакции(-ий) в сети %s</string>
|
||||
<string name="token_button_unavailability_reason_pending_transaction_send">Отправка средств станет доступной после завершения транзакции(-ий) в сети %s</string>
|
||||
<string name="token_button_unavailability_reason_sell_unavailable">Продажа %s в данный момент не поддерживается ни одним провайдером. Мы работаем над добавлением новых возможностей. Следите за нашими новостями.</string>
|
||||
|
|
@ -1137,6 +1151,7 @@
|
|||
<string name="warning_some_token_balances_not_updated">Некоторые балансы токенов не удалось обновить</string>
|
||||
<string name="warning_testnet_card_message">Это Testnet карта. Он не может обрабатывать транзакции и используется только в целях тестирования и разработки.</string>
|
||||
<string name="warning_testnet_card_title">Только для целей тестирования</string>
|
||||
<string name="warning_token_balance_not_updated">Возможно, баланс устарел. Обновите страницу.</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>
|
||||
|
|
|
|||
|
|
@ -132,6 +132,7 @@
|
|||
</plurals>
|
||||
<string name="common_delete">Видалити</string>
|
||||
<string name="common_disabled">Вимкнуто</string>
|
||||
<string name="common_disconnect">Від\'єднати</string>
|
||||
<string name="common_done">Готово</string>
|
||||
<string name="common_enable">Увімкнути</string>
|
||||
<string name="common_enabled">Увімкнено</string>
|
||||
|
|
@ -145,6 +146,7 @@
|
|||
<string name="common_fee_selector_option_market">За ринком</string>
|
||||
<string name="common_fee_selector_option_slow">Повільно</string>
|
||||
<string name="common_fee_selector_title">Швидкість та комісія</string>
|
||||
<string name="common_finish">Завершити</string>
|
||||
<string name="common_generate_addresses">Синхронізувати адреси</string>
|
||||
<string name="common_go_to_provider">Перейти до провайдера</string>
|
||||
<string name="common_go_to_token">Перейти до токену</string>
|
||||
|
|
@ -164,6 +166,7 @@
|
|||
<string name="common_no_address">Немає адреси</string>
|
||||
<string name="common_now">Зараз</string>
|
||||
<string name="common_ok">ОК</string>
|
||||
<string name="common_open_in_browser">Відкрити в браузері</string>
|
||||
<string name="common_origin_card">Основна картка</string>
|
||||
<string name="common_origin_ring">Основне кільце</string>
|
||||
<string name="common_passphrase">Парольна фраза</string>
|
||||
|
|
@ -187,6 +190,7 @@
|
|||
<string name="common_send">Надіслати</string>
|
||||
<string name="common_server_unavailable">Сервер недоступний, спробуйте пізніше</string>
|
||||
<string name="common_share">Поширити</string>
|
||||
<string name="common_share_link">Поділитися посиланням</string>
|
||||
<string name="common_sign">Підписати</string>
|
||||
<string name="common_sign_and_send">Підписати та надіслати</string>
|
||||
<string name="common_stake">Застейкати</string>
|
||||
|
|
@ -278,6 +282,8 @@
|
|||
<string name="express_exchange_by">Обмін через %s</string>
|
||||
<string name="express_exchange_notification_failed_text">Щоб повернути ваші кошти, відвідайте сайт провайдера</string>
|
||||
<string name="express_exchange_notification_failed_title">Операція не виконана провайдером</string>
|
||||
<string name="express_exchange_notification_long_transaction_time_text">Ваш обмін триває довше, ніж очікувалося. Будь ласка, зверніться до служби підтримки постачальника послуг, для уточнення.</string>
|
||||
<string name="express_exchange_notification_long_transaction_time_title">Тривалий час транзакції</string>
|
||||
<string name="express_exchange_notification_refund_text">Сума транзакції була повернута в %1$s на ваш гаманець відповідно до правил OKX або мосту обміну. %2$s</string>
|
||||
<string name="express_exchange_notification_refund_title">Сума була повернута в %1$s (%2$s мережі)</string>
|
||||
<string name="express_exchange_notification_verification_text">Відвідайте сайт провайдера для перевірки</string>
|
||||
|
|
@ -779,6 +785,8 @@
|
|||
<string name="send_summary_transaction_description_suffix_including">включно з комісією мережі %1$s</string>
|
||||
<string name="send_transaction_success">Транзакція успішно підписана і відправлена до блокчейну. Баланс гаманця буде оновлено через деякий час</string>
|
||||
<string name="send_tron_account_activation_error">%1$s — це монета у мережі Tron. Щоб розрахувати комісію та здійснити транзакцію, вам необхідно внести певну кількість Tron (TRX) на свій рахунок.</string>
|
||||
<string name="send_validation_destination_tag_required_description">Тег призначення (memo) потрібен для завершення цієї транзакції для вказаної адреси.</string>
|
||||
<string name="send_validation_destination_tag_required_title">Тег призначення обов\'язковий</string>
|
||||
<string name="sent_transaction_sent_title">Трансакцію надіслано</string>
|
||||
<string name="settings_card_settings_footer">Підготуйтеся до сканування кільця або картки, яку ви хочете налаштувати.</string>
|
||||
<string name="settings_forget_wallet">Забути гаманець</string>
|
||||
|
|
@ -800,6 +808,7 @@
|
|||
<string name="staking_details_estimated_profit">~ прибуток за %s</string>
|
||||
<string name="staking_details_market_rating">Рейтинг ринку</string>
|
||||
<string name="staking_details_metrics_block_header">Метрики</string>
|
||||
<string name="staking_details_min_rewards_notification">Згідно з %1$s правила мережі, отримання можливі з %2$s. Суми нижче будуть зараховані на ваш рахунок після скасування стейкінгу.</string>
|
||||
<string name="staking_details_minimum_requirement">Мінімальні вимоги</string>
|
||||
<string name="staking_details_no_rewards_to_claim">Немає винагород, до отримання</string>
|
||||
<string name="staking_details_reward_claiming">Отримати винагороду</string>
|
||||
|
|
@ -837,11 +846,16 @@
|
|||
<string name="staking_notification_low_staked_balance_title">Низький баланс стейкінгу</string>
|
||||
<string name="staking_notification_minimum_balance_error_text">Мінімум %1$s %2$s потрібно для рестейкінгу. Будь ласка, поповніть баланс.</string>
|
||||
<string name="staking_notification_minimum_balance_error_title">Недостатньо %s</string>
|
||||
<string name="staking_notification_minimum_balance_title">Недостатній баланс для стейкінгу</string>
|
||||
<string name="staking_notification_minimum_restake_ada_text">Мінімум 3 ADA необхідно для рестейкінгу. Будь ласка поповніть свій баланс.</string>
|
||||
<string name="staking_notification_minimum_restake_ada_title">Недостатньо ADA</string>
|
||||
<string name="staking_notification_minimum_stake_ada_text">Мінімальна сума, необхідна для стекінгу, має перевищувати 5 ADA. Будь ласка, поповніть свій баланс, щоб почати cтейкінг.</string>
|
||||
<string name="staking_notification_network_error_text">Стейкінг тимчасово недоступний через проблеми в мережі. Будь ласка, спробуйте пізніше.</string>
|
||||
<string name="staking_notification_new_validator_funds_transfer">Стейкінг в мережі %1$s з новим валідатором автоматично переведе всі раніше застейкані кошти до цього валідатора</string>
|
||||
<string name="staking_notification_restake_rewards_text">Реінвестуйте зароблені винагороди у суму стейкінгу, щоб збільшити потенційний прибуток.</string>
|
||||
<string name="staking_notification_restake_text">Рестейк дозволяє вам перемістити ваші кошти від одного валідатора до іншого без необхідності виводити кошти зі стейкінгу</string>
|
||||
<string name="staking_notification_stake_entire_balance_text">Ви збираєтеся застейкати весь свій баланс. Ми рекомендуємо залишити невелику суму, щоб покрити комісію мережі за зняття коштів або отримання винагороди.</string>
|
||||
<string name="staking_notification_ton_activate_account">Щоб почати стейкінг в TON, спочатку здійсніть вихідну транзакцію на будь-яку суму — це активує ваш гаманець.</string>
|
||||
<string name="staking_notification_unlock_text">Розблокуйте свої кошти, щоб вивести їх зі стейкінгу. Розблокування займе %s.</string>
|
||||
<string name="staking_notification_unstake_cosmos_text">Ваші кошти будуть доступні для використання після закінчення 21-денного періоду розблокування. Винагорода буде отримана разом з вашими незастейканими коштами.</string>
|
||||
<string name="staking_notification_unstake_text">Ваші кошти будуть доступні після %s періоду розблокування.</string>
|
||||
|
|
@ -870,6 +884,7 @@
|
|||
<string name="staking_rewards">Винагороди</string>
|
||||
<string name="staking_stake_locked">Стейкінг закрито</string>
|
||||
<string name="staking_stake_more">Застейкати більше</string>
|
||||
<string name="staking_stake_more_button_unavailability_reason">При стейкінгу %1$s, весь ваш %2$s Баланс застейкний. Будь-які додаткові %2$s поповнены на Ваш гаманець Tangem буде також автоматично застейкано.</string>
|
||||
<string name="staking_staked_amount">Застейканий залишок</string>
|
||||
<string name="staking_summary_description_text">Ви стейкаєте %1$s і будете отримуватиме винагороду %2$s</string>
|
||||
<string name="staking_tap_to_unlock">Натисніть, щоб розблокувати</string>
|
||||
|
|
@ -904,6 +919,8 @@
|
|||
<string name="story_meet_title">Зустрічайте Tangem</string>
|
||||
<string name="story_web3_description">Обмінюйте, купуйте NFT, отримуйте позики та робіть депозити у понад 100 різних децентралізованих сервісах</string>
|
||||
<string name="story_web3_title">Web 3.0 сумісність</string>
|
||||
<string name="sui_not_enough_coin_for_fee_description">Для відправки потрібна вхідна транзакція на суму не менше %1$s</string>
|
||||
<string name="sui_not_enough_coin_for_fee_title">Недостатньо коштів</string>
|
||||
<string name="swap_give_permission_fee_footer">Мережа стягує комісію за схвалення токену за підтвердження, що саме ви дозволяєте використовувати ваш токен для обміну.</string>
|
||||
<string name="swap_promo_text">Обмінюйте більше токенів за вигіднішим курсом прямо у своєму гаманці.</string>
|
||||
<string name="swap_promo_title">З\'явився новий провайдер обмінів!</string>
|
||||
|
|
@ -939,10 +956,12 @@
|
|||
<string name="toast_undo">Скасувати</string>
|
||||
<string name="token_button_unavailability_generic_description">Обрана операція наразі недоступна. Спробуйте пізніше.</string>
|
||||
<string name="token_button_unavailability_reason_buy_unavailable">Наразі купівля монети %s недоступна. Слідкуйте за нашими оновленнями.</string>
|
||||
<string name="token_button_unavailability_reason_custom_token">Дія недоступна для спеціальних токенів.</string>
|
||||
<string name="token_button_unavailability_reason_empty_balance_sell">У вас немає коштів для продажу. Поповніть рахунок, щоб мати змогу продати з нього кошти.</string>
|
||||
<string name="token_button_unavailability_reason_empty_balance_send">У вас немає коштів для відправлення. Поповніть рахунок, щоб мати змогу надіслати з нього кошти.</string>
|
||||
<string name="token_button_unavailability_reason_loading">Дані ще не завантажені. Це може зайняти кілька секунд. Будь ласка, спробуйте пізніше.</string>
|
||||
<string name="token_button_unavailability_reason_not_exchangeable">Наразі обмін монети %s недоступний. Слідкуйте за нашими оновленнями.</string>
|
||||
<string name="token_button_unavailability_reason_out_of_date_balance">Відображуваний баланс може бути застарілим через кешування.</string>
|
||||
<string name="token_button_unavailability_reason_pending_transaction_sell">Продаж коштів стане доступним після завершення транзакції(-ій) в мережі %s</string>
|
||||
<string name="token_button_unavailability_reason_pending_transaction_send">Надсилання коштів стане доступним після завершення транзакції(-ій) в мережі %s</string>
|
||||
<string name="token_button_unavailability_reason_sell_unavailable">Наразі продаж %s недоступний. Слідкуйте за нашими оновленнями.</string>
|
||||
|
|
@ -989,6 +1008,7 @@
|
|||
<string name="twins_recreate_toolbar">Tangem Twin</string>
|
||||
<string name="twins_recreate_warning">Ця дія є незворотною. Ви не матимете доступу до старого гаманця.</string>
|
||||
<string name="twins_scan_twin_with_number">Прикладіть twin-картку з номером %s та не прибирайте її до завершення операції</string>
|
||||
<string name="universal_error">Виникла помилка. Код помилки: %s. Спробуйте, будь ласка, знову. Якщо проблема знову виникає — зверніться до нашої служби підтримки.</string>
|
||||
<string name="unlock_wallet_description_full">Використовуйте %s або відскануйте картку/кільце, щоб отримати доступ до свого гаманця</string>
|
||||
<string name="unsupported_wc_version">Не вдалося встановити з\'єднання: Цей dApp використовує Wallet Connect версії 1.0, яка не підтримується. Будь ласка, переконайтеся, що dApp підтримує Wallet Connect версії 2.0 для успішного підключення.</string>
|
||||
<string name="user_push_notification_agreement_argument_one">Будьте в курсі останніх функцій та новин</string>
|
||||
|
|
@ -1134,6 +1154,7 @@
|
|||
<string name="warning_some_token_balances_not_updated">Деякі баланси токенів не вдалося оновити</string>
|
||||
<string name="warning_testnet_card_message">Це картка Testnet. Вона не може обробляти транзакції і повинна використовуватися лише для тестування та розробки.</string>
|
||||
<string name="warning_testnet_card_title">Лише для цілей тестування</string>
|
||||
<string name="warning_token_balance_not_updated">Баланс може бути застарілим. Оновіть сторінку.</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>
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@
|
|||
<string name="common_create">創造</string>
|
||||
<string name="common_delete">刪除</string>
|
||||
<string name="common_disabled">禁用</string>
|
||||
<string name="common_disconnect">斷開連接</string>
|
||||
<string name="common_done">完成</string>
|
||||
<string name="common_enable">允許</string>
|
||||
<string name="common_enabled">啟用</string>
|
||||
|
|
|
|||
|
|
@ -842,7 +842,7 @@
|
|||
<string name="staking_notification_low_staked_balance_title">Low staked balance</string>
|
||||
<string name="staking_notification_minimum_balance_error_text">A minimum of %1$s %2$s is required for restaking. Please top up your balance.</string>
|
||||
<string name="staking_notification_minimum_balance_error_title">Not enough %s</string>
|
||||
<string name="staking_notification_minimum_balance_title"> Insufficient Balance for Staking</string>
|
||||
<string name="staking_notification_minimum_balance_title">Insufficient Balance for Staking</string>
|
||||
<string name="staking_notification_minimum_restake_ada_text">A minimum of 3 ADA is required for restaking. Please top up your balance.</string>
|
||||
<string name="staking_notification_minimum_restake_ada_title">Not enough ADA</string>
|
||||
<string name="staking_notification_minimum_stake_ada_text">The minimum amount required for staking must exceed 5 ADA. Please top up your balance to start staking.</string>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package com.tangem.feature.qrscanning.model
|
||||
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import androidx.compose.runtime.Stable
|
||||
import com.tangem.common.routing.AppRouter
|
||||
import com.tangem.core.decompose.di.ModelScoped
|
||||
|
|
@ -85,7 +87,22 @@ internal class QrScanningModel @Inject constructor(
|
|||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
// don't forget enable reader mode after scan complete
|
||||
cardSdkProvider.sdk.forceEnableReaderMode()
|
||||
forceEnableReaderModeDelayed()
|
||||
}
|
||||
|
||||
private fun forceEnableReaderModeDelayed() {
|
||||
// we need to delay task because some devices can't enable until navigation completes
|
||||
Handler(Looper.getMainLooper())
|
||||
.postDelayed(
|
||||
{
|
||||
// don't forget enable reader mode after scan complete
|
||||
cardSdkProvider.sdk.forceEnableReaderMode()
|
||||
},
|
||||
DELAY_BEFORE_CALL_ENABLE_NFC,
|
||||
)
|
||||
}
|
||||
|
||||
private companion object {
|
||||
const val DELAY_BEFORE_CALL_ENABLE_NFC = 1000L
|
||||
}
|
||||
}
|
||||
|
|
@ -151,6 +151,7 @@ internal enum class EnterAddressSource {
|
|||
QRCode,
|
||||
PasteButton,
|
||||
RecentAddress,
|
||||
MyWallet,
|
||||
}
|
||||
|
||||
internal enum class SelectedCurrencyType(val value: String) {
|
||||
|
|
|
|||
|
|
@ -729,7 +729,7 @@ internal class SendModel @Inject constructor(
|
|||
val memo = uiState.value.getRecipientState(stateRouter.isEditState)?.memoTextField?.value
|
||||
val isValidMemo = validateMemo(memo)
|
||||
|
||||
val isRecent = type == EnterAddressSource.RecentAddress
|
||||
val isRecent = type == EnterAddressSource.RecentAddress || type == EnterAddressSource.MyWallet
|
||||
if (isRecent && isValidAddress && isValidMemo) onNextClick(stateRouter.isEditState)
|
||||
}
|
||||
// endregion
|
||||
|
|
|
|||
|
|
@ -28,11 +28,11 @@ import com.tangem.core.ui.res.TangemThemePreview
|
|||
import com.tangem.features.send.impl.R
|
||||
import com.tangem.features.send.impl.presentation.analytics.EnterAddressSource
|
||||
import com.tangem.features.send.impl.presentation.domain.SendRecipientListContent
|
||||
import com.tangem.features.send.impl.presentation.model.SendClickIntents
|
||||
import com.tangem.features.send.impl.presentation.state.SendStates
|
||||
import com.tangem.features.send.impl.presentation.state.fields.SendTextField
|
||||
import com.tangem.features.send.impl.presentation.state.previewdata.RecipientStatePreviewData
|
||||
import com.tangem.features.send.impl.presentation.state.previewdata.SendClickIntentsStub
|
||||
import com.tangem.features.send.impl.presentation.model.SendClickIntents
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
|
||||
private const val ADDRESS_FIELD_KEY = "ADDRESS_FIELD_KEY"
|
||||
|
|
@ -81,6 +81,7 @@ internal fun SendRecipientContent(
|
|||
clickIntents = clickIntents,
|
||||
isLast = recipients.any { !it.isVisible },
|
||||
isBalanceHidden = isBalanceHidden,
|
||||
type = EnterAddressSource.MyWallet,
|
||||
)
|
||||
listHeaderItem(
|
||||
titleRes = R.string.send_recent_transactions,
|
||||
|
|
@ -92,6 +93,7 @@ internal fun SendRecipientContent(
|
|||
clickIntents = clickIntents,
|
||||
isLast = true,
|
||||
isBalanceHidden = isBalanceHidden,
|
||||
type = EnterAddressSource.RecentAddress,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -192,6 +194,7 @@ private fun LazyListScope.listItem(
|
|||
clickIntents: SendClickIntents,
|
||||
isLast: Boolean,
|
||||
isBalanceHidden: Boolean,
|
||||
type: EnterAddressSource,
|
||||
) {
|
||||
items(
|
||||
count = list.size,
|
||||
|
|
@ -208,10 +211,7 @@ private fun LazyListScope.listItem(
|
|||
subtitleEndOffset = item.subtitleEndOffset,
|
||||
subtitleIconRes = item.subtitleIconRes,
|
||||
onClick = {
|
||||
clickIntents.onRecipientAddressValueChange(
|
||||
title,
|
||||
EnterAddressSource.RecentAddress,
|
||||
)
|
||||
clickIntents.onRecipientAddressValueChange(title, type)
|
||||
},
|
||||
isLoading = item.isLoading,
|
||||
modifier = Modifier
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue