diff --git a/app/src/main/java/com/tangem/tap/common/DialogManager.kt b/app/src/main/java/com/tangem/tap/common/DialogManager.kt index 4d1c3734ea..d1bb43ad95 100644 --- a/app/src/main/java/com/tangem/tap/common/DialogManager.kt +++ b/app/src/main/java/com/tangem/tap/common/DialogManager.kt @@ -76,13 +76,13 @@ class DialogManager : StoreSubscriber { CreateWalletInterruptDialog.create(state.dialog, context) is WalletConnectDialog.UnsupportedCard -> SimpleAlertDialog.create( - titleRes = R.string.wallet_connect, + titleRes = R.string.wallet_connect_title, messageRes = R.string.wallet_connect_scanner_error_no_ethereum_wallet, context = context, ) is WalletConnectDialog.AddNetwork -> SimpleAlertDialog.create( - titleRes = R.string.wallet_connect, + titleRes = R.string.wallet_connect_title, message = context.getString( R.string.wallet_connect_network_not_found_format, state.dialog.network, @@ -91,14 +91,14 @@ class DialogManager : StoreSubscriber { ) is WalletConnectDialog.OpeningSessionRejected -> { SimpleAlertDialog.create( - titleRes = R.string.wallet_connect, + titleRes = R.string.wallet_connect_title, messageRes = R.string.wallet_connect_same_wcuri, context = context, ) } is WalletConnectDialog.SessionTimeout -> { SimpleAlertDialog.create( - titleRes = R.string.wallet_connect, + titleRes = R.string.wallet_connect_title, messageRes = R.string.wallet_connect_error_timeout, context = context, ) @@ -123,7 +123,7 @@ class DialogManager : StoreSubscriber { ) is WalletConnectDialog.UnsupportedNetwork -> SimpleAlertDialog.create( - titleRes = R.string.wallet_connect, + titleRes = R.string.wallet_connect_title, messageRes = R.string.wallet_connect_scanner_error_unsupported_network, context = context, ) diff --git a/app/src/main/java/com/tangem/tap/domain/TangemSdkManager.kt b/app/src/main/java/com/tangem/tap/domain/TangemSdkManager.kt index 7d6db12a26..4fe7252ac7 100644 --- a/app/src/main/java/com/tangem/tap/domain/TangemSdkManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/TangemSdkManager.kt @@ -92,7 +92,7 @@ class TangemSdkManager(private val tangemSdk: TangemSdk, private val context: Co return runTaskAsyncReturnOnMain( ResetToFactorySettingsTask(), card.cardId, - initialMessage = Message(context.getString(R.string.details_row_title_reset_factory_settings)), + initialMessage = Message(context.getString(R.string.card_settings_reset_card_to_factory)), ) } diff --git a/app/src/main/java/com/tangem/tap/domain/twins/CreateFirstTwinWalletTask.kt b/app/src/main/java/com/tangem/tap/domain/twins/CreateFirstTwinWalletTask.kt index 872c130c30..95e8753b3d 100644 --- a/app/src/main/java/com/tangem/tap/domain/twins/CreateFirstTwinWalletTask.kt +++ b/app/src/main/java/com/tangem/tap/domain/twins/CreateFirstTwinWalletTask.kt @@ -4,6 +4,8 @@ import com.tangem.common.CompletionResult import com.tangem.common.card.EllipticCurve import com.tangem.common.core.CardSession import com.tangem.common.core.CardSessionRunnable +import com.tangem.domain.common.TwinCardNumber +import com.tangem.domain.common.TwinsHelper import com.tangem.operations.wallet.CreateWalletResponse import com.tangem.operations.wallet.CreateWalletTask import com.tangem.operations.wallet.PurgeWalletCommand @@ -14,8 +16,14 @@ class CreateFirstTwinWalletTask : CardSessionRunnable { session: CardSession, callback: (result: CompletionResult) -> Unit, ) { - val publicKey = session.environment.card?.getSingleWallet()?.publicKey + val card = session.environment.card + val publicKey = card?.getSingleWallet()?.publicKey if (publicKey != null) { + if (TwinsHelper.getTwinCardNumber(card.cardId) == TwinCardNumber.Second) { + callback(CompletionResult.Failure(WrongTwinCard(TwinCardNumber.First))) + return + } + PurgeWalletCommand(publicKey).run(session) { response -> when (response) { is CompletionResult.Success -> { diff --git a/app/src/main/java/com/tangem/tap/domain/twins/CreateSecondTwinWalletTask.kt b/app/src/main/java/com/tangem/tap/domain/twins/CreateSecondTwinWalletTask.kt index 85c03925ff..8780d00055 100644 --- a/app/src/main/java/com/tangem/tap/domain/twins/CreateSecondTwinWalletTask.kt +++ b/app/src/main/java/com/tangem/tap/domain/twins/CreateSecondTwinWalletTask.kt @@ -6,28 +6,27 @@ import com.tangem.common.KeyPair import com.tangem.common.card.EllipticCurve import com.tangem.common.core.CardSession import com.tangem.common.core.CardSessionRunnable -import com.tangem.common.core.TangemError import com.tangem.common.extensions.hexToBytes +import com.tangem.domain.common.TwinCardNumber import com.tangem.domain.common.TwinsHelper import com.tangem.operations.wallet.CreateWalletResponse import com.tangem.operations.wallet.CreateWalletTask import com.tangem.operations.wallet.PurgeWalletCommand import com.tangem.tap.domain.extensions.getSingleWallet -import com.tangem.wallet.R class CreateSecondTwinWalletTask( private val firstPublicKey: String, - private val firstCardId: String, private val issuerKeys: KeyPair, private val preparingMessage: Message, - private val creatingWalletMessage: Message + private val creatingWalletMessage: Message, ) : CardSessionRunnable { + override fun run(session: CardSession, callback: (result: CompletionResult) -> Unit) { val card = session.environment.card val publicKey = card?.getSingleWallet()?.publicKey if (publicKey != null) { - if (!card.cardId.startsWith(TwinsHelper.getPairCardSeries(firstCardId) ?: "")) { - callback(CompletionResult.Failure(WrongTwinCard())) + if (TwinsHelper.getTwinCardNumber(card.cardId) == TwinCardNumber.First) { + callback(CompletionResult.Failure(WrongTwinCard(TwinCardNumber.Second))) return } @@ -53,13 +52,10 @@ class CreateSecondTwinWalletTask( is CompletionResult.Success -> { session.environment.card = session.environment.card?.updateWallet(result.data.wallet) - WriteProtectedIssuerDataTask( - firstPublicKey.hexToBytes(), issuerKeys - ).run(session) { writeResult -> + WriteProtectedIssuerDataTask(firstPublicKey.hexToBytes(), issuerKeys).run(session) { writeResult -> when (writeResult) { is CompletionResult.Success -> callback(result) - is CompletionResult.Failure -> - callback(CompletionResult.Failure(writeResult.error)) + is CompletionResult.Failure -> callback(CompletionResult.Failure(writeResult.error)) } } } @@ -67,10 +63,4 @@ class CreateSecondTwinWalletTask( } } } - - private class WrongTwinCard : TangemError { - override val code: Int = 50005 - override var customMessage: String = code.toString() - override val messageResId = R.string.twins_wrong_card_error - } } diff --git a/app/src/main/java/com/tangem/tap/domain/twins/TwinCardsManager.kt b/app/src/main/java/com/tangem/tap/domain/twins/TwinCardsManager.kt index c1f7001ebc..ad9df6d287 100644 --- a/app/src/main/java/com/tangem/tap/domain/twins/TwinCardsManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/twins/TwinCardsManager.kt @@ -43,7 +43,6 @@ class TwinCardsManager( ): CompletionResult { val task = CreateSecondTwinWalletTask( firstPublicKey = currentCardPublicKey!!, - firstCardId = currentCardId, issuerKeys = issuerKeyPair, preparingMessage = preparingMessage, creatingWalletMessage = creatingWalletMessage, diff --git a/app/src/main/java/com/tangem/tap/domain/twins/WrongTwinCard.kt b/app/src/main/java/com/tangem/tap/domain/twins/WrongTwinCard.kt new file mode 100644 index 0000000000..24d032e94f --- /dev/null +++ b/app/src/main/java/com/tangem/tap/domain/twins/WrongTwinCard.kt @@ -0,0 +1,15 @@ +package com.tangem.tap.domain.twins + +import com.tangem.common.core.TangemError +import com.tangem.domain.common.TwinCardNumber +import com.tangem.tap.tangemSdkManager +import com.tangem.wallet.R + +data class WrongTwinCard(private val twinCardNumber: TwinCardNumber) : TangemError { + override val code: Int = 50005 + override var customMessage: String = tangemSdkManager.getString( + R.string.twin_error_same_card, + twinCardNumber.number, + ) + override val messageResId: Int? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ApproveWcSessionDialog.kt b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ApproveWcSessionDialog.kt index f0917ecf17..da8e03c3b8 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ApproveWcSessionDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ApproveWcSessionDialog.kt @@ -20,7 +20,7 @@ class ApproveWcSessionDialog { session.peerMeta.url, ) return AlertDialog.Builder(context).apply { - setTitle(context.getString(R.string.wallet_connect)) + setTitle(context.getString(R.string.wallet_connect_title)) setMessage(message) setPositiveButton(context.getText(R.string.common_start)) { _, _ -> store.dispatch(GlobalAction.HideDialog) diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/BnbTransactionDialog.kt b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/BnbTransactionDialog.kt index 3d0fb57930..8de826231f 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/BnbTransactionDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/BnbTransactionDialog.kt @@ -26,14 +26,14 @@ class BnbTransactionDialog { it.symbol, it.price, it.quantity, - it.amount + it.amount, ) - }.joinToString ( "\n\n" ) + }.joinToString(separator = "\n\n") is BinanceMessageData.Transfer -> context.getString( R.string.wallet_connect_bnb_transaction_message, data.address, data.outputAddress, - data.amount + data.amount, ) } @@ -44,14 +44,16 @@ class BnbTransactionDialog { val positiveButtonTitle = context.getText(R.string.common_sign) return AlertDialog.Builder(context).apply { - setTitle(context.getString(R.string.wallet_connect)) + setTitle(context.getString(R.string.wallet_connect_title)) setMessage(fullMessage) setPositiveButton(positiveButtonTitle) { _, _ -> - store.dispatch(WalletConnectAction.BinanceTransaction.Sign( + store.dispatch( + WalletConnectAction.BinanceTransaction.Sign( id = sessionId, data = data.data, - sessionData = session - )) + sessionData = session, + ), + ) } setNegativeButton(context.getText(R.string.common_reject)) { _, _ -> store.dispatch(WalletConnectAction.RejectRequest(session, sessionId)) diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ClipboardOrScanQrDialog.kt b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ClipboardOrScanQrDialog.kt index 809b37cf66..0213971713 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ClipboardOrScanQrDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ClipboardOrScanQrDialog.kt @@ -13,7 +13,7 @@ class ClipboardOrScanQrDialog { companion object { fun create(wcUri: String, context: Context): AlertDialog { return AlertDialog.Builder(context).apply { - setTitle(context.getString(R.string.wallet_connect)) + setTitle(context.getString(R.string.wallet_connect_title)) setMessage(context.getText(R.string.wallet_connect_clipboard_alert)) setPositiveButton(context.getText(R.string.wallet_connect_paste_from_clipboard)) { _, _ -> store.dispatch(WalletConnectAction.OpenSession(wcUri)) diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/PersonalSignDialog.kt b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/PersonalSignDialog.kt index 5d6e001087..c78549f273 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/PersonalSignDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/PersonalSignDialog.kt @@ -10,19 +10,10 @@ import com.trustwallet.walletconnect.models.session.WCSession class PersonalSignDialog { companion object { - fun create( - data: PersonalSignDialogData, - context: Context, - ): AlertDialog { - val message = - context.getString(R.string.wallet_connect_alert_sign_message) + - context.getString( - R.string.wallet_connect_personal_sign_message, - data.dAppName, - data.message, - ) + fun create(data: PersonalSignDialogData, context: Context): AlertDialog { + val message = context.getString(R.string.wallet_connect_alert_sign_message, data.message) return AlertDialog.Builder(context).apply { - setTitle(context.getString(R.string.wallet_connect)) + setTitle(context.getString(R.string.wallet_connect_title)) setMessage(message) setPositiveButton(context.getText(R.string.common_sign)) { _, _ -> store.dispatch(WalletConnectAction.SignMessage(data.session)) diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/TransactionDialog.kt b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/TransactionDialog.kt index 245cbd2ae0..cd45c1c9be 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/TransactionDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/TransactionDialog.kt @@ -22,7 +22,7 @@ class TransactionDialog { data.amount, data.gasAmount, data.totalAmount, - data.balance + data.balance, ) val positiveButtonTitle = when (data.type) { @@ -30,7 +30,7 @@ class TransactionDialog { WcTransactionType.EthSendTransaction -> context.getText(R.string.common_sign_and_send) } return AlertDialog.Builder(context).apply { - setTitle(context.getString(R.string.wallet_connect)) + setTitle(context.getString(R.string.wallet_connect_title)) setMessage(message) setPositiveButton(positiveButtonTitle) { _, _ -> if (data.isEnoughFundsToSend) { diff --git a/app/src/main/java/com/tangem/tap/features/home/compose/views/HomeButtons.kt b/app/src/main/java/com/tangem/tap/features/home/compose/views/HomeButtons.kt index 1e3cc818b4..cea593e6fe 100644 --- a/app/src/main/java/com/tangem/tap/features/home/compose/views/HomeButtons.kt +++ b/app/src/main/java/com/tangem/tap/features/home/compose/views/HomeButtons.kt @@ -51,7 +51,7 @@ fun HomeButtons( }, content = { Text( - text = stringResource(id = R.string.home_button_scan), + text = stringResource(id = R.string.welcome_unlock_card), fontWeight = FontWeight.Medium, fontSize = 16.sp, textAlign = TextAlign.Center, diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/OnboardingNoteFragment.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/OnboardingNoteFragment.kt index 82d575fafe..558c71a9f6 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/OnboardingNoteFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/OnboardingNoteFragment.kt @@ -178,7 +178,7 @@ class OnboardingNoteFragment : BaseOnboardingFragment() { } private fun setupDoneState(state: OnboardingNoteState) = with(mainBinding.onboardingActionContainer) { - btnMainAction.setText(R.string.onboarding_done_button_continue) + btnMainAction.setText(R.string.common_continue) btnMainAction.setOnClickListener { showConfetti(false) store.dispatch(OnboardingNoteAction.Done) diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/OnboardingOtherCardsFragment.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/OnboardingOtherCardsFragment.kt index f01eb6fbcd..b0b8ae343d 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/OnboardingOtherCardsFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/otherCards/OnboardingOtherCardsFragment.kt @@ -91,20 +91,20 @@ class OnboardingOtherCardsFragment : BaseOnboardingFragment() { } private fun setupDoneState(state: TwinCardsState) = with(mainBinding.onboardingActionContainer) { - btnMainAction.setText(R.string.onboarding_done_button_continue) + btnMainAction.setText(R.string.common_continue) btnMainAction.setOnClickListener { store.dispatch(TwinCardsAction.Confetti.Hide) store.dispatch(TwinCardsAction.Done) diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingWalletFragment.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingWalletFragment.kt index 59b784620f..2ca75121a9 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingWalletFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingWalletFragment.kt @@ -331,7 +331,7 @@ class OnboardingWalletFragment : BaseFragment(R.layout.fragment_onboarding_walle tvBody.text = getString(R.string.onboarding_twins_interrupt_warning) layoutButtonsCommon.btnWalletMainAction.text = getText(R.string.onboarding_saltpay_button_backup_origin) } else { - tvHeader.text = getText(R.string.onboarding_title_prepare_origin) + tvHeader.text = getText(R.string.common_origin_card) tvBody.text = getString( R.string.onboarding_subtitle_scan_primary_card_format, state.primaryCardId?.let { cardIdFormatter.getFormattedCardId(it) }, diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/AddMoreBackupCardsDialog.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/AddMoreBackupCardsDialog.kt index 883ce390dc..92d0c3e0c1 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/AddMoreBackupCardsDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/dialogs/AddMoreBackupCardsDialog.kt @@ -8,21 +8,21 @@ import com.tangem.tap.store import com.tangem.wallet.R class AddMoreBackupCardsDialog { - companion object { - fun create(context: Context): AlertDialog { - return AlertDialog.Builder(context).apply { - setTitle(R.string.alert_title) - setMessage(R.string.onboarding_alert_message_not_max_backup_cards_added) - setPositiveButton(R.string.common_continue) { _, _ -> - store.dispatch(BackupAction.ShowAccessCodeInfoScreen) - } - setNegativeButton(R.string.onboarding_button_add_more_cards) { _, _ -> + companion object { + fun create(context: Context): AlertDialog { + return AlertDialog.Builder(context).apply { + setTitle(R.string.alert_title) + setMessage(R.string.onboarding_alert_message_not_max_backup_cards_added) + setPositiveButton(R.string.common_continue) { _, _ -> + store.dispatch(BackupAction.ShowAccessCodeInfoScreen) + } + setNegativeButton(R.string.common_cancel) { _, _ -> - } - setOnDismissListener { - store.dispatch(GlobalAction.HideDialog) - } - }.create() - } + } + setOnDismissListener { + store.dispatch(GlobalAction.HideDialog) + } + }.create() } + } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/send/ui/stateSubscribers/SendStateSubscriber.kt b/app/src/main/java/com/tangem/tap/features/send/ui/stateSubscribers/SendStateSubscriber.kt index 4d6d80e6ce..de2fd70ef6 100644 --- a/app/src/main/java/com/tangem/tap/features/send/ui/stateSubscribers/SendStateSubscriber.kt +++ b/app/src/main/java/com/tangem/tap/features/send/ui/stateSubscribers/SendStateSubscriber.kt @@ -230,12 +230,12 @@ class SendStateSubscriber(fragment: BaseStoreFragment) : val balanceText = when (state.mainCurrency.type) { MainCurrencyType.FIAT -> fg.getString( - R.string.send_balance_subtitle_format, - state.viewBalanceValue, state.mainCurrency.currencySymbol, + R.string.common_balance, + "${state.viewBalanceValue} ${state.mainCurrency.currencySymbol}", ).remove(":") MainCurrencyType.CRYPTO -> fg.getString( - R.string.send_balance_subtitle_format, - state.mainCurrency.currencySymbol, state.viewBalanceValue, + R.string.common_balance, + "${state.mainCurrency.currencySymbol} ${state.viewBalanceValue}", ) } @@ -304,7 +304,7 @@ class SendStateSubscriber(fragment: BaseStoreFragment) : val willSent = getString( R.string.send_total_subtitle_format, - receipt.willSentCrypto, receipt.symbols.crypto, + "${receipt.willSentCrypto} ${receipt.symbols.crypto}", ) llTotalContainer.tvWillBeSentValue.update(willSent) } @@ -316,15 +316,13 @@ class SendStateSubscriber(fragment: BaseStoreFragment) : tvReceiptAmountValue.update("${receipt.amountCrypto} ${receipt.symbols.crypto}") tvReceiptFeeValue.update("${receipt.feeCrypto} ${receipt.symbols.crypto}") llTotalContainer.tvTotalValue.update("${receipt.totalCrypto} ${receipt.symbols.crypto}") - - val willSent = SpannableStringBuilder() - .bold { - append(roughOrEmpty(receipt.willSentFiat)).append(" ") - append(receipt.symbols.fiat) - append(" (fee: ${receipt.feeFiat} ") - append(receipt.symbols.fiat).append(")") - } - llTotalContainer.tvWillBeSentValue.update(willSent.toString()) + llTotalContainer.tvWillBeSentValue.update( + getString( + R.string.send_total_subtitle_fiat_format, + "${roughOrEmpty(receipt.willSentFiat)} ${receipt.symbols.fiat}", + "${receipt.feeFiat} ${receipt.symbols.fiat}", + ), + ) } ReceiptLayoutType.TOKEN_FIAT -> { val receipt = state.tokenFiat ?: return @@ -337,8 +335,8 @@ class SendStateSubscriber(fragment: BaseStoreFragment) : val willSent = getString( R.string.send_total_subtitle_asset_format, - receipt.symbols.token ?: "", receipt.willSentToken, - receipt.symbols.crypto, receipt.willSentFeeCoin, + "${receipt.symbols.token ?: ""} ${receipt.willSentToken}", + "${receipt.symbols.crypto} ${receipt.willSentFeeCoin}", ) llTotalContainer.tvWillBeSentValue.update(willSent) } diff --git a/app/src/main/java/com/tangem/tap/features/tokens/addCustomToken/compose/SelectTokenNetworkDialog.kt b/app/src/main/java/com/tangem/tap/features/tokens/addCustomToken/compose/SelectTokenNetworkDialog.kt index 23781967f0..5dc938ed1c 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/addCustomToken/compose/SelectTokenNetworkDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/addCustomToken/compose/SelectTokenNetworkDialog.kt @@ -13,9 +13,9 @@ import com.tangem.wallet.R @Composable fun SelectTokenNetworkDialog(dialog: DomainDialog.SelectTokenDialog, onDismissRequest: () -> Unit) { SimpleDialog( - title = stringResource(id = R.string.custom_token_type_network), + title = stringResource(id = R.string.custom_token_network_input_title), items = dialog.items, onSelect = dialog.onSelect, - onDismissRequest = onDismissRequest + onDismissRequest = onDismissRequest, ) { network -> TitleSubtitle(dialog.networkIdConverter(network.networkId), network.contractAddress ?: "") } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/tokens/ui/AddTokensFragment.kt b/app/src/main/java/com/tangem/tap/features/tokens/ui/AddTokensFragment.kt index 36b1f82337..4ba2a2c082 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/ui/AddTokensFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/ui/AddTokensFragment.kt @@ -118,7 +118,7 @@ class AddTokensFragment : Fragment(R.layout.fragment_add_tokens), override fun newState(state: TokensState) { if (activity == null || view == null) return val toolbarTitle = - if (state.allowToAdd) R.string.add_tokens_title else R.string.search_tokens_title + if (state.allowToAdd) R.string.main_manage_tokens else R.string.search_tokens_title tokensState.value = state binding.toolbar.title = getString(toolbarTitle) } @@ -143,7 +143,7 @@ class AddTokensFragment : Fragment(R.layout.fragment_add_tokens), val menuItem = menu.findItem(R.id.menu_search) val searchView: SearchView = menuItem.actionView as SearchView - searchView.queryHint = searchView.getString(R.string.add_token_search_hint) + searchView.queryHint = searchView.getString(R.string.common_search) searchView.maxWidth = android.R.attr.width searchView.inputtedTextAsFlow() .debounce(800) diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt index 544d94e6ca..17d3d03cca 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt @@ -91,8 +91,7 @@ class WalletFragment : Fragment(R.layout.fragment_wallet), StoreSubscriber + tools:text="@string/welcome_unlock_card" /> + app:title="@string/main_manage_tokens" /> @@ -30,7 +30,7 @@ android:id="@+id/cv_currencies" android:layout_width="match_parent" android:layout_height="match_parent" - app:layout_behavior="@string/appbar_scrolling_view_behavior"/> + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_details_confirm.xml b/app/src/main/res/layout/fragment_details_confirm.xml index 83bbae68c9..8a56bf635b 100644 --- a/app/src/main/res/layout/fragment_details_confirm.xml +++ b/app/src/main/res/layout/fragment_details_confirm.xml @@ -52,7 +52,7 @@ android:textColor="@color/warning" app:layout_constraintTop_toBottomOf="@id/iv_warning" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent"/> + app:layout_constraintEnd_toEndOf="parent" /> + app:layout_constraintEnd_toEndOf="parent" /> + tools:text="@string/welcome_unlock_card" /> + app:layout_constraintBottom_toBottomOf="@id/tv_token_fiat_amount" /> Entfernen Sie haben keinen Zugang zur Kamera erteilt, bitte passen Sie Ihre Datenschutzeinstellungen an - Karte scannen + Karte scannen Absenden ein Wallet erstellen Tangem - Tokens + Tokens Verifizierte Bilanz Die Bilanz wird aufgeladen… - Blockchain ist nicht erreichbar Das Konto ist nicht erstellt Laden Sie %s+ %s auf um ein Konto zu erstellen Leere Karte @@ -48,9 +47,9 @@ Normal Priorität inkl. Gebühr - %s %s wird gesendet - %s %s und %s %s werden gesendet - Bilanz: %s %s + %s wird gesendet + %s und %s werden gesendet + Bilanz: %s Die Transaktion wurde erfolgreich signiert und an den Blockchain-Knoten gesendet. Die Walletbilanz wird aktualisiert Details KartenID @@ -58,7 +57,6 @@ Signiert %s Hasch App Währung - Dieser Vorgang ist irriversibel. Wenn jemand nach dem Löschen des Wallets Geld überweist, können Sie es nicht mehr abheben. Langes Tippen Dieser Mechanismus schützt vor Annäherungsangriffen auf eine Karte. Es wird eine Verzögerung zwischen dem Empfang und der Ausführung eines Befehls erzwungen. Nach der ersten signierten Transaktion wird dieses Telefon mit der Karte verknüpft und die Transaktionen werden sofort signiert Passcode @@ -69,65 +67,12 @@ Warnung Diese Karte ist für die Zusammenarbeit mit Tangem nicht geeignet - Die von Ihnen gescannte Karte ist eine Entwicklungskarte. Akzeptieren Sie sie nicht als Zahlungsmittel + Die von Ihnen gescannte Karte ist eine Entwicklungskarte. Akzeptieren Sie sie nicht als Zahlungsmittel. Tippen um zu signieren - Tippen Sie um ein Wallet zu erstellen Tippen Sie um den Zugangscode zu ändern Tippen Sie um den Passcode zu ändern - -RECHTLICHER HAFTUNGSAUSSCHLUSS -\n\n1.Tangem App (Software) -  -\n\nDie Software ist nur für die Verwendung mit Tangem hardware Wallets (Karten) über NFC-Schnittstelle geeignet. Die Software: -  -\n\na. generieret, speichert, überträgt KEINE privaten (geheimen) kryptografischen Schlüssel für Blockchain- Wallets mit digitalen Assets, einschließlich Kryptowährung, und hat KEINEN Zugriff darauf. -\n\nb. generieret, speichert, überträgt KEINE geheimen Schlüssel, Passwörter, Passphrasen, Wiederherstellungssätze, die verwendet werden können, um private (geheime) Schlüssel in Blockchain- Wallets, die digitale Assets enthalten, wiederherzustellen oder zu kopieren, einschließlich Kryptowährung, und hat KEINEN Zugriff darauf. -\n\nc. erbringt KEINE Wechsel-, Handels- und Investitionsdienstleistungen im Auftrag der Tangem AG. -  -  -\n\n2. Risiken im Zusammenhang mit der Verwendung von Software -  -\n\nTangem haftet nicht für Verluste, Schäden oder Ansprüche aus den Ereignissen, die in den Geltungsbereich von folgenden fünf Kategorien fallen: -  -\n\na. Fehler, die der Benutzer einer kryptowährungsbezogenen Software oder eines kryptowährungsbezogenen Services macht, z.B. vergessene Passwörter, an falsche Adressen gesendete Zahlungen und zufälliges Löschen von Blockchain-Wallets auf Karten. -\n\nb. Probleme mit Software und/oder blockchain- oder kryptowährungsbezogener Software oder Services, z.B. beschädigte Dateien, falsch konstruierte Transaktionen, unsichere kryptografische Bibliotheken, Schadsoftware. -\n\nc. Technische Ausfälle in der Hardware des Benutzers, einschließlich Karten, jeglicher kryptowährungsbezogener Software oder Services, z.B. Datenverlust infolge eines fehlerhaften oder beschädigten Speichers. -\n\nd. Sicherheitsprobleme, die der Benutzer einer kryptowährungsbezogenen Software oder eines kryptowährungsbezogenen Services hat, z.B. unbefugter Zugriff auf Benutzer-Wallets und/oder -Konten. -\n\ne. Handlungen oder Untätigkeit Dritter und/oder Vorkommnisse bei den Dritten, z.B. Insolvenz von Dienstleistungserbringern, Informationssicherheitsattacken bei den Dienstleistungserbringern und Betrug durch Dritte. -  - -\n\n3.  Tradings- und Investitionsrisiken -  -\n\nBei jeder Kryptowährung oder einer anderen digitalen Assetwechsel-Transaktion besteht ein hohes Risiko. Jede Transaktion mit Währungen birgt Risiken, einschließlich, aber nicht beschränkt auf das Potenzial für sich ändernde wirtschaftliche Bedingungen, die den Preis oder die Liquidität einer Währung erheblich beeinflussen können. Investitionen in Kryptowährungsspekulationen können auch anfällig für starke Anstiege und Rückgänge sein, wenn die relevanten Marktwerte schwanken. Aus diesem Grund ist es bei Spekulationen auf solchen Märkten ratsam, nur das Risikokapital zu verwenden. -  - -\n\n4. Risiken im Zusammenhang mit elektronischem Trading -  -\n\nBevor Sie Transaktionen über ein elektronisches System tätigen, sollten Sie die Regeln und Vorschriften der Börsen, die das System anbieten, und/oder die Instrumente, mit denen Sie handeln möchten, sorgfältig überprüfen. Der Online-Handel birgt ein dazugehörendes Risiko aufgrund der Systemreaktion und der Zugriffszeiten, die aufgrund der Marktbedingungen, der Systemleistung und anderer Faktoren variieren können. Sie sollten diese und andere Risiken vor dem Tradingsbeginn berücksichtigen. -  - -\n\n5. Einhaltung der Steuerpflichten -  -\n\nDie Benutzer der Software müssen allein bestimmen, welche Steuern, wenn überhaupt, für Ihre Kryptowährungstransaktionen gelten. Die Eigentümer oder die Mitwirkenden an der Software sind für die Ermittlung der Steuern, die für Kryptowährungstransaktionen gelten, NICHT verantwortlich. -  - -\n\n6. Garantieausschluss - -\n\nDie Software wird „wie gesehen“ bereitgestellt, ohne jegliche Gewährleistung in Bezug auf die Software und/oder Inhalte, Daten, Materialien und/oder Services, die zur Software gehören. -  - -\n\n7. Haftungsbeschränkung -  -\n\nSofern gesetzlich nichts anderes vorgesehen ist, haften die Eigentümer oder die Mitwirkenden an der Software in keinem Fall für Schäden jeglicher Art, einschließlich, aber nicht beschränkt auf Nutzungsausfall, entgangenen Gewinn oder Datenverlust, die aus der Verwendung der Software oder in Zusammenhang mit der jeglichen Verwendung der Software entstehen. Auf keine Weise sind die Eigentümer oder die Mitwirkenden an der Software für die von Ihnen im Vertrauen auf die Software vorgenommenen oder unterlassenen Handlungen, Entscheidungen oder sonstigen Verhaltensweisen verantwortlich. -  -  -\n\n8. Letzte Änderung -  -\n\nDieser Haftungsausschuss wurde am 1. Oktober 2020 zum letzten Mal geändert. - - Nutzungsbedingungen Keine Internetverbindung @@ -145,5 +90,5 @@ RECHTLICHER HAFTUNGSAUSSCHLUSS Legen Sie die Karte zum Scannen an Legen Sie die Karte an - + ≈ %s (inkl. Gebühr: %s) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 8ec21b0632..f631f44d40 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -10,14 +10,13 @@ Supprimer Vous n\'avez pas octroyé l\'accès à votre caméra, veuillez modifier vos paramètres de confidentialité - Scannez la carte + Scannez la carte Envoyer Créer un portefeuille Tangem - Jetons d\'authentification + Jetons d\'authentification Solde confirmé Solde est en cours de téléchargement … - Blockchain est inaccessible Compte n\'est pas créé Pour créer un compte, téléchargez %s+ %s Carte vide @@ -49,9 +48,9 @@ Normal Priorité Inclure les commissions - Sera envoyé %s %s - Sera envoyé %s %s et %s %s - Solde : %s %s + Sera envoyé %s + Sera envoyé %s et %s + Solde : %s La transaction a été signée avec succès et envoyée au nœud de blockchain. Le solde du portefeuille sera mis à jour après un certain temps Référénces ID de la carte @@ -59,7 +58,6 @@ Signé %s hashes Monnaie de l\'application - Cette action est irréversible. Si, après avoir annulé le portefeuille, quelqu\'un lui envoie des fonds, vous ne pourrez pas les retirer. Tenez la carte fermement Ce mécanisme protège contre les attaques sans contact sur la carte. Il y a un délai entre la réception et l\'exécution de la commande. Après la première transaction signée, ce téléphone sera associé à la carte et les transactions seront signées immédiatement. Mot de passe @@ -69,63 +67,11 @@ Cette carte a déjà été rechargée et a signé des transactions avant. Envisagez la possibilité de retirer tous les fonds immédiatement si vous avez reçu cette carte d\'une source non fiable. Attention Cette carte n\'est pas conçue pour fonctionner avec Tangem - La carte que vous avez scannée est une carte de développement. Ne l\'acceptez pas comme paiement + La carte que vous avez scannée est une carte de développement. Ne l\'acceptez pas comme paiement. Touchez pour signer - Touchez, pour créer un portefeuille Touchez, pour modifier le code d\'accès Touchez, pour modifier le mot de passe - - -Avertissement -  -\n\n1.Application Tangem (Logiciel) -  -\n\nLe logiciel est destiné à l\'utilisation exclusivement avec les e-portefeuilles Tangem (Cartes) à l\'aide de l\'interface NFC. Le logiciel NE réalise pas ce qui suit : -  -\n\na. Génération, stockage, transmission ou octroi d\'accès aux clés privées (confidentiels) de chiffrement des blockchain-portefeuilles, qui contiennent les avoirs numériques, y compris la crypto-monnaie. -\n\nb. Génération, stockage, transmission ou octroi d\'accès aux clés confidentielles, aux mots de passe, phrases secrètes, phrases de restitution, qui pourront être utilisées pour la restitution ou pour le clonage des clés privées (confidentiels) de chiffrement des blockchain-portefeuilles, contenant les avoirs numériques, y compris la crypto-monnaie. -\n\nc. Prestation des services de bourse, de commerce, d\'investissement du nom de Tangem AG. -  -  -\n\n2. Risques, liés avec l\'utilisation du logiciel -  -\n\nTangem n\'assume aucune responsabilité pour tous les dommages, préjudice ou prétentions, qui peuvent survenir comme résultat des évènements, se rapportant à une de cinq catégories suivantes : -  -  -\n\na. Les erreurs, commises par l\'utilisateur de tout logiciel ou service liés avec la crypto-monnaie, par exemple, les mots de passe oubliés, les paiements envoyés aux adresses incorrectes, et élimination occasionnelle des blockchain-portefeuilles sur les Cartes. -\n\nb. Les problèmes du Logiciel et/ou de tout progiciel ou service liés avec blockchain ou avec la crypto-monnaie, par exemple, les fichiers endommagés, les transaction créées d\'une manière incorrecte, les bibliothèques cryptographiques non sécurisées, les logiciels malveillants. -\n\nc. Les défaillances techniques du hardware de l\'utilisateur, y compris les Cartes, de tout logiciel ou service liés avec la crypto-monnaie, par exemple, la perte des données à cause des périphériques défectives ou endommagées de stockage. -\n\nd. Les problèmes de la sécurité, subis par l\'utilisateur de tout logiciel ou service liés avec la crypto-monnaie, par exemple, l\'accès non autorisé aux portefeuilles et/ou comptes des utilisateurs. -\n\ne. Les actions ou l\'inaction des tierces personnes et/ou les évènements subis par les tierces personnes, par exemple, la faillite du prestataire de services, les attaques sur la sécurité informatique des prestataires de services et la fraude commise par des tierces personnes. -  -\n\n3.  Risques commerciales et d\'investissement -  -\n\nToute échange de crypto-monnaie ou d\'autres avoirs numériques implique les risques importants. Toute transaction liée avec la monnaie implique les risques, qui incluent, entre autres, la possibilité de modification des conditions économiques, qui peuvent influencer d\'une manière significative le prix ou la disponibilité de la monnaie. Les investissements dans les spéculations boursières avec les crypto-monnaies peuvent aussi être exposés aux montées et chutes en flèche lors des fluctuations des valeurs marchandes correspondants. C\'est pour cette raison, que lors de la spéculation sur tels marchés, il est conseillé d\'utiliser seulement le capital-risque. -  - -\n\n4. Risques de commerce électronique -  -\n\nAvant de passer aux transactions en utilisant le système électronique, Vous devez prendre connaissance, d\'une manière bien attentive, des règles et des dispositions stipulées par les bourses qui offrent ce système, et/ou les listes des titres de placement que vous voulez négocier. Le commerce en ligne possède le risque inaliénable lié avec la vitesse de réponse du système et avec le temps d\'accès qui peuvent varier en fonction des conditions de marché, du rendement du système et d\'autres facteurs. Avant de commencer les négoces, vous devez comprendre ces risques aussi que les risques supplémentaires. -  -\n\n5. Respect des obligations fiscales -  -\n\nLes utilisateurs du Logiciel assument toute la responsabilité pour définir, quels impôts sont appliqués à leurs transactions avec la crypto-monnaie, au cas où il y a de tels impôts. Les propriétaires et les participants à l\'élaboration du Logiciel n\'assument pas la responsabilité pour la définition des impôts qui sont appliqués aux transactions avec la crypto-monnaie. -  -\n\n6. Absence de garanties -
 -\n\nLe logiciel est concédé sous les conditions « tel quel », sans aucune garantie à l\'égard du Logiciel et/ou de tout le contenu, données, matériaux et/ou services, présentes dans ce Logiciel. -  -\n\n7. Restriction de la responsabilité -  -\n\nSauf disposition contraire prévue par la législation, les propriétaires et les participants à l\'élaboration du Logiciel n\'assument pas la responsabilité pour aucun dommage, y compris l\'indisponibilité, la perte de profit ou la perte des données, qui surviennent comme résultat de l\'utilisation ou bien qui sont liés d\'une certaine manière avec l\'utilisation du Logiciel. Les propriétaires et les participants à l\'élaboration du Logiciel n\'assument pas la responsabilité pour les actions, les résolutions ou pour une autre conduite que vous manifestez ou pas par l\'intermédiaire du Logiciel. -  -  -\n\n8. Dernière modification -  -\n\nCette avertissement a été modifié, pour la dernière fois, le 1 octobre 2020. - - Conditions d\'utilisation Pas de connexion internet @@ -138,5 +84,5 @@ Avertissement Posez pour scanner Posez la carte - + ≈ %s (incl. les commissions : %s) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index ba083b4b39..613ba4dfc2 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -8,14 +8,13 @@ Annulla Rimuovere Non hai fornito l\'accesso alla tua videocamera, modifica le tue impostazioni sulla privacy - Scansiona carta + Scansiona carta Invia Crea portafoglio Tangem - Token + Token Saldo verificato Il saldo sta per essere caricato… - Blockchain non raggiungibile Conto non creato Scarica %s+ %s per creare un account Carta vuota @@ -48,9 +47,9 @@ Normale Prioritario Includi commissione - Sarà inviato %s %s - Sarà inviato %s %s e %s %s - Saldo: %s %s + Sarà inviato %s + Sarà inviato %s e %s + Saldo: %s La transazione è stata firmata con successo e inviata al nodo blockchain. Il saldo del portafoglio verrà aggiornato dopo un po\' di tempo Requisiti ID carta @@ -58,7 +57,6 @@ Firmato Hash %s Valuta dell\'applicazione - Questa azione è irreversibile. Se dopo aver eliminato il portafoglio qualcuno invia dei fondi, non potrai ritirarli. Mantenimento della carta Questo meccanismo protegge dagli avvicinamenti senza contatto sulla carta. Attiva un ritardo tra la ricezione e l\'esecuzione di un comando. Dopo la prima transazione firmata, questo telefono verrà associato alla carta e le transazioni verranno firmate immediatamente. Password @@ -68,65 +66,11 @@ Questa carta è già stata ricaricata e ha firmato transazioni in passato. Valuta la possibilità di prelevare immediatamente tutti i fondi se hai ricevuto questa carta da una fonte inaffidabile. Attenzione Questa carta non è progettata per funzionare con Tangem - La carta che hai scansionato è una carta di sviluppo. Non utilizzarla come strumento di pagamento + La carta che hai scansionato è una carta di sviluppo. Non utilizzarla come strumento di pagamento. Avvicina per firmare - Avvicina per creare il portafoglio Avvicina per modificare il codice di accesso Avvicina per modificare la password - - - NOTA LEGALE\n -\n -App Tangem (software)\n -\n -1. Il software può essere utilizzato solo con i portafogli hardware Tangem (schede) tramite l\'interfaccia NFC. Il software NON esegue le seguenti operazioni:\n -\n -a) Generazione, archiviazione, trasferimento o accesso a chiavi crittografiche private (segrete) di portafogli blockchain contenenti risorse digitali, inclusa la criptovaluta.\n -\n -b) Generazione, archiviazione, trasferimento o accesso a chiavi segrete, password, passphrase, frasi di ripristino che possono essere utilizzate per recuperare o copiare chiavi private (segrete) su portafogli blockchain contenenti risorse digitali, inclusa la criptovaluta.\n -\n -c) Fornitura di servizi di scambio, negoziazione e investimento per conto di Tandem AG.\n -\n -2. Rischi associati al funzionamento del Software\n -\n -Tandem non sarà ritenuta responsabile per eventuali perdite, danni o reclami derivanti da eventi che rientrano nelle seguenti cinque categorie:\n -\n -a) Errori commessi dall\'utente di qualsiasi software o servizio relativo alla criptovaluta, ad esempio password dimenticate, pagamenti inviati a indirizzi errati e cancellazione accidentale di portafogli blockchain su Schede.\n -\n -b) Problemi con il software e/o qualsiasi software o servizio correlato a blockchain o criptovaluta, come file danneggiati, transazioni generate in modo improprio, librerie crittografiche non sicure, malware.\n -\n -c) Malfunzionamenti tecnici nell\'hardware dell\'utente, incluse le Schede, qualsiasi software o servizio relativo alla criptovaluta, ad esempio, perdita di dati a causa di un dispositivo di archiviazione difettoso o danneggiato.\n -\n -d) Problemi di sicurezza affrontati dall\'utente di qualsiasi software o servizio relativo alla criptovaluta, ad esempio l\'accesso non autorizzato a portafogli e/o account utente.\n -\n -e) Azioni o inattività di terze parti e/o eventi con cui si sono scontrate terze parti, come la bancarotta di fornitori di servizi, attacchi alla sicurezza delle informazioni relative ai fornitori di servizi e frodi perpetrate da terzi.\n -\n -3. Rischi commerciali e di investimento\n -\n -Qualsiasi transazione che coinvolge lo scambio di criptovalute o altre risorse digitali comporta rischi significativi. Qualsiasi transazione che include una valuta comporta dei rischi, inclusa ma non limitata alla possibilità di cambiamenti nelle condizioni economiche che potrebbero influenzare materialmente il valore o la liquidità della valuta. L\'investimento nella speculazione sui cambi di criptovaluta può anche essere soggetto a forti alti e bassi poiché i rispettivi prezzi di mercato fluttuano. È per questo motivo che è consigliabile utilizzare solo capitale di rischio quando si fanno affari in questi mercati.\n -\n -4. Rischi dell\'e-commerce\n -\n -Prima di effettuare transazioni utilizzando un sistema elettronico, è necessario leggere attentamente le norme e i regolamenti delle borse che offrono questo sistema e/o elencano i titoli che si intende negoziare. Il trading online presenta un rischio intrinseco dovuto alla risposta del sistema e ai tempi di accesso, che possono variare a seconda delle condizioni di mercato, delle prestazioni del sistema ed altri fattori. È necessario comprendere questi e altri rischi prima di fare trading.\n -\n -5. Rispetto degli obblighi fiscali\n -\n -Gli utenti del Software sono gli unici responsabili del determinare le eventuali tasse applicate alle loro transazioni in criptovaluta. I proprietari o i contributori del Software NON sono responsabili della determinazione delle tasse che si applicano alle transazioni in criptovaluta.\n -\n -6. Assenza di garanzie\n -\n -Il Software viene fornito "così com\'è" senza garanzia di alcun tipo riguardo al Software e/o a qualsiasi contenuto, dato, materiale e/o servizio fornito con il Software.\n -\n -7. Limitazione di responsabilità\n -\n -Salvo quanto diversamente previsto dalla legge, i proprietari o i contributori del Software non saranno in nessun caso responsabili per eventuali danni di qualsiasi tipo, inclusi, ma non limitati a, perdita di utilizzo, perdita di profitti o perdita di dati derivanti o in qualsiasi modo correlati all\'uso del Software. In nessun modo i proprietari o i contributori del Software sono responsabili delle azioni, decisioni o altri comportamenti presi o non presi da voi in relazione al Software.\n -\n -8. Ultima modifica\n -\n -Questa nota legale è stata modificata l\'ultima volta 01.10.2020. - - Accetta Termini del servizio Nessuna connessione a Internet @@ -145,5 +89,5 @@ Questa nota legale è stata modificata l\'ultima volta 01.10.2020. Avvicina per scansionare Avvicina la carta - + ≈ %s (inc. commissione: %s) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 57273eb0aa..3b187cf2d3 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -3,21 +3,21 @@ Tangem Сохранить изменения Предупреждение - Повторить попытку + Повторить Готово Отмена Принять Удалить %s Вы не предоставили доступ к своей камере, измените настройки конфиденциальности - Сканировать карту + Сканировать карту Отправить Создать кошелек Tangem - Токены + Токены Подтвержденный баланс Загрузка баланса… - Блокчейн недоступен + Сеть недоступна Аккаунт не создан Пополните счет на %s+ %s, чтобы создать аккаунт Карта пуста @@ -49,9 +49,9 @@ Нормальный Приоритетный Включить коммисию - %s %s будет отправлено - %s %s и %s %s будут отправлены - Баланс: %s %s + %s будет отправлено + %s и %s будет отправлено + Баланс: %s Транзакция успешно подписана и отправлена в блокчейн. Баланс будет обновлен через некоторое время Подробности ID карты @@ -59,7 +59,6 @@ Подписано %s хэшей Валюта приложения - Это действие необратимо. Если после удаления кошелька кто-то отправит на него средства, то Вы не сможете их вывести. Длительное удержание Этот механизм защищает карту от бесконтактных атак. Между сканированием карты и выполнением команды будет добавлена задержка. Пароль @@ -71,7 +70,7 @@ Эта карта не предназначена для работы с этим приложением Карта, которую Вы отсканировали, является картой для разработчиков. Не принимайте ее в качестве оплаты. Нажмите, чтобы подписать - Приложите, чтобы создать кошелек + Чтобы создать кошелек, соедините телефон и карту в точности, как показано выше. Чтобы изменить код доступа, соедините телефон и карту в точности, как показано выше. Чтобы изменить пароль, соедините телефон и карту в точности, как показано выше. Условия использования @@ -88,24 +87,24 @@ Ошибка сканирования карты. Попробуй снова. Купить Продать - Торговать + Обменять По умолчанию Устаревший Создать кошелек Сгенерируйте ключи кошелька на обеих картах, чтобы начать использовать свои Twin карты Один кошелек. Две карты. - Одна, которую Вы держите в руках, и вторая карта с номером #%s. + Это карта, которую вы держите в руках. У парной карты номер %s.\n\nОбе карты можно использовать для вывода средств из этого кошелька. Условия использования карты Tangem Twin Это действие необратимо. У Вас не будет доступа к старому кошельку. - Приложите Twin карту #%s + Отсканируйте twin-карту #%s Подготовка карты Создание кошелька Сканировать карту #%s - Вы приложили ту же карту. Чтобы создать кошелек, вам нужно приложить другу Twin карту. + Вы отсканировали ту же карту. Для создания twin-кошелька вам необходимо отсканировать карту с номером %d Начать Добавить - Поиск + Искать Отправить отзыв Не могу отправить транзакцию Причина: %s @@ -117,9 +116,6 @@ Может быть лучше Один вопрос Вам нравится приложение Tangem? - Добавить токены - Начните поиск - Значок токена Добавить токен Адрес контракта Обязательное поле @@ -129,7 +125,6 @@ Путь деривации некорректен Токены могут быть созданы кем угодно. Остерегайтесь мошеннических токенов, они могут ничего не стоить Этот токен/сеть уже находится в вашем списке - Сеть Знаков после запятой Сеть Не выбрано @@ -166,8 +161,8 @@ Купить криптовалюту Показать адрес кошелька Успешно! - Ваша криптокарта активирована и готова к использованию - Продолжить + Ваша карта активирована и готова к использованию + Продолжить Баланс Отправляйте только %s (%s) на этот адрес. Иначе это может привести к утрате средств. Отправляйте только %s (%s) из сети %s на этот адрес. Иначе это может привести к утрате средств. @@ -180,10 +175,9 @@ Выполнить резервное копирование Оставить на потом Завершить процесс резервного копирования - + Добавить резервную карту + Добавить резервную карту Сканировать карту #%d Сканировать основную карту - Добавить больше карт Нет резервных карт Подготовьте свою карту Добавлена одна резервная карта @@ -225,16 +219,14 @@ Если сейчас отменить резервное копирование, то придется вернуть карты до заводских настроек, чтобы начать заново Возобновить резервное копирование Отказаться - Основная карта + Основная карта Сканировать основную карту Перейти к моему кошельку Отправка %s Подготовьте резервную карту с номером %s Подготовьте основную карту с номером %s - Сброс до заводских настроек Сеть Solana взымает арендную плату в размере %s каждые 2 дня. Аккаунты, которые не могут позволить себе арендную плату, удаляются из сети. Пополните свой счет более чем на %s, чтобы использовать его бесплатно. - Эта карта не является векселем на предъявителя. В настоящее время мы не можем сопоставить количество подписей на карте с информацией в блокчейне. Это нормально, но в редких случаях может означать, что предыдущий владелец скрывает автономную подпись, что является проблемой безопасности.\n\nНе принимайте эту карту в качестве физического платежа от кого-то, кому Вы не доверяете.\n\nВо всех остальных отношениях - это совершенно безопасно.\n\nTangem — единственный аппаратный кошелек, предлагающий защиту от подсчета подписей. - WalletConnect + Эта карта не является векселем на предъявителя. В настоящее время мы не можем сопоставить количество подписей на карте с информацией в блокчейне. Это нормально, но в редких случаях может означать, что предыдущий владелец скрывает автономную подпись, что является проблемой безопасности.\nНе принимайте эту карту в качестве физического платежа от кого-то, кому Вы не доверяете.\nВо всех остальных отношениях - это совершенно безопасно.\nTangem — единственный аппаратный кошелек, предлагающий защиту от подсчета подписей. Запрос на создание транзакции для %s\n%s\n\nСумма: %s\nКомиссия: %s\nВсего: %s\nБаланс: %s Запрос на открытие сессии для\n%s\n\nСЕТЬ: %s\n\nURL: %s Сессии WalletConnect @@ -242,15 +234,14 @@ Нет открытых сессий WalletConnect Открытая сессия Не удается отправить транзакцию. Недостаточно средств. - Просьба подписать сообщение\n - Сообщение для %s:\n%s + Запрос на подпись сообщения.\n\n%s Буфер обмена содержит код WalletConnect. Использовать скопированное значение или отсканировать QR-код Вставить из буфера обмена Сканировать новый код Эту карту нельзя использовать для установки сеанса WalletConnect. Операция не может быть завершена. \n\nВы уже установили сеанс WalletConnect с этими параметрами. Не удалось установить сеанс WalletConnect: ошибка времени выполнения. Пожалуйста, повторите попытку позже. - DApp %s, запрашивает\nподпись транзакции BNB с\n%s + Dapp %s, запрос на\nподпись транзакции с BNB.\n\n%s Сведения о транзакции:\nОт: %s\nКому: %s\nСумма: %s Торговый ордер на %s\nЦена: %s\nСумма к получению: %s\nСумма к оплате: %s Мои предложения @@ -264,4 +255,5 @@ Привет, команда поддержки, Информация ниже не является обязательной. Вы можете стереть её, если хотите. Нет + ≈ %s (вкл. комиссию: %s) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ab83f1c625..31d6ed2a36 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -13,16 +13,16 @@ You have not given access to your camera, please adjust your privacy settings - Scan card + Scan card Send Create wallet Tangem - Tokens + Tokens Verified Balance Balance is loading… - Blockchain is unreachable + Network is unreachable Account is not created Load %s+ %s to create account @@ -59,9 +59,9 @@ Normal Priority Include fee - %s %s will be sent - %s %s and %s %s will be sent - Balance: %s %s + %s will be sent + %s and %s will be sent + Balance: %s Transaction has been successfully signed and sent to the blockchain node. Wallet balance will be updated in a while Details @@ -69,8 +69,7 @@ Issuer Signed %s hashes - App currency - This action is irreversible. If, after deleting the wallet, someone sends funds to it, then you will not be able to withdraw them. + App Currency Long Tap This mechanism protects against proximity attacks on a card. It will enforce a delay between reception and execution of a command. Passcode @@ -81,64 +80,15 @@ This card has been already topped up and signed transactions in the past. Consider immediate withdrawal of all funds if you have received this card from an untrusted source. If it\'s your card, there is nothing to worry about. Warning This card is not designed to work with this app - The card you scanned is a development card. Don\'t accept it as a payment + The card you scanned is a development card. Don\'t accept it as a payment. Tap to sign - Tap to create wallet + To create wallet, connect your phone and the card exactly as it shown above To change the access code, connect your phone and the card exactly as it shown above To change the passcode, connect your phone and the card exactly as it shown above - Legal Disclaimer - \n - \n1. Tangem application (Software) - \n - \nThe Software is intended for usage only with Tangem hardware wallets (Cards) via NFC interface. The Software DOES NOT: - \n - \na) Generate, store, transmit, or have access to private (secret) cryptographic keys to blockchain wallets holding digital assets, including crypto-currency. - \n - \nb) Generate, store, transmit, or have access to secret keys, passwords, passphrases, recovery phrases that can be used to restore or to copy private (secret) keys to blockchain wallets holding digital assets, including crypto-currency. - \n - \nc) Provide exchange, trading, investment services on behalf of Tangem AG. - \n - \n2. Risks related to the use of Software - \n - \nTangem will not be responsible for any losses, damages or claims arising from events falling within the scope of the following five categories: - \n - \na) Mistakes made by the user of any cryptocurrency-related software or service, e.g., forgotten passwords, payments sent to wrong addresses, and accidental deletion of blockchain wallets on Cards. - \n - \nb) Problems of Software and/or any blockchain- or cryptocurrency- related software or service, e.g., corrupted files, incorrectly constructed transactions, unsafe cryptographic libraries, malware. - \n - \nc) Technical failures in the hardware of the user, including Cards, of any cryptocurrency-related software or service, e.g., data loss due to a faulty or damaged storage device. - \n - \nd) Security problems experienced by the user of any cryptocurrency-related software or service, e.g., unauthorized access to users\' wallets and/or accounts. - \n - \ne) Actions or inactions of third parties and/or events experienced by third parties, e.g., bankruptcy of service providers, information security attacks on service providers, and fraud conducted by third parties. - \n - \n3. Trading and Investment risks - \n - \nThere is considerable exposure to risk in any crypto-currency or other digital asset exchange transaction. Any transaction involving currencies involves risks including, but not limited to, the potential for changing economic conditions that may substantially affect the price or liquidity of a currency. Investments in crypto-currency exchange speculation may also be susceptible to sharp rises and falls as the relevant market values fluctuate. It is for this reason that when speculating in such markets it is advisable to use only risk capital. - \n - \n4. Electronic Trading Risks - \n - \nBefore you engage in transactions using an electronic system, you should carefully review the rules and regulations of the exchanges offering the system and/or listing the instruments you intend to trade. Online trading has inherent risk due to system response and access times that may vary due to market conditions, system performance, and other factors. You should understand these and additional risks before trading. - \n - \n5. Compliance with tax obligations - \n - \nThe users of the Software are solely responsible to determinate what, if any, taxes apply to their crypto-currency transactions. The owners of, or contributors to, the Software are NOT responsible for determining the taxes that apply to crypto-currency transactions. - \n - \n6. No warranties - \n - \nThe Software is provided on an \“as is\” basis without any warranties of any kind regarding the Software and/or any content, data, materials and/or services provided on the Software. - \n - \n7. Limitation of liability - \n - \nUnless otherwise required by law, in no event shall the owners of, or contributors to, the Software be liable for any damages of any kind, including, but not limited to, loss of use, loss of profits, or loss of data arising out of or in any way connected with the use of the Software. In no way are the owners of, or contributors to, the Software responsible for the actions, decisions, or other behavior taken or not taken by you in reliance upon the Software. - \n - \n8. Last amendment - \n - \nThis disclaimer was amended for the last time on October 1st, 2020. - Terms of service + Terms of Service No internet connection @@ -156,4 +106,5 @@ Tap to scan Tap the card + ≈ %s (inc. fee: %s) diff --git a/app/src/main/res/values/strings_untranslated.xml b/app/src/main/res/values/strings_untranslated.xml index d43c30aab9..369b860e27 100644 --- a/app/src/main/res/values/strings_untranslated.xml +++ b/app/src/main/res/values/strings_untranslated.xml @@ -3,7 +3,7 @@ Buy Sell - Trade + Exchange Default Legacy @@ -11,25 +11,24 @@ Generate wallet keys on both cards to start using your Twins One wallet. Two cards. - This one that you are holding in your hands and the other one with number #%s. + This one that you are holding in your hands and the other one with number %s.\n\nBoth cards can be used to extract funds from this wallet. Card terms of use Tangem Twin This action is irreversible. You will not have access to the old wallet. - Tap the #%s twin card + Scan the #%s twin card Preparing card Creating wallet Scan the card #%s - You\'ve tapped the same card. To create twin wallet you need to tap a second twin card. - + You\'ve scanned same card. To create twin wallet you need to scan card with number %d //Common Start Add Search - Send feedback + Send Feedback Can\'t send a transaction Reason: %s Are you having difficulty scanning your card? @@ -42,9 +41,6 @@ How do you like Tangem? //Manage tokens - Add Tokens - Custom tokens - Token icon Add Token Contract address @@ -55,7 +51,6 @@ Derivation path is invalid Note that tokens can be created by anyone. Be aware of adding scam tokens, they can cost nothing. This token/network has already been added to your list - Network Decimals Network Not selected @@ -68,7 +63,6 @@ //Details - %s tokens Please wait for %s transaction to complete to be able to send funds Authenticity check failed @@ -78,16 +72,12 @@ Important security information \u26A0 This card has signed transactions in the past Learn more - This card is not a bearer note. We can\'t currently match the signature count on the card with the information on the blockchain. This is normal but in rare cases can mean a previous holder is holding back an offline signature, which is a security concern. - \n\nDo not accept this card as physical payment from someone you don\'t trust. - \n\nIt\'s perfectly safe in all other respects. - \n\nTangem is the only hardware wallet to offer signature count protection. + This card is not a bearer note. We can\'t currently match the signature count on the card with the information on the blockchain. This is normal but in rare cases can mean a previous holder is holding back an offline signature, which is a security concern.\nDo not accept this card as physical payment from someone you don\'t trust.\nIt\'s perfectly safe in all other respects.\nTangem is the only hardware wallet to offer signature count protection. I understand There are only %s signatures available on this card. You must withdraw all of your funds. //Wallet Connect - WalletConnect Wallet Connect Sessions Ooops. No Sessions. No opened WalletConnect sessions @@ -99,8 +89,7 @@ Request to start a session for\n%s\n\nNETWORK: %s\n\nURL: %s - Requesting to sign a message\n - Message for %s:\n%s + Requesting to sign a message.\n\n%s Disconnect @@ -134,13 +123,13 @@ Top up your wallet To get started, simply top up the wallet with any amount - To get started, simply top up the wallet with more than %s %s. + To get started, simply top up the wallet with more than %s %s Buy crypto Show the wallet\'s address Success! - Your crypto card is activated and ready to be used - Continue + Your card is activated and ready to be used + Continue Balance Send only %s (%s) to this address. Using other tokens and networks may result in loss of funds. Send only %s (%s) from %s network to this address. Using other tokens and networks may result in loss of funds. @@ -159,10 +148,9 @@ Backup now Skip for later Finalize the backup process - + Add backup card + Add backup card Scan the card #%d Scan primary card - Add more cards No backup cards Prepare your card @@ -173,7 +161,7 @@ To start the backup process add up to two backup cards. Prepare the primary card You can add one more card or finalize the backup process - Max number of cards added. Finalize the backup process + Max number of cards added. Finalize the backup process. You\'ve added one backup card. When backup process is finished you can\'t add more backup cards. If you have one more card, add it in backup, otherwise you can buy it in shop. Do you like to continue backup process? @@ -182,7 +170,7 @@ Protect Personalize Restore - You have to setup a single access code to protect all yor wallets. + You have to setup a single access code to protect all your wallets You can set an individual access code on each card later. The access code can be restored with a linked card, don\'t keep all cards at one place. Choose any word, phrase, or number you want as your access code. @@ -200,7 +188,7 @@ Access code restore You can backup your keys up to two other blank Tangem Wallet cards. - All the backup cards can be used as full-functoinal with the identical keys. + All the backup cards can be used as full-functional with the identical keys. You will be able to set an access code to protect your wallets. Access code can be restored with one of backup cards. @@ -213,20 +201,14 @@ If you will discard the backup now, then you will have to reset the cards to factory settings to start over again Resume backup Discard - Primary card + Primary card Scan the primary card Continue to my wallet Sending %s Prepare the backup card with number %s Prepare the primary card with number %s - Reset to factory settings - - - Dapp %s, requesting to\n -sign BNB transaction -\n -%s + Dapp %s, requesting to\nsign BNB transaction.\n\n%s Transaction details:\n From: %s\n To: %s\n @@ -238,8 +220,6 @@ Amount to pay: %s Solana network charges a rent of %s every 2 days. Accounts that can\'t afford the rent are purged from the network. Deposit your account with more than %s to use it for free. - Type here to search - My suggestions Can\'t scan a card Can\'t send a transaction diff --git a/buildSrc/src/main/java/Versions.kt b/buildSrc/src/main/java/Versions.kt index fda7453ad1..1a730aa925 100644 --- a/buildSrc/src/main/java/Versions.kt +++ b/buildSrc/src/main/java/Versions.kt @@ -61,7 +61,7 @@ object Versions { const val tangemBlockchainSdk = "develop-140" // const val tangemBlockchainSdk = "0.0.1" - const val tangemCardSgk = "develop-165" + const val tangemCardSgk = "develop-169" // const val tangemCardSgk = "0.0.1" // endregion Tangem diff --git a/core/ui/src/main/res/values-de/strings_final.xml b/core/ui/src/main/res/values-de/strings_final.xml index 99b3e6b5b6..ca07d2b5c7 100644 --- a/core/ui/src/main/res/values-de/strings_final.xml +++ b/core/ui/src/main/res/values-de/strings_final.xml @@ -70,7 +70,7 @@ Get your card ready! Scan the card to change its settings. The changes will impact only the card you\'ve scanned and will not affect other cards tied to your wallet. Scan Card - App settings + App Settings Keep the wallet in the app Enable to link all the wallets to Tangem app. Biometric authentication will be required for unlocking the app. Transaction signing requires tapping your Tangem card. Save Access Code diff --git a/core/ui/src/main/res/values-fr/strings_final.xml b/core/ui/src/main/res/values-fr/strings_final.xml index 99b3e6b5b6..ca07d2b5c7 100644 --- a/core/ui/src/main/res/values-fr/strings_final.xml +++ b/core/ui/src/main/res/values-fr/strings_final.xml @@ -70,7 +70,7 @@ Get your card ready! Scan the card to change its settings. The changes will impact only the card you\'ve scanned and will not affect other cards tied to your wallet. Scan Card - App settings + App Settings Keep the wallet in the app Enable to link all the wallets to Tangem app. Biometric authentication will be required for unlocking the app. Transaction signing requires tapping your Tangem card. Save Access Code diff --git a/core/ui/src/main/res/values-it/strings_final.xml b/core/ui/src/main/res/values-it/strings_final.xml index 99b3e6b5b6..ca07d2b5c7 100644 --- a/core/ui/src/main/res/values-it/strings_final.xml +++ b/core/ui/src/main/res/values-it/strings_final.xml @@ -70,7 +70,7 @@ Get your card ready! Scan the card to change its settings. The changes will impact only the card you\'ve scanned and will not affect other cards tied to your wallet. Scan Card - App settings + App Settings Keep the wallet in the app Enable to link all the wallets to Tangem app. Biometric authentication will be required for unlocking the app. Transaction signing requires tapping your Tangem card. Save Access Code diff --git a/core/ui/src/main/res/values/strings_final.xml b/core/ui/src/main/res/values/strings_final.xml index 3460b046ce..6f46bdd1be 100644 --- a/core/ui/src/main/res/values/strings_final.xml +++ b/core/ui/src/main/res/values/strings_final.xml @@ -70,7 +70,7 @@ Get your card ready! Scan the card to change its settings. The changes will impact only the card you\'ve scanned and will not affect other cards tied to your wallet. Scan Card - App settings + App Settings Keep the wallet in the app Enable to link all the wallets to Tangem app. Biometric authentication will be required for unlocking the app. Transaction signing requires tapping your Tangem card. Save Access Code diff --git a/domain/src/main/java/com/tangem/domain/common/TwinsHelper.kt b/domain/src/main/java/com/tangem/domain/common/TwinsHelper.kt index e6f9c23475..23485d8340 100644 --- a/domain/src/main/java/com/tangem/domain/common/TwinsHelper.kt +++ b/domain/src/main/java/com/tangem/domain/common/TwinsHelper.kt @@ -15,18 +15,10 @@ class TwinsHelper { return CryptoUtils.verify(cardWalletPublicKey, publicKey, signedKey) } - fun getTwinCardNumber(cardId: String): TwinCardNumber? { - return when { - firstCardSeries.map { cardId.startsWith(it) }.contains(true) -> { - TwinCardNumber.First - } - secondCardSeries.map { cardId.startsWith(it) }.contains(true) -> { - TwinCardNumber.Second - } - else -> { - null - } - } + fun getTwinCardNumber(cardId: String): TwinCardNumber? = when { + firstCardSeries.any(cardId::startsWith) -> TwinCardNumber.First + secondCardSeries.any(cardId::startsWith) -> TwinCardNumber.Second + else -> null } fun getPairCardSeries(cardId: String): String? {