Updated on 2026-08-14
This commit is contained in:
commit
cd12350f9f
19 changed files with 91 additions and 57 deletions
|
|
@ -12,6 +12,7 @@ import com.google.android.material.snackbar.Snackbar
|
|||
import com.tangem.TangemSdk
|
||||
import com.tangem.operations.backup.BackupService
|
||||
import com.tangem.tangem_sdk_new.extensions.init
|
||||
import com.tangem.tangem_sdk_new.extensions.initWithBiometrics
|
||||
import com.tangem.tap.common.ActivityResultCallbackHolder
|
||||
import com.tangem.tap.common.DialogManager
|
||||
import com.tangem.tap.common.OnActivityResultCallback
|
||||
|
|
@ -77,7 +78,7 @@ class MainActivity : AppCompatActivity(), SnackbarHandler, ActivityResultCallbac
|
|||
systemActions()
|
||||
store.dispatch(NavigationAction.ActivityCreated(WeakReference(this)))
|
||||
|
||||
tangemSdk = TangemSdk.init(this, TangemSdkManager.config)
|
||||
tangemSdk = TangemSdk.initWithBiometrics(this, TangemSdkManager.config)
|
||||
tangemSdkManager = TangemSdkManager(tangemSdk, this)
|
||||
appStateHolder.tangemSdkManager = tangemSdkManager
|
||||
backupService = BackupService.init(tangemSdk, this)
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ private val walletStoresRepository by lazy { WalletStoresRepository.provideDefau
|
|||
private val walletManagersRepository by lazy {
|
||||
WalletManagersRepository.provideDefaultImplementation(
|
||||
walletManagerFactory = WalletManagerFactory(
|
||||
blockchainSdkConfig = store.state.globalState.configManager
|
||||
config = store.state.globalState.configManager
|
||||
?.config
|
||||
?.blockchainSdkConfig
|
||||
?: BlockchainSdkConfig(),
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ package com.tangem.tap.domain.configurable.config
|
|||
|
||||
import com.tangem.blockchain.common.BlockchainSdkConfig
|
||||
import com.tangem.blockchain.common.BlockchairCredentials
|
||||
import com.tangem.blockchain.common.GetBlockCredentials
|
||||
import com.tangem.blockchain.common.NowNodeCredentials
|
||||
import com.tangem.blockchain.common.QuickNodeCredentials
|
||||
import com.tangem.tap.common.shop.shopify.ShopifyShop
|
||||
import com.tangem.tap.common.zendesk.ZendeskConfig
|
||||
|
|
@ -91,14 +93,16 @@ class ConfigManager {
|
|||
authToken = values.blockchairAuthorizationToken,
|
||||
),
|
||||
blockcypherTokens = values.blockcypherTokens,
|
||||
quickNodeCredentials = QuickNodeCredentials(
|
||||
quickNodeSolanaCredentials = QuickNodeCredentials(
|
||||
apiKey = values.quiknodeApiKey,
|
||||
subdomain = values.quiknodeSubdomain,
|
||||
),
|
||||
bscQuickNodeCredentials = QuickNodeCredentials(
|
||||
quickNodeBscCredentials = QuickNodeCredentials(
|
||||
apiKey = values.bscQuiknodeApiKey,
|
||||
subdomain = values.bscQuiknodeSubdomain,
|
||||
),
|
||||
nowNodeCredentials = NowNodeCredentials(values.nowNodesApiKey),
|
||||
getBlockCredentials = GetBlockCredentials(values.getBlockApiKey),
|
||||
infuraProjectId = values.infuraProjectId,
|
||||
tronGridApiKey = values.tronGridApiKey,
|
||||
saltPayAuthToken = values.saltPay.credentials.token,
|
||||
|
|
@ -121,14 +125,16 @@ class ConfigManager {
|
|||
authToken = values.blockchairAuthorizationToken,
|
||||
),
|
||||
blockcypherTokens = values.blockcypherTokens,
|
||||
quickNodeCredentials = QuickNodeCredentials(
|
||||
quickNodeSolanaCredentials = QuickNodeCredentials(
|
||||
apiKey = values.quiknodeApiKey,
|
||||
subdomain = values.quiknodeSubdomain,
|
||||
),
|
||||
bscQuickNodeCredentials = QuickNodeCredentials(
|
||||
quickNodeBscCredentials = QuickNodeCredentials(
|
||||
apiKey = values.bscQuiknodeApiKey,
|
||||
subdomain = values.bscQuiknodeSubdomain,
|
||||
),
|
||||
nowNodeCredentials = NowNodeCredentials(values.nowNodesApiKey),
|
||||
getBlockCredentials = GetBlockCredentials(values.getBlockApiKey),
|
||||
infuraProjectId = values.infuraProjectId,
|
||||
saltPayAuthToken = values.saltPay.credentials.token,
|
||||
),
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ class ConfigValueModel(
|
|||
val quiknodeApiKey: String,
|
||||
val bscQuiknodeSubdomain: String,
|
||||
val bscQuiknodeApiKey: String,
|
||||
val nowNodesApiKey: String,
|
||||
val getBlockApiKey: String,
|
||||
val blockcypherTokens: Set<String>?,
|
||||
val infuraProjectId: String?,
|
||||
val appsFlyer: AppsFlyer,
|
||||
|
|
|
|||
|
|
@ -63,6 +63,12 @@ class UserWalletIdBuilder private constructor(
|
|||
)
|
||||
}
|
||||
|
||||
fun walletPublicKey(publicKey: ByteArray): UserWalletId {
|
||||
return UserWalletIdBuilder(
|
||||
publicKey = publicKey,
|
||||
).build()!!
|
||||
}
|
||||
|
||||
private fun findPublicKey(wallets: List<CardDTO.Wallet>): ByteArray? {
|
||||
return wallets.firstOrNull()
|
||||
?.publicKey
|
||||
|
|
|
|||
|
|
@ -196,9 +196,9 @@ object ScanCardProcessor {
|
|||
val isOnboardingCase = result.data
|
||||
if (isOnboardingCase) {
|
||||
onWalletNotCreated()
|
||||
store.dispatchOnMain(GlobalAction.Onboarding.Start(scanResponse, canSkipBackup = false))
|
||||
store.dispatchOnMain(OnboardingSaltPayAction.SetDependencies(manager, config))
|
||||
store.dispatchOnMain(OnboardingSaltPayAction.Update)
|
||||
store.dispatch(GlobalAction.Onboarding.Start(scanResponse, canSkipBackup = false))
|
||||
store.dispatch(OnboardingSaltPayAction.SetDependencies(manager, config))
|
||||
store.dispatch(OnboardingSaltPayAction.Update)
|
||||
navigateTo(AppScreen.OnboardingWallet) { onProgressStateChange(it) }
|
||||
} else {
|
||||
delay(DELAY_SDK_DIALOG_CLOSE)
|
||||
|
|
|
|||
|
|
@ -149,6 +149,11 @@ class GnosisRegistrator(
|
|||
}
|
||||
|
||||
suspend fun transferFrom(amountToClaim: BigDecimal, signer: TransactionSigner): Result<Unit> {
|
||||
if (walletManager.txCount == -1L) {
|
||||
walletManager.safeUpdate().successOr {
|
||||
return Result.Failure(BlockchainSdkError.WrappedThrowable(it.error))
|
||||
}
|
||||
}
|
||||
val amount = Amount(token, amountToClaim)
|
||||
val feeAmount = walletManager.getFeeToTransferFrom(amount, addressTreasureSafe)
|
||||
.extractFeeAmount().successOr { return it }
|
||||
|
|
|
|||
|
|
@ -7,11 +7,10 @@ import com.tangem.blockchain.common.AmountType
|
|||
import com.tangem.blockchain.common.BlockchainSdkError
|
||||
import com.tangem.blockchain.common.TransactionSigner
|
||||
import com.tangem.blockchain.extensions.successOr
|
||||
import com.tangem.common.core.TangemSdkError
|
||||
import com.tangem.common.extensions.guard
|
||||
import com.tangem.common.extensions.isZero
|
||||
import com.tangem.common.services.Result
|
||||
import com.tangem.domain.common.extensions.successOr
|
||||
import com.tangem.domain.common.util.UserWalletId
|
||||
import com.tangem.datasource.api.paymentology.AttestationResponse
|
||||
import com.tangem.datasource.api.paymentology.PaymentologyApiService
|
||||
import com.tangem.datasource.api.paymentology.RegisterKYCRequest
|
||||
|
|
@ -19,9 +18,11 @@ import com.tangem.datasource.api.paymentology.RegisterWalletRequest
|
|||
import com.tangem.datasource.api.paymentology.RegisterWalletResponse
|
||||
import com.tangem.datasource.api.paymentology.RegistrationResponse
|
||||
import com.tangem.datasource.api.paymentology.tryExtractError
|
||||
import com.tangem.domain.common.extensions.successOr
|
||||
import com.tangem.operations.attestation.AttestWalletKeyResponse
|
||||
import com.tangem.tap.common.extensions.safeUpdate
|
||||
import com.tangem.tap.domain.getFirstToken
|
||||
import com.tangem.tap.domain.model.builders.UserWalletIdBuilder
|
||||
import com.tangem.tap.features.onboarding.products.wallet.saltPay.message.SaltPayActivationError
|
||||
import java.math.BigDecimal
|
||||
|
||||
|
|
@ -31,11 +32,12 @@ import java.math.BigDecimal
|
|||
class SaltPayActivationManager(
|
||||
val cardId: String,
|
||||
val cardPublicKey: ByteArray,
|
||||
val walletPublicKey: ByteArray,
|
||||
private val kycProvider: KYCProvider,
|
||||
private val paymentologyService: PaymentologyApiService,
|
||||
private val gnosisRegistrator: GnosisRegistrator,
|
||||
) {
|
||||
|
||||
val walletPublicKey = gnosisRegistrator.walletManager.wallet.publicKey.seedKey
|
||||
val kycUrlProvider = KYCUrlProvider(walletPublicKey, kycProvider)
|
||||
|
||||
private val approvalValue: BigDecimal = BigDecimal(2).pow(256).minus(BigDecimal.ONE)
|
||||
|
|
@ -124,7 +126,13 @@ class SaltPayActivationManager(
|
|||
|
||||
suspend fun claim(amountToClaim: BigDecimal, signer: TransactionSigner): Result<Unit> {
|
||||
gnosisRegistrator.transferFrom(amountToClaim, signer).successOr {
|
||||
return Result.Failure(SaltPayActivationError.ClaimTransactionFailed)
|
||||
val userCancelledError = (it.error as? BlockchainSdkError.WrappedTangemError)
|
||||
?.tangemError as? TangemSdkError.UserCancelled
|
||||
|
||||
return when (userCancelledError) {
|
||||
null -> Result.Failure(SaltPayActivationError.ClaimTransactionFailed)
|
||||
else -> Result.Failure(userCancelledError)
|
||||
}
|
||||
}
|
||||
return Result.Success(Unit)
|
||||
}
|
||||
|
|
@ -167,7 +175,6 @@ class SaltPayActivationManager(
|
|||
gnosisRegistrator = GnosisRegistrator.stub(),
|
||||
cardId = "",
|
||||
cardPublicKey = byteArrayOf(),
|
||||
walletPublicKey = byteArrayOf(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -177,7 +184,7 @@ class KYCUrlProvider(
|
|||
kycProvider: KYCProvider,
|
||||
) {
|
||||
|
||||
val kycRefId = UserWalletId(walletPublicKey).stringValue
|
||||
val kycRefId = UserWalletIdBuilder.walletPublicKey(walletPublicKey).stringValue
|
||||
|
||||
val requestUrl: String = makeWebRequestUrl(kycProvider)
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import com.tangem.Message
|
|||
import com.tangem.blockchain.common.Amount
|
||||
import com.tangem.blockchain.extensions.successOr
|
||||
import com.tangem.common.Filter
|
||||
import com.tangem.common.core.TangemSdkError
|
||||
import com.tangem.common.extensions.guard
|
||||
import com.tangem.common.services.Result
|
||||
import com.tangem.core.analytics.Analytics
|
||||
|
|
@ -200,7 +201,11 @@ private fun handleOnboardingSaltPayAction(anyAction: Action, appState: () -> App
|
|||
}
|
||||
state.saltPayManager.claim(amountToClaim.value!!, signer).successOr {
|
||||
dispatchOnMain(OnboardingSaltPayAction.SetStep(SaltPayActivationStep.Claim))
|
||||
onException(it.error)
|
||||
if (it.error is TangemSdkError.UserCancelled) {
|
||||
handleInProgress = false
|
||||
} else {
|
||||
onException(it.error)
|
||||
}
|
||||
return@launch
|
||||
}
|
||||
|
||||
|
|
@ -279,6 +284,7 @@ suspend fun SaltPayActivationManager.update(
|
|||
|
||||
val registrationResponse = checkRegistration().successOr { return it }
|
||||
val amountToClaim = getAmountToClaimIfNeeded(this, currentAmountToClaim)
|
||||
dispatchOnMain(OnboardingSaltPayAction.SetAmountToClaim(amountToClaim))
|
||||
|
||||
val newStep = try {
|
||||
determineStep(currentStep, amountToClaim, registrationResponse)
|
||||
|
|
|
|||
|
|
@ -69,14 +69,10 @@ data class OnboardingSaltPayState(
|
|||
if (!scanResponse.isSaltPay()) {
|
||||
throw IllegalArgumentException("Can't initialize the OnboardingSaltPayMiddleware if card is not SalPay")
|
||||
}
|
||||
val saltPaySingleWallet = scanResponse.card.wallets.firstOrNull().guard {
|
||||
throw NullPointerException("SaltPay card must have one wallet at least")
|
||||
}
|
||||
|
||||
return SaltPayActivationManager(
|
||||
cardId = scanResponse.card.cardId,
|
||||
cardPublicKey = scanResponse.card.cardPublicKey,
|
||||
walletPublicKey = saltPaySingleWallet.publicKey,
|
||||
kycProvider = kycProvider,
|
||||
paymentologyService = paymentologyService,
|
||||
gnosisRegistrator = gnosisRegistrator,
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ internal class OnboardingSaltPayView(
|
|||
} else {
|
||||
walletFragment.loadImageIntoImageView(state.onboardingSaltPayState.saltPayCardArtworkUrl, imvFrontCard)
|
||||
}
|
||||
imvFirstBackupCard.load(R.drawable.card_placeholder_wallet)
|
||||
imvFirstBackupCard.load(R.drawable.img_salt_pay_visa)
|
||||
|
||||
// if (state.onboardingSaltPayState?.saltPayCardArtworkUrl == null) {
|
||||
// //if saltPay url not loaded -> load from resource
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ class OnboardingWalletFragment : BaseFragment(R.layout.fragment_onboarding_walle
|
|||
cardsWidget.toFolded(false)
|
||||
|
||||
if (viewBackupCount > backupCardsCounts) {
|
||||
flCardsContainer.removeViewAt(viewBackupCount - 1)
|
||||
flCardsContainer.removeViews(0, viewBackupCount - backupCardsCounts)
|
||||
} else {
|
||||
flCardsContainer.inflate(R.layout.view_onboarding_card, true)
|
||||
}
|
||||
|
|
@ -108,7 +108,12 @@ class OnboardingWalletFragment : BaseFragment(R.layout.fragment_onboarding_walle
|
|||
}
|
||||
|
||||
private fun createLeapfrogWidget(container: FrameLayout, deviceScaleFactor: Float): LeapfrogWidget {
|
||||
val leapfrogCalculator = PropertyCalculator(yTranslationFactor = 25f * deviceScaleFactor)
|
||||
val leapfrogCalculator = PropertyCalculator(
|
||||
yTranslationFactor = when (container.childCount) {
|
||||
3 -> 25f
|
||||
else -> 35f
|
||||
} * deviceScaleFactor,
|
||||
)
|
||||
return LeapfrogWidget(container, leapfrogCalculator)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -71,8 +71,8 @@ object Library {
|
|||
|
||||
object Tangem {
|
||||
const val blockchain = "com.tangem:blockchain:" + Versions.tangemBlockchainSdk
|
||||
const val cardAndroid = "com.tangem.tangem-sdk-kotlin:android:" + Versions.tangemCardSgk
|
||||
const val cardCore = "com.tangem.tangem-sdk-kotlin:core:" + Versions.tangemCardSgk
|
||||
const val cardAndroid = "com.tangem.tangem-sdk-kotlin:android:" + Versions.tangemCardSdk
|
||||
const val cardCore = "com.tangem.tangem-sdk-kotlin:core:" + Versions.tangemCardSdk
|
||||
}
|
||||
|
||||
object Test {
|
||||
|
|
|
|||
|
|
@ -59,10 +59,10 @@ object Versions {
|
|||
// endregion Other libraries
|
||||
|
||||
// region Tangem
|
||||
const val tangemBlockchainSdk = "develop-152"
|
||||
const val tangemBlockchainSdk = "develop-155"
|
||||
// const val tangemBlockchainSdk = "0.0.1"
|
||||
|
||||
const val tangemCardSgk = "develop-179"
|
||||
const val tangemCardSdk = "develop-186"
|
||||
// endregion Tangem
|
||||
|
||||
// region Testing
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@
|
|||
<string name="onboarding_subtitle_pin">Set PIN code for your SaltPay card</string>
|
||||
<string name="onboarding_supplement_button_kyc_waiting">Chat with support</string>
|
||||
<string name="registration_task_alert_message">Please hold the card until the operation complete</string>
|
||||
<string name="onboarding_saltpay_subtitle_no_backup_cards">To start the backup process you have to add Tangem card as your backup</string>
|
||||
<string name="onboarding_saltpay_subtitle_no_backup_cards">To start the backup process you have to add the Tangem card as your backup</string>
|
||||
<string name="onboarding_saltpay_title_no_backup_card">No backup card</string>
|
||||
<string name="onboarding_saltpay_title_one_backup_card">Backup card ready</string>
|
||||
<string name="onboarding_saltpay_subtitle_one_backup_card">Finalize the backup process by creating an access code</string>
|
||||
|
|
@ -351,7 +351,7 @@
|
|||
<string name="onboarding_done_body">Your card is activated and ready to be used</string>
|
||||
<string name="onboarding_balance_title">Balance</string>
|
||||
<string name="address_qr_code_message_format">Send only %s (%s) from %s network to this address. Using other tokens and networks may result in loss of funds.</string>
|
||||
<string name="onboarding_twins_interrupt_warning">If the process of creating the wallet gets interrupted in any way, you\'ll have to start over.</string>
|
||||
<string name="onboarding_twins_interrupt_warning">If the process of creating the wallet gets interrupted in any way, you\'ll have to start over</string>
|
||||
<string name="onboarding_twin_exit_warning">The twinning process is partly complete. You can\'t exit it now.</string>
|
||||
<string name="warning_button_ok">OK, ich hab\'s!</string>
|
||||
<string name="onboarding_getting_started">Getting started</string>
|
||||
|
|
@ -376,10 +376,10 @@
|
|||
<string name="onboarding_access_code_feature_1_title">Protect</string>
|
||||
<string name="onboarding_access_code_feature_2_title">Personalize</string>
|
||||
<string name="onboarding_access_code_feature_3_title">Restore</string>
|
||||
<string name="onboarding_access_code_feature_1_description">You have to set up a single access code to protect all your wallets.</string>
|
||||
<string name="onboarding_access_code_feature_2_description">You can set an individual access code on each card later.</string>
|
||||
<string name="onboarding_access_code_feature_3_description">The access code can be restored with a linked card, don\'t keep all cards in one place.</string>
|
||||
<string name="onboarding_access_code_hint">Choose any word, phrase, or number you want as your access code.</string>
|
||||
<string name="onboarding_access_code_feature_1_description">You have to set up a single access code to protect all your wallets</string>
|
||||
<string name="onboarding_access_code_feature_2_description">You can set up an individual access code on each card later</string>
|
||||
<string name="onboarding_access_code_feature_3_description">The access code can be restored with a linked card, don\'t keep all cards in one place</string>
|
||||
<string name="onboarding_access_code_hint">Choose any word, phrase, or number you want as your access code</string>
|
||||
<string name="onboarding_access_code_too_short">Access code must be at least 4 characters long</string>
|
||||
<string name="onboarding_access_codes_doesnt_match">Entered access code didn\'t match the initial access code</string>
|
||||
<string name="common_create">Create</string>
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@
|
|||
<string name="onboarding_subtitle_pin">Set PIN code for your SaltPay card</string>
|
||||
<string name="onboarding_supplement_button_kyc_waiting">Chat with support</string>
|
||||
<string name="registration_task_alert_message">Please hold the card until the operation complete</string>
|
||||
<string name="onboarding_saltpay_subtitle_no_backup_cards">To start the backup process you have to add Tangem card as your backup</string>
|
||||
<string name="onboarding_saltpay_subtitle_no_backup_cards">To start the backup process you have to add the Tangem card as your backup</string>
|
||||
<string name="onboarding_saltpay_title_no_backup_card">No backup card</string>
|
||||
<string name="onboarding_saltpay_title_one_backup_card">Backup card ready</string>
|
||||
<string name="onboarding_saltpay_subtitle_one_backup_card">Finalize the backup process by creating an access code</string>
|
||||
|
|
@ -351,7 +351,7 @@
|
|||
<string name="onboarding_done_body">Your card is activated and ready to be used</string>
|
||||
<string name="onboarding_balance_title">Balance</string>
|
||||
<string name="address_qr_code_message_format">Send only %s (%s) from %s network to this address. Using other tokens and networks may result in loss of funds.</string>
|
||||
<string name="onboarding_twins_interrupt_warning">If the process of creating the wallet gets interrupted in any way, you\'ll have to start over.</string>
|
||||
<string name="onboarding_twins_interrupt_warning">If the process of creating the wallet gets interrupted in any way, you\'ll have to start over</string>
|
||||
<string name="onboarding_twin_exit_warning">The twinning process is partly complete. You can\'t exit it now.</string>
|
||||
<string name="warning_button_ok">Ok, je l\'ai!</string>
|
||||
<string name="onboarding_getting_started">Getting started</string>
|
||||
|
|
@ -376,10 +376,10 @@
|
|||
<string name="onboarding_access_code_feature_1_title">Protect</string>
|
||||
<string name="onboarding_access_code_feature_2_title">Personalize</string>
|
||||
<string name="onboarding_access_code_feature_3_title">Restore</string>
|
||||
<string name="onboarding_access_code_feature_1_description">You have to set up a single access code to protect all your wallets.</string>
|
||||
<string name="onboarding_access_code_feature_2_description">You can set an individual access code on each card later.</string>
|
||||
<string name="onboarding_access_code_feature_3_description">The access code can be restored with a linked card, don\'t keep all cards in one place.</string>
|
||||
<string name="onboarding_access_code_hint">Choose any word, phrase, or number you want as your access code.</string>
|
||||
<string name="onboarding_access_code_feature_1_description">You have to set up a single access code to protect all your wallets</string>
|
||||
<string name="onboarding_access_code_feature_2_description">You can set up an individual access code on each card later</string>
|
||||
<string name="onboarding_access_code_feature_3_description">The access code can be restored with a linked card, don\'t keep all cards in one place</string>
|
||||
<string name="onboarding_access_code_hint">Choose any word, phrase, or number you want as your access code</string>
|
||||
<string name="onboarding_access_code_too_short">Access code must be at least 4 characters long</string>
|
||||
<string name="onboarding_access_codes_doesnt_match">Entered access code didn\'t match the initial access code</string>
|
||||
<string name="common_create">Create</string>
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@
|
|||
<string name="onboarding_subtitle_pin">Set PIN code for your SaltPay card</string>
|
||||
<string name="onboarding_supplement_button_kyc_waiting">Chat with support</string>
|
||||
<string name="registration_task_alert_message">Please hold the card until the operation complete</string>
|
||||
<string name="onboarding_saltpay_subtitle_no_backup_cards">To start the backup process you have to add Tangem card as your backup</string>
|
||||
<string name="onboarding_saltpay_subtitle_no_backup_cards">To start the backup process you have to add the Tangem card as your backup</string>
|
||||
<string name="onboarding_saltpay_title_no_backup_card">No backup card</string>
|
||||
<string name="onboarding_saltpay_title_one_backup_card">Backup card ready</string>
|
||||
<string name="onboarding_saltpay_subtitle_one_backup_card">Finalize the backup process by creating an access code</string>
|
||||
|
|
@ -351,7 +351,7 @@
|
|||
<string name="onboarding_done_body">Your card is activated and ready to be used</string>
|
||||
<string name="onboarding_balance_title">Balance</string>
|
||||
<string name="address_qr_code_message_format">Send only %s (%s) from %s network to this address. Using other tokens and networks may result in loss of funds.</string>
|
||||
<string name="onboarding_twins_interrupt_warning">If the process of creating the wallet gets interrupted in any way, you\'ll have to start over.</string>
|
||||
<string name="onboarding_twins_interrupt_warning">If the process of creating the wallet gets interrupted in any way, you\'ll have to start over</string>
|
||||
<string name="onboarding_twin_exit_warning">The twinning process is partly complete. You can\'t exit it now.</string>
|
||||
<string name="warning_button_ok">Ok, ho capito!</string>
|
||||
<string name="onboarding_getting_started">Getting started</string>
|
||||
|
|
@ -376,10 +376,10 @@
|
|||
<string name="onboarding_access_code_feature_1_title">Protect</string>
|
||||
<string name="onboarding_access_code_feature_2_title">Personalize</string>
|
||||
<string name="onboarding_access_code_feature_3_title">Restore</string>
|
||||
<string name="onboarding_access_code_feature_1_description">You have to set up a single access code to protect all your wallets.</string>
|
||||
<string name="onboarding_access_code_feature_2_description">You can set an individual access code on each card later.</string>
|
||||
<string name="onboarding_access_code_feature_3_description">The access code can be restored with a linked card, don\'t keep all cards in one place.</string>
|
||||
<string name="onboarding_access_code_hint">Choose any word, phrase, or number you want as your access code.</string>
|
||||
<string name="onboarding_access_code_feature_1_description">You have to set up a single access code to protect all your wallets</string>
|
||||
<string name="onboarding_access_code_feature_2_description">You can set up an individual access code on each card later</string>
|
||||
<string name="onboarding_access_code_feature_3_description">The access code can be restored with a linked card, don\'t keep all cards in one place</string>
|
||||
<string name="onboarding_access_code_hint">Choose any word, phrase, or number you want as your access code</string>
|
||||
<string name="onboarding_access_code_too_short">Access code must be at least 4 characters long</string>
|
||||
<string name="onboarding_access_codes_doesnt_match">Entered access code didn\'t match the initial access code</string>
|
||||
<string name="common_create">Create</string>
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@
|
|||
<string name="onboarding_saltpay_title_backup_card">Приложите Tangem карту</string>
|
||||
<string name="onboarding_chat_button_title">Чат</string>
|
||||
<string name="onboarding_title_claim">Запросить %s</string>
|
||||
<string name="onboarding_subtitle_claim">Для начала работы просто запросите начисление wxDai на свой кошелек</string>
|
||||
<string name="onboarding_subtitle_claim">Для начала работы просто запросите начисление wxDAI на свой кошелек</string>
|
||||
<string name="onboarding_button_claim">Запросить</string>
|
||||
<string name="onboarding_subtitle_success_claim">Поздравляем! Ваша платежная крипто карта теперь активирована!</string>
|
||||
<string name="onboarding_title_claim_progress">Запрашивается</string>
|
||||
|
|
@ -351,7 +351,7 @@
|
|||
<string name="onboarding_done_body">Ваша карта активирована и готова к использованию</string>
|
||||
<string name="onboarding_balance_title">Баланс</string>
|
||||
<string name="address_qr_code_message_format">Отправляйте только %s (%s) в сети %s на этот адрес. Использование другой сети может привести к утрате средств.</string>
|
||||
<string name="onboarding_twins_interrupt_warning">Если процесc создания кошелька каким-либо образом прервется, вам придется начинать сначала.</string>
|
||||
<string name="onboarding_twins_interrupt_warning">Если процесc создания кошелька каким-либо образом прервется, вам придется начинать сначала</string>
|
||||
<string name="onboarding_twin_exit_warning">Процесс связывания карт частично завершен. Вы не можете выйти из него сейчас.</string>
|
||||
<string name="warning_button_ok">Понятно!</string>
|
||||
<string name="onboarding_getting_started">Подготовка</string>
|
||||
|
|
@ -376,10 +376,10 @@
|
|||
<string name="onboarding_access_code_feature_1_title">Защита</string>
|
||||
<string name="onboarding_access_code_feature_2_title">Персонализация</string>
|
||||
<string name="onboarding_access_code_feature_3_title">Восстановление</string>
|
||||
<string name="onboarding_access_code_feature_1_description">Вам необходимо установить единый код доступа для защиты всех ваших карт.</string>
|
||||
<string name="onboarding_access_code_feature_2_description">Позже вы сможете установить индивидуальный код доступа для каждой карты.</string>
|
||||
<string name="onboarding_access_code_feature_3_description">Код доступа можно восстановить с помощью привязанной карты. Не храните все карты в одном месте.</string>
|
||||
<string name="onboarding_access_code_hint">Выберите любое слово, фразу или число в качестве кода доступа.</string>
|
||||
<string name="onboarding_access_code_feature_1_description">Вам необходимо установить единый код доступа для защиты всех ваших карт</string>
|
||||
<string name="onboarding_access_code_feature_2_description">Позже вы сможете установить индивидуальный код доступа для каждой карты</string>
|
||||
<string name="onboarding_access_code_feature_3_description">Код доступа можно восстановить с помощью привязанной карты. Не храните все карты в одном месте</string>
|
||||
<string name="onboarding_access_code_hint">Выберите любое слово, фразу или число в качестве кода доступа</string>
|
||||
<string name="onboarding_access_code_too_short">Код доступа должен состоять не менее чем из 4 символов.</string>
|
||||
<string name="onboarding_access_codes_doesnt_match">Введенные коды доступа не совпадают</string>
|
||||
<string name="common_create">Создать</string>
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@
|
|||
<string name="onboarding_subtitle_pin">Set PIN code for your SaltPay card</string>
|
||||
<string name="onboarding_supplement_button_kyc_waiting">Chat with support</string>
|
||||
<string name="registration_task_alert_message">Please hold the card until the operation complete</string>
|
||||
<string name="onboarding_saltpay_subtitle_no_backup_cards">To start the backup process you have to add Tangem card as your backup</string>
|
||||
<string name="onboarding_saltpay_subtitle_no_backup_cards">To start the backup process you have to add the Tangem card as your backup</string>
|
||||
<string name="onboarding_saltpay_title_no_backup_card">No backup card</string>
|
||||
<string name="onboarding_saltpay_title_one_backup_card">Backup card ready</string>
|
||||
<string name="onboarding_saltpay_subtitle_one_backup_card">Finalize the backup process by creating an access code</string>
|
||||
|
|
@ -351,7 +351,7 @@
|
|||
<string name="onboarding_done_body">Your card is activated and ready to be used</string>
|
||||
<string name="onboarding_balance_title">Balance</string>
|
||||
<string name="address_qr_code_message_format">Send only %s (%s) from %s network to this address. Using other tokens and networks may result in loss of funds.</string>
|
||||
<string name="onboarding_twins_interrupt_warning">If the process of creating the wallet gets interrupted in any way, you\'ll have to start over.</string>
|
||||
<string name="onboarding_twins_interrupt_warning">If the process of creating the wallet gets interrupted in any way, you\'ll have to start over</string>
|
||||
<string name="onboarding_twin_exit_warning">The twinning process is partly complete. You can\'t exit it now.</string>
|
||||
<string name="warning_button_ok">Ok, Got it!</string>
|
||||
<string name="onboarding_getting_started">Getting started</string>
|
||||
|
|
@ -376,10 +376,10 @@
|
|||
<string name="onboarding_access_code_feature_1_title">Protect</string>
|
||||
<string name="onboarding_access_code_feature_2_title">Personalize</string>
|
||||
<string name="onboarding_access_code_feature_3_title">Restore</string>
|
||||
<string name="onboarding_access_code_feature_1_description">You have to set up a single access code to protect all your wallets.</string>
|
||||
<string name="onboarding_access_code_feature_2_description">You can set an individual access code on each card later.</string>
|
||||
<string name="onboarding_access_code_feature_3_description">The access code can be restored with a linked card, don\'t keep all cards in one place.</string>
|
||||
<string name="onboarding_access_code_hint">Choose any word, phrase, or number you want as your access code.</string>
|
||||
<string name="onboarding_access_code_feature_1_description">You have to set up a single access code to protect all your wallets</string>
|
||||
<string name="onboarding_access_code_feature_2_description">You can set up an individual access code on each card later</string>
|
||||
<string name="onboarding_access_code_feature_3_description">The access code can be restored with a linked card, don\'t keep all cards in one place</string>
|
||||
<string name="onboarding_access_code_hint">Choose any word, phrase, or number you want as your access code</string>
|
||||
<string name="onboarding_access_code_too_short">Access code must be at least 4 characters long</string>
|
||||
<string name="onboarding_access_codes_doesnt_match">Entered access code didn\'t match the initial access code</string>
|
||||
<string name="common_create">Create</string>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue