Updated on 2026-08-14

This commit is contained in:
Tangem 2020-03-26 02:08:01 +03:00
parent 86189b8bf6
commit 14ea1d3807
48 changed files with 303 additions and 286 deletions

View file

@ -16,9 +16,9 @@ import androidx.transition.AutoTransition
import androidx.transition.TransitionManager
import com.tangem.tangemtest.R
import com.tangem.tangemtest._main.MainViewModel
import com.tangem.tangemtest.cardUseCase.resources.ActionType
import com.tangem.tangemtest.cardUseCase.resources.MainResourceHolder
import com.tangem.tangemtest.commons.getDefaultNavigationOptions
import com.tangem.tangemtest.ucase.getDefaultNavigationOptions
import com.tangem.tangemtest.ucase.resources.ActionType
import com.tangem.tangemtest.ucase.resources.MainResourceHolder
import kotlinx.android.synthetic.main.fg_entry_point.*
/**

View file

@ -6,9 +6,9 @@ import android.widget.TextView
import androidx.annotation.StringRes
import androidx.recyclerview.widget.RecyclerView
import com.tangem.tangemtest.R
import com.tangem.tangemtest.cardUseCase.resources.ActionRes
import com.tangem.tangemtest.cardUseCase.resources.ActionType
import com.tangem.tangemtest.cardUseCase.resources.MainResourceHolder
import com.tangem.tangemtest.ucase.resources.ActionRes
import com.tangem.tangemtest.ucase.resources.ActionType
import com.tangem.tangemtest.ucase.resources.MainResourceHolder
import ru.dev.gbixahue.eu4d.lib.android._android.views.inflate
import ru.dev.gbixahue.eu4d.lib.android._android.views.recycler_view.RvBaseAdapter
import ru.dev.gbixahue.eu4d.lib.android._android.views.recycler_view.RvBaseVH

View file

@ -1,128 +0,0 @@
package com.tangem.tangemtest.cardUseCase.domain.actions
import com.tangem.CardManager
import com.tangem.commands.personalization.CardConfig
import com.tangem.common.tlv.TlvTag
import com.tangem.tangemtest.AppTangemDemo
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.ActionCallback
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.IncomingParameter
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.findParameter
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.modifiers.AfterActionModification
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.modifiers.AfterScanModifier
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.modifiers.ParamsChangeConsequence
import com.tangem.tangemtest.extensions.init
import com.tangem.tasks.ScanEvent
import com.tangem.tasks.TaskEvent
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf
/**
[REDACTED_AUTHOR]
*
* The Card Action class family is designed for calling Card Manager functions
* 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 paramsList: List<IncomingParameter>,
val consequence: ParamsChangeConsequence?
)
interface CardAction {
fun executeMainAction(attrs: AttrForAction, callback: ActionCallback)
fun getActionByTag(tag: TlvTag, attrs: AttrForAction): ((ActionCallback) -> Unit)? = null
}
abstract class BaseCardAction : CardAction {
protected open fun handleResponse(
taskEvent: TaskEvent<*>,
modifier: AfterActionModification?,
attrs: AttrForAction,
callback: ActionCallback
) {
val allModifiedParams = mutableListOf<IncomingParameter>()
modifier?.modify(taskEvent, attrs.paramsList)?.forEach { parameter ->
allModifiedParams.add(parameter)
attrs.consequence?.affectChanges(parameter, attrs.paramsList)?.let { allModifiedParams.addAll(it) }
}
callback(taskEvent, allModifiedParams)
}
}
class ScanAction : BaseCardAction() {
override fun executeMainAction(attrs: AttrForAction, callback: ActionCallback) {
attrs.cardManager.scanCard { handleResponse(it, AfterScanModifier(), attrs, callback) }
}
}
class SignAction : BaseCardAction() {
override fun executeMainAction(attrs: AttrForAction, callback: ActionCallback) {
val dataForHashing = attrs.paramsList.findParameter(TlvTag.TransactionOutHash) ?: return
val arHashes = createHashes(stringOf(dataForHashing.data))
val cardId = attrs.paramsList.findParameter(TlvTag.CardId)?.data ?: return
attrs.cardManager.sign(arHashes, stringOf(cardId)) { handleResponse(it, null, attrs, callback) }
}
override fun getActionByTag(tag: TlvTag, attrs: AttrForAction): ((ActionCallback) -> Unit)? {
return when (tag) {
TlvTag.CardId -> { callback -> ScanAction().executeMainAction(attrs, callback) }
else -> null
}
}
private fun createHashes(value: String): Array<ByteArray> {
return arrayOf(value.toByteArray())
}
}
class PersonalizeAction : BaseCardAction() {
override fun executeMainAction(attrs: AttrForAction, callback: ActionCallback) {
ScanAction().executeMainAction(attrs) { response, b ->
when (response) {
is TaskEvent.Event -> {
val taskEvent = response as TaskEvent.Event
val cardId = handleDataEvent(taskEvent.data)
if (cardId == null) {
handleResponse(response, null, attrs, callback)
return@executeMainAction
}
attrs.cardManager.personalize(CardConfig.init(AppTangemDemo.appInstance), cardId) {
handleResponse(it, null, attrs, callback)
}
}
is TaskEvent.Completion -> {
handleResponse(response, null, attrs, callback)
}
}
}
}
private fun handleDataEvent(event: Any?): String? {
return when (event) {
is ScanEvent.OnReadEvent -> {
event.card.cardId
}
else -> null
}
}
}
class DepesonalizeAction : BaseCardAction() {
override fun executeMainAction(attrs: AttrForAction, callback: ActionCallback) {
val cardId = attrs.paramsList.findParameter(TlvTag.CardId)?.data as? String ?: return
attrs.cardManager.depersonalize(cardId) { handleResponse(it, null, attrs, callback) }
}
override fun getActionByTag(tag: TlvTag, attrs: AttrForAction): ((ActionCallback) -> Unit)? {
return when (tag) {
TlvTag.CardId -> { callback -> ScanAction().executeMainAction(attrs, callback) }
else -> null
}
}
}

View file

@ -1,17 +0,0 @@
package com.tangem.tangemtest.cardUseCase.domain.paramsManager.managers
import com.tangem.CardManager
import com.tangem.tangemtest.cardUseCase.domain.actions.PersonalizeAction
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.ActionCallback
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.BaseParamsManager
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.IncomingParameter
class PersonalizeParamsManager : BaseParamsManager(PersonalizeAction()) {
override fun createParamsList(): List<IncomingParameter> {
return listOf()
}
override fun invokeMainAction(cardManager: CardManager, callback: ActionCallback) {
action.executeMainAction(getAttrsForAction(cardManager), callback)
}
}

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.commons
package com.tangem.tangemtest.ucase
import androidx.navigation.NavOptions
import androidx.navigation.navOptions

View file

@ -0,0 +1,42 @@
package com.tangem.tangemtest.ucase.domain.actions
import com.tangem.CardManager
import com.tangem.common.tlv.TlvTag
import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback
import com.tangem.tangemtest.ucase.domain.paramsManager.IncomingParameter
import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.afterAction.AfterActionModification
import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.changeConsequence.ParamsChangeConsequence
import com.tangem.tasks.TaskEvent
/**
[REDACTED_AUTHOR]
*
* The Card Action class family is designed for calling Card Manager functions
* 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 paramsList: List<IncomingParameter>,
val consequence: ParamsChangeConsequence?
)
interface CardAction {
fun executeMainAction(attrs: AttrForAction, callback: ActionCallback)
fun getActionByTag(tag: TlvTag, attrs: AttrForAction): ((ActionCallback) -> Unit)? = null
}
abstract class BaseCardAction : CardAction {
protected open fun handleResponse(
taskEvent: TaskEvent<*>,
modifier: AfterActionModification?,
attrs: AttrForAction,
callback: ActionCallback
) {
val allModifiedParams = mutableListOf<IncomingParameter>()
modifier?.modify(taskEvent, attrs.paramsList)?.forEach { parameter ->
allModifiedParams.add(parameter)
attrs.consequence?.affectChanges(parameter, attrs.paramsList)?.let { allModifiedParams.addAll(it) }
}
callback(taskEvent, allModifiedParams)
}
}

View file

@ -0,0 +1,20 @@
package com.tangem.tangemtest.ucase.domain.actions
import com.tangem.common.tlv.TlvTag
import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback
import com.tangem.tangemtest.ucase.domain.paramsManager.findParameter
class DepesonalizeAction : BaseCardAction() {
override fun executeMainAction(attrs: AttrForAction, callback: ActionCallback) {
val cardId = attrs.paramsList.findParameter(TlvTag.CardId)?.data as? String ?: return
attrs.cardManager.depersonalize(cardId) { handleResponse(it, null, attrs, callback) }
}
override fun getActionByTag(tag: TlvTag, attrs: AttrForAction): ((ActionCallback) -> Unit)? {
return when (tag) {
TlvTag.CardId -> { callback -> ScanAction().executeMainAction(attrs, callback) }
else -> null
}
}
}

View file

@ -0,0 +1,44 @@
package com.tangem.tangemtest.ucase.domain.actions
import com.tangem.commands.personalization.CardConfig
import com.tangem.tangemtest.AppTangemDemo
import com.tangem.tangemtest.extensions.init
import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback
import com.tangem.tasks.ScanEvent
import com.tangem.tasks.TaskEvent
class PersonalizeAction : BaseCardAction() {
override fun executeMainAction(attrs: AttrForAction, callback: ActionCallback) {
ScanAction().executeMainAction(attrs) { response, b ->
when (response) {
is TaskEvent.Event -> {
val taskEvent = response as TaskEvent.Event
val cardId = handleDataEvent(taskEvent.data)
if (cardId == null) {
handleResponse(response, null, attrs, callback)
return@executeMainAction
}
attrs.cardManager.personalize(CardConfig.init(AppTangemDemo.appInstance), cardId) {
handleResponse(it, null, attrs, callback)
}
}
is TaskEvent.Completion -> {
handleResponse(response, null, attrs, callback)
}
}
}
}
private fun handleDataEvent(event: Any?): String? {
return when (event) {
is ScanEvent.OnReadEvent -> {
event.card.cardId
}
else -> null
}
}
}

View file

@ -0,0 +1,10 @@
package com.tangem.tangemtest.ucase.domain.actions
import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback
import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.afterAction.AfterScanModifier
class ScanAction : BaseCardAction() {
override fun executeMainAction(attrs: AttrForAction, callback: ActionCallback) {
attrs.cardManager.scanCard { handleResponse(it, AfterScanModifier(), attrs, callback) }
}
}

View file

@ -0,0 +1,28 @@
package com.tangem.tangemtest.ucase.domain.actions
import com.tangem.common.tlv.TlvTag
import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback
import com.tangem.tangemtest.ucase.domain.paramsManager.findParameter
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf
class SignAction : BaseCardAction() {
override fun executeMainAction(attrs: AttrForAction, callback: ActionCallback) {
val dataForHashing = attrs.paramsList.findParameter(TlvTag.TransactionOutHash) ?: return
val arHashes = createHashes(stringOf(dataForHashing.data))
val cardId = attrs.paramsList.findParameter(TlvTag.CardId)?.data ?: return
attrs.cardManager.sign(arHashes, stringOf(cardId)) { handleResponse(it, null, attrs, callback) }
}
override fun getActionByTag(tag: TlvTag, attrs: AttrForAction): ((ActionCallback) -> Unit)? {
return when (tag) {
TlvTag.CardId -> { callback -> ScanAction().executeMainAction(attrs, callback) }
else -> null
}
}
private fun createHashes(value: String): Array<ByteArray> {
return arrayOf(value.toByteArray())
}
}

View file

@ -1,10 +1,10 @@
package com.tangem.tangemtest.cardUseCase.domain.paramsManager
package com.tangem.tangemtest.ucase.domain.paramsManager
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.managers.DepersonalizeParamsManager
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.managers.PersonalizeParamsManager
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.managers.ScanParamsManager
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.managers.SignParamsManager
import com.tangem.tangemtest.cardUseCase.resources.ActionType
import com.tangem.tangemtest.ucase.domain.paramsManager.managers.DepersonalizeParamsManager
import com.tangem.tangemtest.ucase.domain.paramsManager.managers.PersonalizeParamsManager
import com.tangem.tangemtest.ucase.domain.paramsManager.managers.ScanParamsManager
import com.tangem.tangemtest.ucase.domain.paramsManager.managers.SignParamsManager
import com.tangem.tangemtest.ucase.resources.ActionType
import ru.dev.gbixahue.eu4d.lib.kotlin.common.BaseTypedHolder
/**

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.cardUseCase.domain.paramsManager
package com.tangem.tangemtest.ucase.domain.paramsManager
import com.tangem.CardManager
import com.tangem.common.tlv.TlvTag

View file

@ -1,10 +1,11 @@
package com.tangem.tangemtest.cardUseCase.domain.paramsManager
package com.tangem.tangemtest.ucase.domain.paramsManager.managers
import com.tangem.CardManager
import com.tangem.common.tlv.TlvTag
import com.tangem.tangemtest.cardUseCase.domain.actions.AttrForAction
import com.tangem.tangemtest.cardUseCase.domain.actions.CardAction
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.modifiers.ParamsChangeConsequence
import com.tangem.tangemtest.ucase.domain.actions.AttrForAction
import com.tangem.tangemtest.ucase.domain.actions.CardAction
import com.tangem.tangemtest.ucase.domain.paramsManager.*
import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.changeConsequence.ParamsChangeConsequence
abstract class BaseParamsManager(protected val action: CardAction) : ParamsManager {

View file

@ -1,11 +1,10 @@
package com.tangem.tangemtest.cardUseCase.domain.paramsManager.managers
package com.tangem.tangemtest.ucase.domain.paramsManager.managers
import com.tangem.CardManager
import com.tangem.common.tlv.TlvTag
import com.tangem.tangemtest.cardUseCase.domain.actions.DepesonalizeAction
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.ActionCallback
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.BaseParamsManager
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.IncomingParameter
import com.tangem.tangemtest.ucase.domain.actions.DepesonalizeAction
import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback
import com.tangem.tangemtest.ucase.domain.paramsManager.IncomingParameter
class DepersonalizeParamsManager : BaseParamsManager(DepesonalizeAction()) {
override fun createParamsList(): List<IncomingParameter> {

View file

@ -0,0 +1,16 @@
package com.tangem.tangemtest.ucase.domain.paramsManager.managers
import com.tangem.CardManager
import com.tangem.tangemtest.ucase.domain.actions.PersonalizeAction
import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback
import com.tangem.tangemtest.ucase.domain.paramsManager.IncomingParameter
class PersonalizeParamsManager : BaseParamsManager(PersonalizeAction()) {
override fun createParamsList(): List<IncomingParameter> {
return listOf()
}
override fun invokeMainAction(cardManager: CardManager, callback: ActionCallback) {
action.executeMainAction(getAttrsForAction(cardManager), callback)
}
}

View file

@ -1,11 +1,10 @@
package com.tangem.tangemtest.cardUseCase.domain.paramsManager.managers
package com.tangem.tangemtest.ucase.domain.paramsManager.managers
import com.tangem.CardManager
import com.tangem.common.tlv.TlvTag
import com.tangem.tangemtest.cardUseCase.domain.actions.ScanAction
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.ActionCallback
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.BaseParamsManager
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.IncomingParameter
import com.tangem.tangemtest.ucase.domain.actions.ScanAction
import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback
import com.tangem.tangemtest.ucase.domain.paramsManager.IncomingParameter
class ScanParamsManager : BaseParamsManager(ScanAction()) {
override fun createParamsList(): List<IncomingParameter> {

View file

@ -1,11 +1,10 @@
package com.tangem.tangemtest.cardUseCase.domain.paramsManager.managers
package com.tangem.tangemtest.ucase.domain.paramsManager.managers
import com.tangem.CardManager
import com.tangem.common.tlv.TlvTag
import com.tangem.tangemtest.cardUseCase.domain.actions.SignAction
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.ActionCallback
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.BaseParamsManager
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.IncomingParameter
import com.tangem.tangemtest.ucase.domain.actions.SignAction
import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback
import com.tangem.tangemtest.ucase.domain.paramsManager.IncomingParameter
class SignParamsManager : BaseParamsManager(SignAction()) {
override fun createParamsList(): List<IncomingParameter> {

View file

@ -0,0 +1,15 @@
package com.tangem.tangemtest.ucase.domain.paramsManager.triggers.afterAction
import com.tangem.tangemtest.ucase.domain.paramsManager.IncomingParameter
import com.tangem.tasks.TaskEvent
/**
[REDACTED_AUTHOR]
*
* The After Action Modification class family is intended for modifying parameters (if necessary)
* after calling CardManager.anyAction.
* Returns a list of parameters that have been modified
*/
interface AfterActionModification {
fun modify(taskEvent: TaskEvent<*>, paramsList: List<IncomingParameter>): List<IncomingParameter>
}

