diff --git a/app/build.gradle b/app/build.gradle index 5e3c0acf1d..e35b177dba 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -72,8 +72,8 @@ dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.1' implementation 'com.tangem:blockchain:1.123.0' - implementation 'com.tangem:core:1.89.0' - implementation 'com.tangem:sdk:1.89.0' + implementation 'com.tangem:core:1.90.0' + implementation 'com.tangem:sdk:1.90.0' // WebView implementation "androidx.browser:browser:1.2.0" 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 c3fde9061d..5587faa1ab 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 @@ -2,6 +2,7 @@ package com.tangem.tap.domain.twins import com.tangem.CardSession import com.tangem.CardSessionRunnable +import com.tangem.Message import com.tangem.commands.CreateWalletResponse import com.tangem.commands.PurgeWalletCommand import com.tangem.commands.common.card.CardStatus @@ -9,11 +10,16 @@ import com.tangem.common.CompletionResult import com.tangem.common.extensions.hexToBytes import com.tangem.tasks.CreateWalletTask -class CreateSecondTwinWalletTask(private val firstPublicKey: String) : CardSessionRunnable { +class CreateSecondTwinWalletTask( + private val firstPublicKey: String, + private val preparingMessage: Message, + private val creatingWalletMessage: Message +) : CardSessionRunnable { override val requiresPin2 = true override fun run(session: CardSession, callback: (result: CompletionResult) -> Unit) { if (session.environment.card?.walletPublicKey != null) { + session.setInitialMessage(preparingMessage) PurgeWalletCommand().run(session) { response -> when (response) { is CompletionResult.Success -> { @@ -30,6 +36,7 @@ class CreateSecondTwinWalletTask(private val firstPublicKey: String) : CardSessi } private fun finishTask(session: CardSession, callback: (result: CompletionResult) -> Unit) { + session.setInitialMessage(creatingWalletMessage) CreateWalletTask().run(session) { result -> when (result) { is CompletionResult.Success -> { 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 b5e221eb08..43d313f8a6 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 @@ -34,9 +34,14 @@ class TwinCardsManager(private val scanNoteResponse: ScanNoteResponse) { } - suspend fun createSecondWallet(message: Message): SimpleResult { + suspend fun createSecondWallet( + initialMessage: Message, + preparingMessage: Message, + creatingWalletMessage: Message + ): SimpleResult { val response = tangemSdkManager.runTaskAsync( - CreateSecondTwinWalletTask(currentCardPublicKey!!), secondCardId, message + CreateSecondTwinWalletTask(currentCardPublicKey!!, preparingMessage, creatingWalletMessage), + secondCardId, initialMessage ) when (response) { is CompletionResult.Success -> { diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt index 1e90daa2e1..2ec73c0f00 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt @@ -65,7 +65,11 @@ sealed class DetailsAction : Action { object Failure : CreateTwinWalletAction() } - data class LaunchSecondStep(val message: Message) : CreateTwinWalletAction() { + data class LaunchSecondStep( + val initialMessage: Message, + val preparingMessage: Message, + val creatingWalletMessage: Message, + ) : CreateTwinWalletAction() { object Success : CreateTwinWalletAction() object Failure : CreateTwinWalletAction() } diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/twins/CreateTwinWalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/details/redux/twins/CreateTwinWalletMiddleware.kt index d522a5b285..38cfac39bc 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/twins/CreateTwinWalletMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/twins/CreateTwinWalletMiddleware.kt @@ -71,7 +71,8 @@ class CreateTwinWalletMiddleware { } is DetailsAction.CreateTwinWalletAction.LaunchSecondStep -> scope.launch { - val result = twinsManager?.createSecondWallet(action.message) + val result = twinsManager?.createSecondWallet(action.initialMessage, + action.preparingMessage, action.creatingWalletMessage) withContext(Dispatchers.Main) { when (result) { SimpleResult.Success -> diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/twins/CreateTwinWalletFragment.kt b/app/src/main/java/com/tangem/tap/features/details/ui/twins/CreateTwinWalletFragment.kt index 7dc481b077..0cb261610b 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/twins/CreateTwinWalletFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/twins/CreateTwinWalletFragment.kt @@ -115,9 +115,9 @@ class CreateTwinWalletFragment : Fragment(R.layout.fragment_details_twin_cards), v_step_3.setBackgroundColor(defaultColor) btn_tap.setOnClickListener { store.dispatch(DetailsAction.CreateTwinWalletAction.LaunchSecondStep( - Message(getString( - R.string.details_twins_recreate_title_format, twinCardNumberString) - ) + Message(getString(R.string.details_twins_recreate_title_format, twinCardNumberString)), + Message(getString(R.string.details_twins_recreate_title_preparing)), + Message(getString(R.string.details_twins_recreate_title_creating_wallet)), )) } btn_tap.text = getString(R.string.details_twins_recreate_button_format, "2") diff --git a/app/src/main/res/values/strings_untranslated.xml b/app/src/main/res/values/strings_untranslated.xml index 9378124536..2f0501ac9f 100644 --- a/app/src/main/res/values/strings_untranslated.xml +++ b/app/src/main/res/values/strings_untranslated.xml @@ -22,6 +22,8 @@ this wallet. Re-create wallet Step %s Tap the #%s twin card + Preparing card + Creating wallet The wallet creation procedure consists of three steps. You must complete it to the end, otherwise you will have to start from the beginning. Tap the card #%s You have already started the process of recreating twin wallet. If you interrupt it, you won\'t be able to use your twin cards until you start it again and complete recreating the wallet.