From 64a7baa2c0190a61ed20d44c3a3394a8d044ea66 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 10 Apr 2020 12:36:15 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../com/tangem/tangemtest/Old_MainActivity.kt | 107 +++++++----------- .../tangem/tangemtest/TestUserDataActivity.kt | 93 +++++---------- .../tangemtest/ucase/domain/actions/Action.kt | 12 +- .../domain/actions/DepersonalizeAction.kt | 2 +- .../ucase/domain/actions/PersonalizeAction.kt | 2 +- .../ucase/domain/actions/ScanAction.kt | 2 +- .../ucase/domain/actions/SignAction.kt | 2 +- .../domain/paramsManager/ItemsManager.kt | 10 +- .../managers/BaseItemsManager.kt | 8 +- .../managers/DepersonalizeItemsManager.kt | 10 +- .../managers/PersonalizeItemsManager.kt | 6 +- .../managers/ScanItemsManager.kt | 6 +- .../managers/SignItemsManager.kt | 10 +- .../afterAction/AfterActionModifiers.kt | 4 +- .../triggers/afterAction/AfterScanModifier.kt | 12 +- .../ucase/ui/BaseCardActionFragment.kt | 4 +- .../tangemtest/ucase/ui/ParamsViewModel.kt | 75 ++++++------ .../dto/DefaultPersonalizeParams.kt | 2 +- .../personalize/ui/PersonalizeFragment.kt | 4 +- 19 files changed, 155 insertions(+), 216 deletions(-) diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/Old_MainActivity.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/Old_MainActivity.kt index b39081b6b0..40998ca19b 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/Old_MainActivity.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/Old_MainActivity.kt @@ -3,17 +3,14 @@ package com.tangem.tangemtest import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity -import com.tangem.CardManager +import com.tangem.TangemSdk +import com.tangem.common.CompletionResult import com.tangem.tangem_sdk_new.extensions.init -import com.tangem.tangemtest.extensions.create -import com.tangem.tasks.ScanEvent -import com.tangem.tasks.TaskError -import com.tangem.tasks.TaskEvent import kotlinx.android.synthetic.main.old_activity_main.* class Old_MainActivity : AppCompatActivity() { - private lateinit var cardManager: CardManager + private lateinit var tangemSdk: TangemSdk private lateinit var cardId: String private lateinit var issuerData: ByteArray private lateinit var issuerDataSignature: ByteArray @@ -23,66 +20,50 @@ class Old_MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.old_activity_main) - cardManager = CardManager.init(this) + tangemSdk = TangemSdk.init(this) btn_scan?.setOnClickListener { _ -> - cardManager.scanCard { taskEvent -> + tangemSdk.scanCard { taskEvent -> when (taskEvent) { - is TaskEvent.Event -> { - when (taskEvent.data) { - is ScanEvent.OnReadEvent -> { - // Handle returned card data - cardId = (taskEvent.data as ScanEvent.OnReadEvent).card.cardId - runOnUiThread { - tv_card_cid?.text = cardId - btn_create_wallet.isEnabled = true - } - } - is ScanEvent.OnVerifyEvent -> { - //Handle card verification - runOnUiThread { - tv_card_cid?.text = cardId - btn_sign.isEnabled = true - btn_read_issuer_data.isEnabled = true - btn_read_issuer_extra_data.isEnabled = true - btn_write_issuer_data.isEnabled = true - btn_purge_wallet.isEnabled = true - btn_create_wallet.isEnabled = true - } - } + is CompletionResult.Success -> { + // Handle returned card data + val card = taskEvent.data + cardId = card.cardId + runOnUiThread { + tv_card_cid?.text = cardId + btn_create_wallet.isEnabled = true + tv_card_cid?.text = cardId + btn_sign.isEnabled = true + btn_read_issuer_data.isEnabled = true + btn_read_issuer_extra_data.isEnabled = true + btn_write_issuer_data.isEnabled = true + btn_purge_wallet.isEnabled = true + btn_create_wallet.isEnabled = true + } } - is TaskEvent.Completion -> { - if (taskEvent.error != null) { - if (taskEvent.error is TaskError.UserCancelled) { - // Handle case when user cancelled manually - } - // Handle other errors - } - // Handle completion - } } } } btn_sign?.setOnClickListener { _ -> - cardManager.sign( + tangemSdk.sign( createSampleHashes(), cardId) { when (it) { - is TaskEvent.Completion -> { - if (it.error != null) runOnUiThread { tv_card_cid?.text = it.error!!::class.simpleName } + is CompletionResult.Failure -> { + runOnUiThread { tv_card_cid?.text = it.error::class.simpleName } } - is TaskEvent.Event -> runOnUiThread { tv_card_cid?.text = cardId + "was used to sign sample hashes." } + is CompletionResult.Success -> runOnUiThread { tv_card_cid?.text = cardId + "was used to sign sample hashes." } } } } btn_read_issuer_data?.setOnClickListener { _ -> - cardManager.readIssuerData(cardId) { + tangemSdk.readIssuerData(cardId) { when (it) { - is TaskEvent.Completion -> { - if (it.error != null) runOnUiThread { tv_card_cid?.text = it.error!!::class.simpleName } + is CompletionResult.Failure -> { + runOnUiThread { tv_card_cid?.text = it.error::class.simpleName } } - is TaskEvent.Event -> runOnUiThread { + is CompletionResult.Success -> runOnUiThread { btn_write_issuer_data.isEnabled = true tv_card_cid?.text = it.data.issuerData.contentToString() issuerData = it.data.issuerData @@ -92,27 +73,27 @@ class Old_MainActivity : AppCompatActivity() { } } btn_write_issuer_data?.setOnClickListener { _ -> - cardManager.writeIssuerData( + tangemSdk.writeIssuerData( cardId, issuerData, issuerDataSignature) { when (it) { - is TaskEvent.Completion -> { - if (it.error != null) runOnUiThread { tv_card_cid?.text = it.error!!::class.simpleName } + is CompletionResult.Failure -> { + runOnUiThread { tv_card_cid?.text = it.error::class.simpleName } } - is TaskEvent.Event -> runOnUiThread { + is CompletionResult.Success -> runOnUiThread { tv_card_cid?.text = it.data.cardId } } } } btn_read_issuer_extra_data?.setOnClickListener { _ -> - cardManager.readIssuerExtraData(cardId) { + tangemSdk.readIssuerExtraData(cardId) { when (it) { - is TaskEvent.Completion -> { - if (it.error != null) runOnUiThread { tv_card_cid?.text = it.error!!::class.simpleName } + is CompletionResult.Failure -> { + runOnUiThread { tv_card_cid?.text = it.error::class.simpleName } } - is TaskEvent.Event -> runOnUiThread { + is CompletionResult.Success -> runOnUiThread { issuerDataCounter = (it.data.issuerDataCounter ?: 0) + 1 btn_write_issuer_data.isEnabled = true tv_card_cid?.text = "Read ${it.data.issuerData.size} bytes of data." @@ -121,26 +102,26 @@ class Old_MainActivity : AppCompatActivity() { } } btn_purge_wallet?.setOnClickListener { _ -> - cardManager.purgeWallet( + tangemSdk.purgeWallet( cardId) { when (it) { - is TaskEvent.Completion -> { - if (it.error != null) runOnUiThread { tv_card_cid?.text = it.error!!::class.simpleName } + is CompletionResult.Failure -> { + runOnUiThread { tv_card_cid?.text = it.error::class.simpleName } } - is TaskEvent.Event -> runOnUiThread { + is CompletionResult.Success -> runOnUiThread { tv_card_cid?.text = it.data.status.name } } } } btn_create_wallet?.setOnClickListener { _ -> - cardManager.createWallet( + tangemSdk.createWallet( cardId) { when (it) { - is TaskEvent.Completion -> { - if (it.error != null) runOnUiThread { tv_card_cid?.text = it.error!!::class.simpleName } + is CompletionResult.Failure -> { + runOnUiThread { tv_card_cid?.text = it.error::class.simpleName } } - is TaskEvent.Event -> runOnUiThread { + is CompletionResult.Success -> runOnUiThread { tv_card_cid?.text = it.data.status.name btn_sign.isEnabled = true btn_read_issuer_data.isEnabled = true diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/TestUserDataActivity.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/TestUserDataActivity.kt index 9ffcba3103..0df7bd9aa6 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/TestUserDataActivity.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/TestUserDataActivity.kt @@ -5,14 +5,11 @@ import android.view.View import android.widget.CompoundButton import android.widget.TextView import androidx.appcompat.app.AppCompatActivity -import com.tangem.CardManager -import com.tangem.commands.ReadUserDataResponse -import com.tangem.commands.WriteUserDataResponse -import com.tangem.common.CardEnvironment +import com.tangem.CardEnvironment +import com.tangem.SessionError +import com.tangem.TangemSdk +import com.tangem.common.CompletionResult import com.tangem.tangem_sdk_new.extensions.init -import com.tangem.tasks.ScanEvent -import com.tangem.tasks.TaskError -import com.tangem.tasks.TaskEvent import kotlinx.android.synthetic.main.activity_test_user_data.* import java.nio.charset.StandardCharsets @@ -21,7 +18,7 @@ import java.nio.charset.StandardCharsets */ class TestUserDataActivity : AppCompatActivity() { - private lateinit var cardManager: CardManager + private lateinit var tangemSdk: TangemSdk private lateinit var writeOptions: WriteOptions override fun onCreate(savedInstanceState: Bundle?) { @@ -33,31 +30,15 @@ class TestUserDataActivity : AppCompatActivity() { } private fun init() { - cardManager = CardManager.init(this) + tangemSdk = TangemSdk.init(this) btn_scan?.setOnClickListener { _ -> - cardManager.scanCard { taskEvent -> + tangemSdk.scanCard { taskEvent -> when (taskEvent) { - is TaskEvent.Event -> { - when (taskEvent.data) { - is ScanEvent.OnReadEvent -> { - // Handle returned card data - writeOptions.cardId = (taskEvent.data as ScanEvent.OnReadEvent).card.cardId - runOnUiThread { showReadWriteSection(true) } - } - is ScanEvent.OnVerifyEvent -> { - //Handle card verification - } - } - } - is TaskEvent.Completion -> { - if (taskEvent.error != null) { - if (taskEvent.error is TaskError.UserCancelled) { - // Handle case when user cancelled manually - } - // Handle other errors - } - // Handle completion + is CompletionResult.Success -> { + // Handle returned card data + writeOptions.cardId = taskEvent.data.cardId + runOnUiThread { showReadWriteSection(true) } } } } @@ -66,7 +47,7 @@ class TestUserDataActivity : AppCompatActivity() { btn_write.setOnClickListener { if (writeOptions.cardId == null) return@setOnClickListener - cardManager.writeUserData( + tangemSdk.writeUserData( writeOptions.cardId!!, writeOptions.userData, writeOptions.userProtectedData, @@ -74,16 +55,9 @@ class TestUserDataActivity : AppCompatActivity() { writeOptions.userProtectedCounter ) { when (it) { - is TaskEvent.Completion -> handleError(tv_write_result, it.error) - is TaskEvent.Event -> { - runOnUiThread { - val data = it.data as? WriteUserDataResponse - if (data == null) { - tv_write_result.text = "Response doesn't match" - return@runOnUiThread - } - tv_write_result?.text = "Success" - } + is CompletionResult.Failure -> handleError(tv_write_result, it.error) + is CompletionResult.Success -> { + runOnUiThread { tv_write_result?.text = "Success" } } } } @@ -92,28 +66,24 @@ class TestUserDataActivity : AppCompatActivity() { btn_read.setOnClickListener { if (writeOptions.cardId == null) return@setOnClickListener - cardManager.readUserData(writeOptions.cardId!!) { + tangemSdk.readUserData(writeOptions.cardId!!) { when (it) { - is TaskEvent.Completion -> handleError(tv_read_result, it.error) - is TaskEvent.Event -> { + is CompletionResult.Failure -> handleError(tv_write_result, it.error) + is CompletionResult.Success -> { runOnUiThread { - val data = it.data as? ReadUserDataResponse - if (data == null) { - tv_read_result.text = "Response doesn't match" - return@runOnUiThread - } + tv_read_result?.text = "Success" - writeOptions.userData = data.userData - writeOptions.userProtectedData = data.userProtectedData - writeOptions.userCounter = data.userCounter - writeOptions.userProtectedCounter = data.userProtectedCounter + writeOptions.userData = it.data.userData + writeOptions.userProtectedData = it.data.userProtectedData + writeOptions.userCounter = it.data.userCounter + writeOptions.userProtectedCounter = it.data.userProtectedCounter - tv_card_cid.text = data.cardId - tv_data.text = String(data.userData, StandardCharsets.US_ASCII) - tv_protected_data.text = String(data.userProtectedData, StandardCharsets.US_ASCII) - tv_counter.text = data.userCounter.toString() - tv_protected_counter.text = data.userProtectedCounter.toString() + tv_card_cid.text = it.data.cardId + tv_data.text = String(it.data.userData, StandardCharsets.US_ASCII) + tv_protected_data.text = String(it.data.userProtectedData, StandardCharsets.US_ASCII) + tv_counter.text = it.data.userCounter.toString() + tv_protected_counter.text = it.data.userProtectedCounter.toString() } } @@ -122,11 +92,10 @@ class TestUserDataActivity : AppCompatActivity() { } } - private fun handleError(tv: TextView, error: TaskError?) { - val er = error ?: return - if (er is TaskError.UserCancelled) return + private fun handleError(tv: TextView, error: SessionError) { + if (error is SessionError.UserCancelled) return - runOnUiThread { tv.text = er::class.simpleName } + runOnUiThread { tv.text = error::class.simpleName } } private fun initWriteOptions() { diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/Action.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/Action.kt index 285c8de4b6..6e05a899a0 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/Action.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/Action.kt @@ -1,6 +1,7 @@ package com.tangem.tangemtest.ucase.domain.actions -import com.tangem.CardManager +import com.tangem.TangemSdk +import com.tangem.common.CompletionResult import com.tangem.tangemtest._arch.structure.Id import com.tangem.tangemtest._arch.structure.Payload import com.tangem.tangemtest._arch.structure.PayloadHolder @@ -8,7 +9,6 @@ import com.tangem.tangemtest._arch.structure.abstraction.Item import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.afterAction.AfterActionModification import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.changeConsequence.ItemsChangeConsequence -import com.tangem.tasks.TaskEvent /** [REDACTED_AUTHOR] @@ -17,7 +17,7 @@ import com.tangem.tasks.TaskEvent * and then processing the response. It also allows you to extract the main action as a lambda expression */ data class AttrForAction( - val cardManager: CardManager, + val tangemSdk: TangemSdk, val itemList: List, val payload: Payload, val consequence: ItemsChangeConsequence? @@ -31,16 +31,16 @@ interface Action { abstract class BaseAction : Action { protected open fun handleResult( payload: PayloadHolder, - taskEvent: TaskEvent<*>, + commandResult: CompletionResult<*>, modifier: AfterActionModification?, attrs: AttrForAction, callback: ActionCallback ) { val modifiedItems = mutableListOf() - modifier?.modify(payload, taskEvent, attrs.itemList)?.forEach { item -> + modifier?.modify(payload, commandResult, attrs.itemList)?.forEach { item -> modifiedItems.add(item) attrs.consequence?.affectChanges(payload, item, attrs.itemList)?.let { modifiedItems.addAll(it) } } - callback(taskEvent, modifiedItems) + callback(commandResult, modifiedItems) } } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/DepersonalizeAction.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/DepersonalizeAction.kt index 2433302a4b..2b5d0a79c1 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/DepersonalizeAction.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/DepersonalizeAction.kt @@ -14,7 +14,7 @@ class DepersonalizeAction : BaseAction() { val item = attrs.itemList.findDataItem(TlvId.CardId) ?: return val cardId = item.viewModel.data as? String ?: return - attrs.cardManager.depersonalize(cardId) { handleResult(payload, it, null, attrs, callback) } + attrs.tangemSdk.depersonalize(cardId) { handleResult(payload, it, null, attrs, callback) } } override fun getActionByTag(payload: PayloadHolder, id: Id, attrs: AttrForAction): ((ActionCallback) -> Unit)? { diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/PersonalizeAction.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/PersonalizeAction.kt index 8ef5e4c0cc..ab3330ca54 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/PersonalizeAction.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/PersonalizeAction.kt @@ -40,7 +40,7 @@ class PersonalizeAction : BaseAction() { val personalizeConfig = PersonalizeConfigConverter().convert(itemList, PersonalizeConfig()) val cardConfig = PersonalizeConfigToCardConfig().convert(personalizeConfig) - attrs.cardManager.personalize(cardConfig, issuer, manufacturer, acquirer) { + attrs.tangemSdk.personalize(cardConfig, issuer, manufacturer, acquirer) { handleResult(payload, it, null, attrs, callback) } } diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/ScanAction.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/ScanAction.kt index 5264be9aed..213fea8b63 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/ScanAction.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/ScanAction.kt @@ -9,6 +9,6 @@ import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.afterAction.Aft */ class ScanAction : BaseAction() { override fun executeMainAction(payload: PayloadHolder, attrs: AttrForAction, callback: ActionCallback) { - attrs.cardManager.scanCard { handleResult(payload, it, AfterScanModifier(), attrs, callback) } + attrs.tangemSdk.scanCard { handleResult(payload, it, AfterScanModifier(), attrs, callback) } } } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/SignAction.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/SignAction.kt index 18fef1d8c5..c74209099b 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/SignAction.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/SignAction.kt @@ -16,7 +16,7 @@ class SignAction : BaseAction() { val hash = dataForHashing.getData() as? ByteArray ?: return val cardId = attrs.itemList.findDataItem(TlvId.CardId)?.viewModel?.data ?: return - attrs.cardManager.sign(arrayOf(hash), stringOf(cardId)) { handleResult(payload, it, null, attrs, callback) } + attrs.tangemSdk.sign(arrayOf(hash), stringOf(cardId)) { handleResult(payload, it, null, attrs, callback) } } override fun getActionByTag(payload: PayloadHolder, id: Id, attrs: AttrForAction): ((ActionCallback) -> Unit)? { diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/ItemsManager.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/ItemsManager.kt index f97013d6f8..89c8011add 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/ItemsManager.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/ItemsManager.kt @@ -1,14 +1,14 @@ package com.tangem.tangemtest.ucase.domain.paramsManager -import com.tangem.CardManager +import com.tangem.TangemSdk +import com.tangem.common.CompletionResult import com.tangem.tangemtest._arch.structure.Id import com.tangem.tangemtest._arch.structure.Payload import com.tangem.tangemtest._arch.structure.PayloadHolder import com.tangem.tangemtest._arch.structure.abstraction.Item import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.changeConsequence.ItemsChangeConsequence -import com.tangem.tasks.TaskEvent -typealias ActionResponse = TaskEvent<*> +typealias ActionResponse = CompletionResult<*> typealias AffectedList = List typealias AffectedItemsCallback = (AffectedList) -> Unit typealias ActionCallback = (ActionResponse, AffectedList) -> Unit @@ -20,8 +20,8 @@ interface ItemsManager : PayloadHolder { fun itemChanged(id: Id, value: Any?, callback: AffectedItemsCallback? = null) fun getItems(): List - fun invokeMainAction(cardManager: CardManager, callback: ActionCallback) - fun getActionByTag(id: Id, cardManager: CardManager): ((ActionCallback) -> Unit)? + fun invokeMainAction(tangemSdk: TangemSdk, callback: ActionCallback) + fun getActionByTag(id: Id, tangemSdk: TangemSdk): ((ActionCallback) -> Unit)? fun attachPayload(payload: Payload) val consequence: ItemsChangeConsequence? diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/BaseItemsManager.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/BaseItemsManager.kt index c9016165ac..e8461a7e69 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/BaseItemsManager.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/BaseItemsManager.kt @@ -1,6 +1,6 @@ package com.tangem.tangemtest.ucase.domain.paramsManager.managers -import com.tangem.CardManager +import com.tangem.TangemSdk import com.tangem.tangemtest._arch.structure.Id import com.tangem.tangemtest._arch.structure.Payload import com.tangem.tangemtest._arch.structure.abstraction.Item @@ -33,7 +33,7 @@ abstract class BaseItemsManager(protected val action: Action) : ItemsManager { override fun getItems(): MutableList = itemList.toMutableList() - override fun getActionByTag(id: Id, cardManager: CardManager): ((ActionCallback) -> Unit)? = null + override fun getActionByTag(id: Id, tangemSdk: TangemSdk): ((ActionCallback) -> Unit)? = null override fun attachPayload(payload: Payload) { payload.forEach { this.payload[it.key] = it.value } @@ -44,8 +44,8 @@ abstract class BaseItemsManager(protected val action: Action) : ItemsManager { consequence?.affectChanges(this, param, itemList)?.let { callback?.invoke(it) } } - protected fun getAttrsForAction(cardManager: CardManager) - : AttrForAction = AttrForAction(cardManager, itemList, payload, consequence) + protected fun getAttrsForAction(tangemSdk: TangemSdk) + : AttrForAction = AttrForAction(tangemSdk, itemList, payload, consequence) abstract fun createItemsList(): List } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/DepersonalizeItemsManager.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/DepersonalizeItemsManager.kt index 8267c86bb6..3f94e7ea85 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/DepersonalizeItemsManager.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/DepersonalizeItemsManager.kt @@ -1,6 +1,6 @@ package com.tangem.tangemtest.ucase.domain.paramsManager.managers -import com.tangem.CardManager +import com.tangem.TangemSdk import com.tangem.tangemtest._arch.structure.Id import com.tangem.tangemtest._arch.structure.abstraction.Item import com.tangem.tangemtest._arch.structure.impl.EditTextItem @@ -16,11 +16,11 @@ class DepersonalizeItemsManager : BaseItemsManager(DepersonalizeAction()) { return listOf(EditTextItem(TlvId.CardId, null)) } - override fun invokeMainAction(cardManager: CardManager, callback: ActionCallback) { - action.executeMainAction(this, getAttrsForAction(cardManager), callback) + override fun invokeMainAction(tangemSdk: TangemSdk, callback: ActionCallback) { + action.executeMainAction(this, getAttrsForAction(tangemSdk), callback) } - override fun getActionByTag(id: Id, cardManager: CardManager): ((ActionCallback) -> Unit)? { - return action.getActionByTag(this, id, getAttrsForAction(cardManager)) + override fun getActionByTag(id: Id, tangemSdk: TangemSdk): ((ActionCallback) -> Unit)? { + return action.getActionByTag(this, id, getAttrsForAction(tangemSdk)) } } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/PersonalizeItemsManager.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/PersonalizeItemsManager.kt index 7f40ac54f5..a23e009c8c 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/PersonalizeItemsManager.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/PersonalizeItemsManager.kt @@ -1,6 +1,6 @@ package com.tangem.tangemtest.ucase.domain.paramsManager.managers -import com.tangem.CardManager +import com.tangem.TangemSdk import com.tangem.tangemtest._arch.structure.abstraction.Item import com.tangem.tangemtest.ucase.domain.actions.PersonalizeAction import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback @@ -11,7 +11,7 @@ import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback class PersonalizeItemsManager : BaseItemsManager(PersonalizeAction()) { override fun createItemsList(): List = listOf() - override fun invokeMainAction(cardManager: CardManager, callback: ActionCallback) { - action.executeMainAction(this, getAttrsForAction(cardManager), callback) + override fun invokeMainAction(tangemSdk: TangemSdk, callback: ActionCallback) { + action.executeMainAction(this, getAttrsForAction(tangemSdk), callback) } } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/ScanItemsManager.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/ScanItemsManager.kt index 1d9c973786..c3f8767717 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/ScanItemsManager.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/ScanItemsManager.kt @@ -1,6 +1,6 @@ package com.tangem.tangemtest.ucase.domain.paramsManager.managers -import com.tangem.CardManager +import com.tangem.TangemSdk import com.tangem.tangemtest._arch.structure.abstraction.Item import com.tangem.tangemtest.ucase.domain.actions.ScanAction import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback @@ -11,7 +11,7 @@ import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback class ScanItemsManager : BaseItemsManager(ScanAction()) { override fun createItemsList(): List = listOf() - override fun invokeMainAction(cardManager: CardManager, callback: ActionCallback) { - action.executeMainAction(this, getAttrsForAction(cardManager), callback) + override fun invokeMainAction(tangemSdk: TangemSdk, callback: ActionCallback) { + action.executeMainAction(this, getAttrsForAction(tangemSdk), callback) } } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/SignItemsManager.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/SignItemsManager.kt index 7d5d77a912..91b6b5ba01 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/SignItemsManager.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/SignItemsManager.kt @@ -1,6 +1,6 @@ package com.tangem.tangemtest.ucase.domain.paramsManager.managers -import com.tangem.CardManager +import com.tangem.TangemSdk import com.tangem.tangemtest._arch.structure.Id import com.tangem.tangemtest._arch.structure.abstraction.Item import com.tangem.tangemtest._arch.structure.impl.EditTextItem @@ -24,11 +24,11 @@ class SignItemsManager : BaseItemsManager(SignAction()) { ) } - override fun invokeMainAction(cardManager: CardManager, callback: ActionCallback) { - action.executeMainAction(this, getAttrsForAction(cardManager), callback) + override fun invokeMainAction(tangemSdk: TangemSdk, callback: ActionCallback) { + action.executeMainAction(this, getAttrsForAction(tangemSdk), callback) } - override fun getActionByTag(id: Id, cardManager: CardManager): ((ActionCallback) -> Unit)? { - return action.getActionByTag(this, id, getAttrsForAction(cardManager)) + override fun getActionByTag(id: Id, tangemSdk: TangemSdk): ((ActionCallback) -> Unit)? { + return action.getActionByTag(this, id, getAttrsForAction(tangemSdk)) } } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt index 0b6cecbf64..48ab757ff0 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt @@ -1,8 +1,8 @@ package com.tangem.tangemtest.ucase.domain.paramsManager.triggers.afterAction +import com.tangem.common.CompletionResult import com.tangem.tangemtest._arch.structure.PayloadHolder import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tasks.TaskEvent /** [REDACTED_AUTHOR] @@ -12,5 +12,5 @@ import com.tangem.tasks.TaskEvent * Returns a list of items that have been modified */ interface AfterActionModification { - fun modify(payload: PayloadHolder, taskEvent: TaskEvent<*>, itemList: List): List + fun modify(payload: PayloadHolder, commandResult: CompletionResult<*>, itemList: List): List } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt index b75c721424..60464e4bb0 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt @@ -2,6 +2,7 @@ package com.tangem.tangemtest.ucase.domain.paramsManager.triggers.afterAction import com.tangem.commands.Card import com.tangem.commands.CardStatus +import com.tangem.common.CompletionResult import com.tangem.tangemtest._arch.structure.PayloadHolder import com.tangem.tangemtest._arch.structure.abstraction.Item import com.tangem.tangemtest._arch.structure.abstraction.findDataItem @@ -9,17 +10,16 @@ import com.tangem.tangemtest.ucase.domain.paramsManager.PayloadKey import com.tangem.tangemtest.ucase.tunnel.ActionView import com.tangem.tangemtest.ucase.tunnel.CardError import com.tangem.tangemtest.ucase.variants.TlvId -import com.tangem.tasks.ScanEvent -import com.tangem.tasks.TaskEvent + import ru.dev.gbixahue.eu4d.lib.android.global.threading.postUI /** [REDACTED_AUTHOR] */ class AfterScanModifier : AfterActionModification { - override fun modify(payload: PayloadHolder, taskEvent: TaskEvent<*>, itemList: List): List { + override fun modify(payload: PayloadHolder, commandResult: CompletionResult<*>, itemList: List): List { val foundItem = itemList.findDataItem(TlvId.CardId) ?: return listOf() - val card = smartCast(taskEvent)?.card ?: return listOf() + val card = smartCast(commandResult) ?: return listOf() val actionView = payload.get(PayloadKey.actionView) as? ActionView ?: return listOf() return if (isNotPersonalized(card)) { @@ -34,8 +34,8 @@ class AfterScanModifier : AfterActionModification { } } - private fun smartCast(taskEvent: TaskEvent<*>): ScanEvent.OnReadEvent? { - return (taskEvent as? TaskEvent.Event)?.data as? ScanEvent.OnReadEvent + private fun smartCast(commandResult: CompletionResult<*>): Card? { + return (commandResult as? CompletionResult.Success)?.data } private fun isNotPersonalized(card: Card): Boolean = card.status == CardStatus.NotPersonalized diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseCardActionFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseCardActionFragment.kt index d44d2c998d..b18588989d 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseCardActionFragment.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseCardActionFragment.kt @@ -13,7 +13,7 @@ import androidx.lifecycle.Observer import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.snackbar.BaseTransientBottomBar import com.google.android.material.snackbar.Snackbar -import com.tangem.CardManager +import com.tangem.TangemSdk import com.tangem.tangem_sdk_new.extensions.init import com.tangem.tangemtest.R import com.tangem.tangemtest._arch.structure.Id @@ -56,7 +56,7 @@ abstract class BaseCardActionFragment : Fragment(), LayoutHolder, ActionView { Log.d(this, "onViewCreated") viewLifecycleOwner.lifecycle.addObserver(paramsVM) - paramsVM.setCardManager(CardManager.init(requireActivity())) + paramsVM.setCardManager(TangemSdk.init(requireActivity())) paramsVM.attachToPayload(mutableMapOf(PayloadKey.actionView to this as ActionView)) initFab() showActionFab(false) diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/ParamsViewModel.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/ParamsViewModel.kt index 2df743786e..84c3ed915d 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/ParamsViewModel.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/ParamsViewModel.kt @@ -3,8 +3,11 @@ package com.tangem.tangemtest.ucase.ui import androidx.annotation.UiThread import androidx.lifecycle.* import com.google.gson.Gson -import com.tangem.CardManager +import com.tangem.SessionError +import com.tangem.TangemSdk import com.tangem.commands.Card +import com.tangem.commands.CommandResponse +import com.tangem.common.CompletionResult import com.tangem.tangemtest._arch.SingleLiveEvent import com.tangem.tangemtest._arch.structure.Id import com.tangem.tangemtest._arch.structure.Payload @@ -13,9 +16,6 @@ import com.tangem.tangemtest.commons.performAction import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager import com.tangem.tangemtest.ucase.domain.responses.GsonInitializer import com.tangem.tangemtest.ucase.tunnel.ViewScreen -import com.tangem.tasks.ScanEvent -import com.tangem.tasks.TaskError -import com.tangem.tasks.TaskEvent import ru.dev.gbixahue.eu4d.lib.android.global.log.Log /** @@ -37,10 +37,10 @@ class ParamsViewModel(private val itemsManager: ItemsManager) : ViewModel(), Lif val seChangedItems: MutableLiveData> = SingleLiveEvent() private val notifier: Notifier = Notifier(this) - private lateinit var cardManager: CardManager + private lateinit var tangemSdk: TangemSdk - fun setCardManager(cardManager: CardManager) { - this.cardManager = cardManager + fun setCardManager(tangemSdk: TangemSdk) { + this.tangemSdk = tangemSdk } fun userChangedItem(id: Id, value: Any?) { @@ -53,7 +53,7 @@ class ParamsViewModel(private val itemsManager: ItemsManager) : ViewModel(), Lif //invokes Scan, Sign etc... fun invokeMainAction() { - performAction(itemsManager, cardManager) { paramsManager, cardManager -> + performAction(itemsManager, tangemSdk) { paramsManager, cardManager -> paramsManager.invokeMainAction(cardManager) { response, listOfChangedParams -> notifier.handleActionResult(response, listOfChangedParams) } @@ -61,7 +61,7 @@ class ParamsViewModel(private val itemsManager: ItemsManager) : ViewModel(), Lif } fun getItemAction(id: Id): (() -> Unit)? { - val itemFunction = itemsManager.getActionByTag(id, cardManager) ?: return null + val itemFunction = itemsManager.getActionByTag(id, tangemSdk) ?: return null return { itemFunction { response, listOfChangedParams -> @@ -84,10 +84,10 @@ class ParamsViewModel(private val itemsManager: ItemsManager) : ViewModel(), Lif internal class Notifier(private val vm: ParamsViewModel) { - private var notShowedError: TaskError? = null + private var notShowedError: SessionError? = null private val gson: Gson = GsonInitializer().gson - fun handleActionResult(response: TaskEvent<*>, list: List) { + fun handleActionResult(response: CompletionResult<*>, list: List) { if (list.isNotEmpty()) notifyItemsChanged(list) handleResponse(response) } @@ -97,48 +97,37 @@ internal class Notifier(private val vm: ParamsViewModel) { vm.seChangedItems.postValue(list) } - fun handleResponse(response: TaskEvent<*>) { - val taskEvent = response as? TaskEvent<*> ?: return + fun handleResponse(response: CompletionResult<*>) { + val commandResponse = response as? CompletionResult ?: return - when (taskEvent) { - is TaskEvent.Completion -> handleCompletionEvent(taskEvent) - is TaskEvent.Event -> handleDataEvent(taskEvent.data) + when (commandResponse) { + is CompletionResult.Failure -> handleError(commandResponse.error) + is CompletionResult.Success -> handleDataEvent(commandResponse.data) } } - private fun handleDataEvent(event: Any?) { - when (event) { - is ScanEvent.OnReadEvent -> { - vm.ldCard.postValue(event.card) - vm.ldReadResponse.postValue(gson.toJson(event)) + private fun handleDataEvent(data: CommandResponse?) { + when (data) { + is Card -> { + vm.ldCard.postValue(data) + vm.ldReadResponse.postValue(gson.toJson(data)) } - is ScanEvent.OnVerifyEvent -> { - vm.ldIsVerified.postValue(true) - } - else -> vm.ldResponse.postValue(gson.toJson(event)) + else -> vm.ldResponse.postValue(gson.toJson(data)) } } - private fun handleCompletionEvent(taskEvent: TaskEvent.Completion<*>) { - if (taskEvent.error == null) { - Log.d(this, "error = null") - if (notShowedError != null) { - vm.seError.postValue("${notShowedError!!::class.simpleName}") - notShowedError = null - } - } else { - Log.d(this, "error = ${taskEvent.error}") - when (taskEvent.error) { - is TaskError.UserCancelled -> { - if (notShowedError == null) { - vm.seError.postValue("User canceled the action") - } else { - vm.seError.postValue("${notShowedError!!::class.simpleName}") - notShowedError = null - } + private fun handleError(error: SessionError) { + Log.d(this, "error = ${error}") + when (error) { + is SessionError.UserCancelled -> { + if (notShowedError == null) { + vm.seError.postValue("User canceled the action") + } else { + vm.seError.postValue("${notShowedError!!::class.simpleName}") + notShowedError = null } - else -> notShowedError = taskEvent.error } + else -> notShowedError = error } } } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/DefaultPersonalizeParams.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/DefaultPersonalizeParams.kt index c8d9afa0d1..f6e5cdb5ce 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/DefaultPersonalizeParams.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/DefaultPersonalizeParams.kt @@ -1,9 +1,9 @@ package com.tangem.tangemtest.ucase.variants.personalize.dto +import com.tangem.KeyPair import com.tangem.commands.personalization.entities.Acquirer import com.tangem.commands.personalization.entities.Issuer import com.tangem.commands.personalization.entities.Manufacturer -import com.tangem.common.KeyPair /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizeFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizeFragment.kt index 3456d91ad2..4561e8e59d 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizeFragment.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizeFragment.kt @@ -12,7 +12,7 @@ import androidx.lifecycle.Observer import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.snackbar.BaseTransientBottomBar import com.google.android.material.snackbar.Snackbar -import com.tangem.CardManager +import com.tangem.TangemSdk import com.tangem.tangem_sdk_new.extensions.init import com.tangem.tangemtest.R import com.tangem.tangemtest._arch.structure.Id @@ -70,7 +70,7 @@ class PersonalizeFragment : Fragment(), ActionView { personalizeVM.toggleDescriptionVisibility(it) }) - val cardManager = CardManager.init(requireActivity()) + val cardManager = TangemSdk.init(requireActivity()) paramsVM.setCardManager(cardManager) paramsVM.ldResponse.observe(viewLifecycleOwner, Observer { Log.d(this, "action response: ${if (it.length > 50) it.substring(0..50) else it}")