View file

@ -1,22 +1,11 @@
package com.tangem.tangemtest.cardUseCase.domain.paramsManager.modifiers
package com.tangem.tangemtest.ucase.domain.paramsManager.triggers.afterAction
import com.tangem.common.tlv.TlvTag
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.IncomingParameter
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.findParameter
import com.tangem.tangemtest.ucase.domain.paramsManager.IncomingParameter
import com.tangem.tangemtest.ucase.domain.paramsManager.findParameter
import com.tangem.tasks.ScanEvent
import com.tangem.tasks.TaskEvent
/**
[REDACTED_AUTHOR]
*
* The After Action Modification class family is intended for modifying parameters (if necessary)
* after calling CardManager.anyAction.
* Returns a list of parameters that have been modified
*/
interface AfterActionModification {
fun modify(taskEvent: TaskEvent<*>, paramsList: List<IncomingParameter>): List<IncomingParameter>
}
class AfterScanModifier : AfterActionModification {
override fun modify(taskEvent: TaskEvent<*>, paramsList: List<IncomingParameter>): List<IncomingParameter> {
val parameter = paramsList.findParameter(TlvTag.CardId) ?: return listOf()

View file

@ -1,7 +1,7 @@
package com.tangem.tangemtest.cardUseCase.domain.paramsManager.modifiers
package com.tangem.tangemtest.ucase.domain.paramsManager.triggers.changeConsequence
import com.tangem.common.tlv.TlvTag
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.IncomingParameter
import com.tangem.tangemtest.ucase.domain.paramsManager.IncomingParameter
/**
[REDACTED_AUTHOR]

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.cardUseCase.resources
package com.tangem.tangemtest.ucase.resources
import com.tangem.tangemtest._arch.structure.Id

View file

@ -1,9 +1,9 @@
package com.tangem.tangemtest.cardUseCase.resources
package com.tangem.tangemtest.ucase.resources
import com.tangem.tangemtest.R
import com.tangem.tangemtest._arch.structure.Id
import com.tangem.tangemtest.cardUseCase.resources.initializers.ActionResources
import com.tangem.tangemtest.cardUseCase.resources.initializers.PersonalizeResources
import com.tangem.tangemtest.ucase.resources.initializers.ActionResources
import com.tangem.tangemtest.ucase.resources.initializers.PersonalizeResources
import ru.dev.gbixahue.eu4d.lib.kotlin.common.BaseTypedHolder
/**

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.cardUseCase.resources
package com.tangem.tangemtest.ucase.resources
/**
[REDACTED_AUTHOR]

View file

@ -1,10 +1,10 @@
package com.tangem.tangemtest.cardUseCase.resources.initializers
package com.tangem.tangemtest.ucase.resources.initializers
import com.tangem.tangemtest.R
import com.tangem.tangemtest._arch.structure.Id
import com.tangem.tangemtest.cardUseCase.resources.ActionRes
import com.tangem.tangemtest.cardUseCase.resources.ActionType
import com.tangem.tangemtest.cardUseCase.resources.ResourceHolder
import com.tangem.tangemtest.ucase.resources.ActionRes
import com.tangem.tangemtest.ucase.resources.ActionType
import com.tangem.tangemtest.ucase.resources.ResourceHolder
/**
[REDACTED_AUTHOR]

View file

@ -1,9 +1,9 @@
package com.tangem.tangemtest.cardUseCase.resources.initializers
package com.tangem.tangemtest.ucase.resources.initializers
import com.tangem.tangemtest.R
import com.tangem.tangemtest._arch.structure.*
import com.tangem.tangemtest.cardUseCase.resources.ResourceHolder
import com.tangem.tangemtest.cardUseCase.resources.Resources
import com.tangem.tangemtest.ucase.resources.ResourceHolder
import com.tangem.tangemtest.ucase.resources.Resources
import ru.dev.gbixahue.eu4d.lib.kotlin.common.TypedHolder
class PersonalizeResources() {

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.cardUseCase.ui.card
package com.tangem.tangemtest.ucase.ui
import android.os.Bundle
import android.view.LayoutInflater
@ -15,11 +15,11 @@ import com.google.android.material.snackbar.Snackbar
import com.tangem.CardManager
import com.tangem.tangem_sdk_new.extensions.init
import com.tangem.tangemtest.R
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.ParamsManager
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.ParamsManagerFactory
import com.tangem.tangemtest.cardUseCase.resources.ActionType
import com.tangem.tangemtest.cardUseCase.resources.MainResourceHolder
import com.tangem.tangemtest.cardUseCase.ui.card.actions.widgets.ParameterWidget
import com.tangem.tangemtest.ucase.domain.paramsManager.ParamsManager
import com.tangem.tangemtest.ucase.domain.paramsManager.ParamsManagerFactory
import com.tangem.tangemtest.ucase.resources.ActionType
import com.tangem.tangemtest.ucase.resources.MainResourceHolder
import com.tangem.tangemtest.ucase.ui.widgets.ParameterWidget
import ru.dev.gbixahue.eu4d.lib.android._android.views.find
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
import ru.dev.gbixahue.eu4d.lib.kotlin.common.LayoutHolder

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.cardUseCase.ui.card
package com.tangem.tangemtest.ucase.ui
import androidx.annotation.UiThread
import androidx.lifecycle.MutableLiveData
@ -9,9 +9,9 @@ import com.tangem.CardManager
import com.tangem.commands.Card
import com.tangem.common.tlv.TlvTag
import com.tangem.tangemtest._arch.SingleLiveEvent
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.IncomingParameter
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.ParamsManager
import com.tangem.tangemtest.commons.performAction
import com.tangem.tangemtest.ucase.domain.paramsManager.IncomingParameter
import com.tangem.tangemtest.ucase.domain.paramsManager.ParamsManager
import com.tangem.tasks.ScanEvent
import com.tangem.tasks.TaskError
import com.tangem.tasks.TaskEvent

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.cardUseCase.ui.card.actions.widgets
package com.tangem.tangemtest.ucase.ui.widgets
import android.text.Editable
import android.text.TextWatcher
@ -11,10 +11,10 @@ import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
import com.tangem.common.tlv.TlvTag
import com.tangem.tangemtest.R
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.IncomingParameter
import com.tangem.tangemtest.cardUseCase.resources.ActionType
import com.tangem.tangemtest.cardUseCase.resources.MainResourceHolder
import com.tangem.tangemtest.cardUseCase.resources.Resources
import com.tangem.tangemtest.ucase.domain.paramsManager.IncomingParameter
import com.tangem.tangemtest.ucase.resources.ActionType
import com.tangem.tangemtest.ucase.resources.MainResourceHolder
import com.tangem.tangemtest.ucase.resources.Resources
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf

View file

@ -1,8 +1,8 @@
package com.tangem.tangemtest.cardUseCase.ui.card.actions
package com.tangem.tangemtest.ucase.variants.depersonalize.ui
import com.tangem.tangemtest.R
import com.tangem.tangemtest.cardUseCase.resources.ActionType
import com.tangem.tangemtest.cardUseCase.ui.card.BaseCardActionFragment
import com.tangem.tangemtest.ucase.resources.ActionType
import com.tangem.tangemtest.ucase.ui.BaseCardActionFragment
/**
[REDACTED_AUTHOR]

View file

@ -1,7 +1,7 @@
package com.tangem.tangemtest.cardUseCase.ui.personalize.converter
package com.tangem.tangemtest.ucase.variants.personalize.converter
import com.tangem.tangemtest._arch.structure.abstraction.Block
import com.tangem.tangemtest.cardUseCase.ui.personalize.dto.TestJsonDto
import com.tangem.tangemtest.ucase.variants.personalize.dto.TestJsonDto
import ru.dev.gbixahue.eu4d.lib.kotlin.common.Converter
class BlockToJsonConverter : Converter<List<Block>, TestJsonDto> {

View file

@ -1,7 +1,7 @@
package com.tangem.tangemtest.cardUseCase.ui.personalize.converter
package com.tangem.tangemtest.ucase.variants.personalize.converter
import com.tangem.tangemtest._arch.structure.abstraction.Block
import com.tangem.tangemtest.cardUseCase.ui.personalize.dto.TestJsonDto
import com.tangem.tangemtest.ucase.variants.personalize.dto.TestJsonDto
/**
[REDACTED_AUTHOR]

View file

@ -1,11 +1,11 @@
package com.tangem.tangemtest.cardUseCase.ui.personalize.converter
package com.tangem.tangemtest.ucase.variants.personalize.converter
import com.tangem.tangemtest._arch.structure.*
import com.tangem.tangemtest._arch.structure.abstraction.Block
import com.tangem.tangemtest._arch.structure.abstraction.ListItemBlock
import com.tangem.tangemtest._arch.structure.impl.*
import com.tangem.tangemtest.cardUseCase.ui.personalize.dto.Ndef
import com.tangem.tangemtest.cardUseCase.ui.personalize.dto.TestJsonDto
import com.tangem.tangemtest.ucase.variants.personalize.dto.Ndef
import com.tangem.tangemtest.ucase.variants.personalize.dto.TestJsonDto
import ru.dev.gbixahue.eu4d.lib.kotlin.common.Converter
class JsonToBlockConverter : Converter<TestJsonDto, List<Block>> {

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.cardUseCase.ui.personalize.dto
package com.tangem.tangemtest.ucase.variants.personalize.dto
class TestJsonDto {

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.cardUseCase.ui.personalize
package com.tangem.tangemtest.ucase.variants.personalize.ui
import android.content.Context
import android.os.Bundle
@ -16,12 +16,12 @@ import com.tangem.CardManager
import com.tangem.tangem_sdk_new.extensions.init
import com.tangem.tangemtest.R
import com.tangem.tangemtest._main.MainViewModel
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.ParamsManager
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.ParamsManagerFactory
import com.tangem.tangemtest.cardUseCase.resources.ActionType
import com.tangem.tangemtest.cardUseCase.ui.card.ActionViewModelFactory
import com.tangem.tangemtest.cardUseCase.ui.card.ParamsViewModel
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.WidgetBuilder
import com.tangem.tangemtest.ucase.domain.paramsManager.ParamsManager
import com.tangem.tangemtest.ucase.domain.paramsManager.ParamsManagerFactory
import com.tangem.tangemtest.ucase.resources.ActionType
import com.tangem.tangemtest.ucase.ui.ActionViewModelFactory
import com.tangem.tangemtest.ucase.ui.ParamsViewModel
import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.WidgetBuilder
import kotlinx.android.synthetic.main.fg_personalize.*
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
import java.io.IOException

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.cardUseCase.ui.personalize
package com.tangem.tangemtest.ucase.variants.personalize.ui
import android.view.View
import androidx.lifecycle.MutableLiveData
@ -7,10 +7,10 @@ import androidx.lifecycle.ViewModelProvider
import com.google.gson.Gson
import com.tangem.tangemtest._arch.structure.abstraction.BaseItem
import com.tangem.tangemtest._arch.structure.abstraction.Block
import com.tangem.tangemtest.cardUseCase.ui.personalize.converter.BlockToJsonConverter
import com.tangem.tangemtest.cardUseCase.ui.personalize.converter.JsonBlockEnDe
import com.tangem.tangemtest.cardUseCase.ui.personalize.converter.JsonToBlockConverter
import com.tangem.tangemtest.cardUseCase.ui.personalize.dto.TestJsonDto
import com.tangem.tangemtest.ucase.variants.personalize.converter.BlockToJsonConverter
import com.tangem.tangemtest.ucase.variants.personalize.converter.JsonBlockEnDe
import com.tangem.tangemtest.ucase.variants.personalize.converter.JsonToBlockConverter
import com.tangem.tangemtest.ucase.variants.personalize.dto.TestJsonDto
/**
[REDACTED_AUTHOR]

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.cardUseCase.ui.personalize.widgets
package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets
import android.view.ViewGroup
import com.tangem.tangemtest._arch.structure.abstraction.BaseItem
@ -6,10 +6,10 @@ import com.tangem.tangemtest._arch.structure.abstraction.Block
import com.tangem.tangemtest._arch.structure.abstraction.Item
import com.tangem.tangemtest._arch.structure.abstraction.ListItemBlock
import com.tangem.tangemtest._arch.structure.impl.*
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.abstraction.ViewWidget
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.impl.StubWidget
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.impl.block.LinearBlockWidget
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.impl.item.*
import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.abstraction.ViewWidget
import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.impl.StubWidget
import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.impl.block.LinearBlockWidget
import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.impl.item.*
class WidgetBuilder {

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.abstraction
package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.abstraction
import android.view.LayoutInflater
import android.view.View
@ -7,8 +7,8 @@ import com.tangem.tangemtest.R
import com.tangem.tangemtest._arch.structure.DataHolder
import com.tangem.tangemtest._arch.structure.abstraction.BaseItem
import com.tangem.tangemtest._arch.structure.abstraction.ItemViewModel
import com.tangem.tangemtest.cardUseCase.resources.MainResourceHolder
import com.tangem.tangemtest.cardUseCase.resources.Resources
import com.tangem.tangemtest.ucase.resources.MainResourceHolder
import com.tangem.tangemtest.ucase.resources.Resources
import ru.dev.gbixahue.eu4d.lib.kotlin.common.LayoutHolder
/**

View file

@ -1,9 +1,9 @@
package com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.impl
package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.impl
import android.view.ViewGroup
import com.tangem.tangemtest.R
import com.tangem.tangemtest._arch.structure.abstraction.ItemViewModel
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.abstraction.BaseBlockWidget
import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.abstraction.BaseBlockWidget
class StubWidget(parent: ViewGroup) : BaseBlockWidget(parent) {
override fun getLayoutId(): Int = R.layout.w_empty

View file

@ -1,11 +1,11 @@
package com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.impl.block
package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.impl.block
import android.view.ViewGroup
import com.tangem.tangemtest.R
import com.tangem.tangemtest._arch.structure.abstraction.BaseItem
import com.tangem.tangemtest._arch.structure.abstraction.ItemViewModel
import com.tangem.tangemtest._arch.structure.abstraction.ListItemBlock
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.abstraction.BaseBlockWidget
import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.abstraction.BaseBlockWidget
/**
[REDACTED_AUTHOR]

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.impl.item
package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.impl.item
import android.view.ViewGroup
import android.widget.TextView
@ -6,8 +6,8 @@ import androidx.transition.AutoTransition
import androidx.transition.TransitionManager
import com.tangem.tangemtest.R
import com.tangem.tangemtest._arch.structure.abstraction.BaseItem
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.abstraction.BaseWidget
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.abstraction.getResDescription
import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.abstraction.BaseWidget
import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.abstraction.getResDescription
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
/**

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.impl.item
package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.impl.item
import android.text.Editable
import android.text.TextWatcher
@ -7,7 +7,7 @@ import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
import com.tangem.tangemtest.R
import com.tangem.tangemtest._arch.structure.impl.EditTextItem
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.abstraction.getResNameId
import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.abstraction.getResNameId
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf
class EditTextWidget(parent: ViewGroup, data: EditTextItem) : DescriptionWidget<String>(parent, data) {

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.impl.item
package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.impl.item
import android.text.Editable
import android.text.TextWatcher
@ -7,7 +7,7 @@ import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
import com.tangem.tangemtest.R
import com.tangem.tangemtest._arch.structure.impl.NumberItem
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.abstraction.getResNameId
import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.abstraction.getResNameId
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf
class NumberWidget(parent: ViewGroup, data: NumberItem) : DescriptionWidget<Number>(parent, data) {

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.impl.item
package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.impl.item
import android.view.View
import android.view.ViewGroup
@ -10,7 +10,7 @@ import com.tangem.tangemtest.R
import com.tangem.tangemtest._arch.structure.impl.KeyValue
import com.tangem.tangemtest._arch.structure.impl.ListItem
import com.tangem.tangemtest._arch.structure.impl.ListValueWrapper
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.abstraction.getResNameId
import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.abstraction.getResNameId
import ru.dev.gbixahue.eu4d.lib.android._android.views.inflate
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf

View file

@ -1,11 +1,11 @@
package com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.impl.item
package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.impl.item
import android.view.ViewGroup
import android.widget.CompoundButton
import androidx.appcompat.widget.SwitchCompat
import com.tangem.tangemtest.R
import com.tangem.tangemtest._arch.structure.impl.BoolItem
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.abstraction.getResNameId
import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.abstraction.getResNameId
class SwitchWidget(parent: ViewGroup, data: BoolItem) : DescriptionWidget<Boolean>(parent, data) {
override fun getLayoutId(): Int = R.layout.w_personalize_item_switch

View file

@ -1,10 +1,10 @@
package com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.impl.item
package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.impl.item
import android.view.ViewGroup
import android.widget.TextView
import com.tangem.tangemtest.R
import com.tangem.tangemtest._arch.structure.impl.TextItem
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.abstraction.getResNameId
import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.abstraction.getResNameId
class TextWidget(parent: ViewGroup, data: TextItem) : DescriptionWidget<String>(parent, data) {
override fun getLayoutId(): Int = R.layout.w_personalize_item_text

View file

@ -1,8 +1,8 @@
package com.tangem.tangemtest.cardUseCase.ui.card.actions
package com.tangem.tangemtest.ucase.variants.scan.ui
import com.tangem.tangemtest.R
import com.tangem.tangemtest.cardUseCase.resources.ActionType
import com.tangem.tangemtest.cardUseCase.ui.card.BaseCardActionFragment
import com.tangem.tangemtest.ucase.resources.ActionType
import com.tangem.tangemtest.ucase.ui.BaseCardActionFragment
/**
[REDACTED_AUTHOR]

View file

@ -1,8 +1,8 @@
package com.tangem.tangemtest.cardUseCase.ui.card.actions
package com.tangem.tangemtest.ucase.variants.sign.ui
import com.tangem.tangemtest.R
import com.tangem.tangemtest.cardUseCase.resources.ActionType
import com.tangem.tangemtest.cardUseCase.ui.card.BaseCardActionFragment
import com.tangem.tangemtest.ucase.resources.ActionType
import com.tangem.tangemtest.ucase.ui.BaseCardActionFragment
/**
[REDACTED_AUTHOR]

View file

@ -51,73 +51,73 @@
<fragment
android:id="@+id/nav_scan"
android:name="com.tangem.tangemtest.cardUseCase.ui.card.actions.ScanActionFragment"
android:name="com.tangem.tangemtest.ucase.variants.scan.ui.ScanActionFragment"
android:label="@string/action_card_scan"
tools:layout="@layout/fg_action_card_scan" />
<fragment
android:id="@+id/nav_sign"
android:name="com.tangem.tangemtest.cardUseCase.ui.card.actions.SignActionFragment"
android:name="com.tangem.tangemtest.ucase.variants.sign.ui.SignActionFragment"
android:label="@string/action_card_sign"
tools:layout="@layout/fg_action_card_sign" />
<fragment
android:id="@+id/nav_personalize"
android:name="com.tangem.tangemtest.cardUseCase.ui.personalize.PersonalizeFragment"
android:name="com.tangem.tangemtest.ucase.variants.personalize.ui.PersonalizeFragment"
android:label="@string/action_personalize"
tools:layout="@layout/fg_personalize" />
<fragment
android:id="@+id/nav_depersonalize"
android:name="com.tangem.tangemtest.cardUseCase.ui.card.actions.DepesonalizeActionFragment"
android:name="com.tangem.tangemtest.ucase.variants.depersonalize.ui.DepesonalizeActionFragment"
android:label="@string/action_depersonalize"
tools:layout="@layout/fg_depersonalize" />
<fragment
android:id="@+id/nav_issuer_read_data"
android:name="com.tangem.tangemtest.cardUseCase.ui.IssuerReadDataActionFragment"
android:name="com.tangem.tangemtest.ucase.ui.IssuerReadDataActionFragment"
android:label="@string/action_issuer_read_data"
tools:layout="@layout/fg_action_issuer_read_data" />
<fragment
android:id="@+id/nav_issuer_write_data"
android:name="com.tangem.tangemtest.cardUseCase.ui.IssuerWriteDataActionFragment"
android:name="com.tangem.tangemtest.ucase.ui.IssuerWriteDataActionFragment"
android:label="@string/action_issuer_write_data"
tools:layout="@layout/fg_action_issuer_write_data" />
<fragment
android:id="@+id/nav_issuer_read_ex_data"
android:name="com.tangem.tangemtest.cardUseCase.ui.IssuerReadExDataActionFragment"
android:name="com.tangem.tangemtest.ucase.ui.IssuerReadExDataActionFragment"
android:label="@string/action_issuer_read_ex_data"
tools:layout="@layout/fg_action_issuer_read_ex_data" />
<fragment
android:id="@+id/nav_issuer_write_ex_data"
android:name="com.tangem.tangemtest.cardUseCase.ui.IssuerWriteExDataActionFragment"
android:name="com.tangem.tangemtest.ucase.ui.IssuerWriteExDataActionFragment"
android:label="@string/action_issuer_write_ex_data"
tools:layout="@layout/fg_action_issuer_write_ex_data" />
<fragment
android:id="@+id/nav_user_read_data"
android:name="com.tangem.tangemtest.cardUseCase.ui.UserReadDataActionFragment"
android:name="com.tangem.tangemtest.ucase.ui.UserReadDataActionFragment"
android:label="@string/action_user_read_data"
tools:layout="@layout/fg_action_user_read_data" />
<fragment
android:id="@+id/nav_user_write_data"
android:name="com.tangem.tangemtest.cardUseCase.ui.UserWriteDataActionFragment"
android:name="com.tangem.tangemtest.ucase.ui.UserWriteDataActionFragment"
android:label="@string/action_user_write_data"
tools:layout="@layout/fg_action_user_write_data" />
<fragment
android:id="@+id/nav_wallet_create"
android:name="com.tangem.tangemtest.cardUseCase.ui.WalletCreateActionFragment"
android:name="com.tangem.tangemtest.ucase.ui.WalletCreateActionFragment"
android:label="@string/action_wallet_create"
tools:layout="@layout/fg_action_wallet_create" />
<fragment
android:id="@+id/nav_wallet_purge"
android:name="com.tangem.tangemtest.cardUseCase.ui.WalletPurgeActionFragment"
android:name="com.tangem.tangemtest.ucase.ui.WalletPurgeActionFragment"
android:label="@string/action_wallet_purge"
tools:layout="@layout/fg_action_wallet_purge" />