Updated on 2026-08-14

This commit is contained in:
Tangem 2025-03-28 09:43:42 +03:00
commit 7a0ea3076e
16 changed files with 116 additions and 231 deletions

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -151,6 +151,7 @@ internal enum class EnterAddressSource {
QRCode,
PasteButton,
RecentAddress,
MyWallet,
}
internal enum class SelectedCurrencyType(val value: String) {

View file

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

View file

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