Updated on 2026-08-14

This commit is contained in:
Tangem 2020-03-25 22:55:01 +03:00
parent 0b575b8e91
commit 86189b8bf6
45 changed files with 262 additions and 230 deletions

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest._main.entry_point
package com.tangem.tangemtest._main.entryPoint
import android.os.Bundle
import android.view.LayoutInflater
@ -16,15 +16,15 @@ import androidx.transition.AutoTransition
import androidx.transition.TransitionManager
import com.tangem.tangemtest.R
import com.tangem.tangemtest._main.MainViewModel
import com.tangem.tangemtest.card_use_cases.resources.ActionType
import com.tangem.tangemtest.card_use_cases.resources.MainResourceHolder
import com.tangem.tangemtest.cardUseCase.resources.ActionType
import com.tangem.tangemtest.cardUseCase.resources.MainResourceHolder
import com.tangem.tangemtest.commons.getDefaultNavigationOptions
import kotlinx.android.synthetic.main.fg_entry_point.*
/**
[REDACTED_AUTHOR]
*/
class EntryPointFragment : Fragment() {
class ActionListFragment : Fragment() {
private val navController: NavController by lazy { findNavController() }
private lateinit var rvActions: RecyclerView

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest._main.entry_point
package com.tangem.tangemtest._main.entryPoint
import android.view.View
import android.view.ViewGroup
@ -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.card_use_cases.resources.ActionRes
import com.tangem.tangemtest.card_use_cases.resources.ActionType
import com.tangem.tangemtest.card_use_cases.resources.MainResourceHolder
import com.tangem.tangemtest.cardUseCase.resources.ActionRes
import com.tangem.tangemtest.cardUseCase.resources.ActionType
import com.tangem.tangemtest.cardUseCase.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,15 +1,15 @@
package com.tangem.tangemtest.card_use_cases.domain.card_action
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.card_use_cases.domain.params_manager.ActionCallback
import com.tangem.tangemtest.card_use_cases.domain.params_manager.IncomingParameter
import com.tangem.tangemtest.card_use_cases.domain.params_manager.findParameter
import com.tangem.tangemtest.card_use_cases.domain.params_manager.modifiers.AfterActionModification
import com.tangem.tangemtest.card_use_cases.domain.params_manager.modifiers.AfterScanModifier
import com.tangem.tangemtest.card_use_cases.domain.params_manager.modifiers.ParamsChangeConsequence
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

View file

@ -0,0 +1,36 @@
package com.tangem.tangemtest.cardUseCase.domain.paramsManager
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
abstract class BaseParamsManager(protected val action: CardAction) : ParamsManager {
protected val paramsList: List<IncomingParameter> by lazy { createParamsList() }
abstract fun createParamsList(): List<IncomingParameter>
override fun parameterChanged(tag: TlvTag, value: Any?, callback: AffectedParamsCallback?) {
if (paramsList.isEmpty()) return
val foundParam = paramsList.findParameter(tag) ?: return
foundParam.data = value
applyChangesByAffectedParams(foundParam, callback)
}
override fun getParams(): MutableList<IncomingParameter> = paramsList.toMutableList()
override fun getActionByTag(tag: TlvTag, cardManager: CardManager): ((ActionCallback) -> Unit)? = null
// Use it if current parameter needs to be affect any other parameters
protected open fun applyChangesByAffectedParams(param: IncomingParameter, callback: AffectedParamsCallback?) {
getChangeConsequence()?.affectChanges(param, paramsList)?.let { callback?.invoke(it) }
}
protected open fun getChangeConsequence(): ParamsChangeConsequence? = null
protected fun getAttrsForAction(cardManager: CardManager)
: AttrForAction = AttrForAction(cardManager, paramsList, getChangeConsequence())
}

View file

@ -1,6 +1,10 @@
package com.tangem.tangemtest.card_use_cases.domain.params_manager
package com.tangem.tangemtest.cardUseCase.domain.paramsManager
import com.tangem.tangemtest.card_use_cases.resources.ActionType
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 ru.dev.gbixahue.eu4d.lib.kotlin.common.BaseTypedHolder
/**

View file

@ -0,0 +1,25 @@
package com.tangem.tangemtest.cardUseCase.domain.paramsManager
import com.tangem.CardManager
import com.tangem.common.tlv.TlvTag
import com.tangem.tasks.TaskEvent
typealias ActionResponse = TaskEvent<*>
typealias AffectedList = List<IncomingParameter>
typealias AffectedParamsCallback = (AffectedList) -> Unit
typealias ActionCallback = (ActionResponse, AffectedList) -> Unit
interface ParamsManager {
fun parameterChanged(tag: TlvTag, value: Any?, callback: AffectedParamsCallback? = null)
fun getParams(): List<IncomingParameter>
fun invokeMainAction(cardManager: CardManager, callback: ActionCallback)
fun getActionByTag(tag: TlvTag, cardManager: CardManager): ((ActionCallback) -> Unit)?
}
class IncomingParameter(val tlvTag: TlvTag, var data: Any? = null)
fun List<IncomingParameter>.findParameter(tag: TlvTag): IncomingParameter? {
return firstOrNull { it.tlvTag == tag }
}

View file

@ -0,0 +1,22 @@
package com.tangem.tangemtest.cardUseCase.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
class DepersonalizeParamsManager : BaseParamsManager(DepesonalizeAction()) {
override fun createParamsList(): List<IncomingParameter> {
return listOf(IncomingParameter(TlvTag.CardId, null))
}
override fun invokeMainAction(cardManager: CardManager, callback: ActionCallback) {
action.executeMainAction(getAttrsForAction(cardManager), callback)
}
override fun getActionByTag(tag: TlvTag, cardManager: CardManager): ((ActionCallback) -> Unit)? {
return action.getActionByTag(tag, getAttrsForAction(cardManager))
}
}

View file

@ -0,0 +1,17 @@
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

@ -0,0 +1,18 @@
package com.tangem.tangemtest.cardUseCase.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
class ScanParamsManager : BaseParamsManager(ScanAction()) {
override fun createParamsList(): List<IncomingParameter> {
return listOf(IncomingParameter(TlvTag.CardId, null))
}
override fun invokeMainAction(cardManager: CardManager, callback: ActionCallback) {
action.executeMainAction(getAttrsForAction(cardManager), callback)
}
}

View file

@ -0,0 +1,25 @@
package com.tangem.tangemtest.cardUseCase.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
class SignParamsManager : BaseParamsManager(SignAction()) {
override fun createParamsList(): List<IncomingParameter> {
return listOf(
IncomingParameter(TlvTag.CardId, null),
IncomingParameter(TlvTag.TransactionOutHash, "Data used for hashing")
)
}
override fun invokeMainAction(cardManager: CardManager, callback: ActionCallback) {
action.executeMainAction(getAttrsForAction(cardManager), callback)
}
override fun getActionByTag(tag: TlvTag, cardManager: CardManager): ((ActionCallback) -> Unit)? {
return action.getActionByTag(tag, getAttrsForAction(cardManager))
}
}

View file

@ -1,8 +1,8 @@
package com.tangem.tangemtest.card_use_cases.domain.params_manager.modifiers
package com.tangem.tangemtest.cardUseCase.domain.paramsManager.modifiers
import com.tangem.common.tlv.TlvTag
import com.tangem.tangemtest.card_use_cases.domain.params_manager.IncomingParameter
import com.tangem.tangemtest.card_use_cases.domain.params_manager.findParameter
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.IncomingParameter
import com.tangem.tangemtest.cardUseCase.domain.paramsManager.findParameter
import com.tangem.tasks.ScanEvent
import com.tangem.tasks.TaskEvent

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.card_use_cases.ui.card
package com.tangem.tangemtest.cardUseCase.ui.card
import android.os.Bundle
import android.view.LayoutInflater
@ -15,13 +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.card_use_cases.domain.params_manager.ParamsManager
import com.tangem.tangemtest.card_use_cases.domain.params_manager.ParamsManagerFactory
import com.tangem.tangemtest.card_use_cases.resources.ActionType
import com.tangem.tangemtest.card_use_cases.resources.MainResourceHolder
import com.tangem.tangemtest.card_use_cases.ui.card.actions.ActionViewModelFactory
import com.tangem.tangemtest.card_use_cases.ui.card.actions.ParamsViewModel
import com.tangem.tangemtest.card_use_cases.ui.card.actions.widgets.ParameterWidget
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 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.card_use_cases.ui.card.actions
package com.tangem.tangemtest.cardUseCase.ui.card
import androidx.annotation.UiThread
import androidx.lifecycle.MutableLiveData
@ -9,8 +9,8 @@ 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.card_use_cases.domain.params_manager.IncomingParameter
import com.tangem.tangemtest.card_use_cases.domain.params_manager.ParamsManager
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.tasks.ScanEvent
import com.tangem.tasks.TaskError

View file

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

View file

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

View file

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

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.card_use_cases.ui.card.actions.widgets
package com.tangem.tangemtest.cardUseCase.ui.card.actions.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.card_use_cases.domain.params_manager.IncomingParameter
import com.tangem.tangemtest.card_use_cases.resources.ActionType
import com.tangem.tangemtest.card_use_cases.resources.MainResourceHolder
import com.tangem.tangemtest.card_use_cases.resources.Resources
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 ru.dev.gbixahue.eu4d.lib.android.global.log.Log
import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.card_use_cases.ui.personalize
package com.tangem.tangemtest.cardUseCase.ui.personalize
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.card_use_cases.domain.params_manager.ParamsManager
import com.tangem.tangemtest.card_use_cases.domain.params_manager.ParamsManagerFactory
import com.tangem.tangemtest.card_use_cases.resources.ActionType
import com.tangem.tangemtest.card_use_cases.ui.card.actions.ActionViewModelFactory
import com.tangem.tangemtest.card_use_cases.ui.card.actions.ParamsViewModel
import com.tangem.tangemtest.card_use_cases.ui.personalize.widgets.WidgetBuilder
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 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.card_use_cases.ui.personalize
package com.tangem.tangemtest.cardUseCase.ui.personalize
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.card_use_cases.ui.personalize.converter.BlockToJsonConverter
import com.tangem.tangemtest.card_use_cases.ui.personalize.converter.JsonBlockEnDe
import com.tangem.tangemtest.card_use_cases.ui.personalize.converter.JsonToBlockConverter
import com.tangem.tangemtest.card_use_cases.ui.personalize.dto.TestJsonDto
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
/**
[REDACTED_AUTHOR]

View file

@ -1,7 +1,7 @@
package com.tangem.tangemtest.card_use_cases.ui.personalize.converter
package com.tangem.tangemtest.cardUseCase.ui.personalize.converter
import com.tangem.tangemtest._arch.structure.abstraction.Block
import com.tangem.tangemtest.card_use_cases.ui.personalize.dto.TestJsonDto
import com.tangem.tangemtest.cardUseCase.ui.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.card_use_cases.ui.personalize.converter
package com.tangem.tangemtest.cardUseCase.ui.personalize.converter
import com.tangem.tangemtest._arch.structure.abstraction.Block
import com.tangem.tangemtest.card_use_cases.ui.personalize.dto.TestJsonDto
import com.tangem.tangemtest.cardUseCase.ui.personalize.dto.TestJsonDto
/**
[REDACTED_AUTHOR]

View file

@ -1,11 +1,11 @@
package com.tangem.tangemtest.card_use_cases.ui.personalize.converter
package com.tangem.tangemtest.cardUseCase.ui.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.card_use_cases.ui.personalize.dto.Ndef
import com.tangem.tangemtest.card_use_cases.ui.personalize.dto.TestJsonDto
import com.tangem.tangemtest.cardUseCase.ui.personalize.dto.Ndef
import com.tangem.tangemtest.cardUseCase.ui.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.card_use_cases.ui.personalize.dto
package com.tangem.tangemtest.cardUseCase.ui.personalize.dto
class TestJsonDto {

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.card_use_cases.ui.personalize.widgets
package com.tangem.tangemtest.cardUseCase.ui.personalize.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.card_use_cases.ui.personalize.widgets.abstraction.ViewWidget
import com.tangem.tangemtest.card_use_cases.ui.personalize.widgets.impl.StubWidget
import com.tangem.tangemtest.card_use_cases.ui.personalize.widgets.impl.block.LinearBlockWidget
import com.tangem.tangemtest.card_use_cases.ui.personalize.widgets.impl.item.*
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.*
class WidgetBuilder {

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.card_use_cases.ui.personalize.widgets.abstraction
package com.tangem.tangemtest.cardUseCase.ui.personalize.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.card_use_cases.resources.MainResourceHolder
import com.tangem.tangemtest.card_use_cases.resources.Resources
import com.tangem.tangemtest.cardUseCase.resources.MainResourceHolder
import com.tangem.tangemtest.cardUseCase.resources.Resources
import ru.dev.gbixahue.eu4d.lib.kotlin.common.LayoutHolder
/**

View file

@ -1,9 +1,9 @@
package com.tangem.tangemtest.card_use_cases.ui.personalize.widgets.impl
package com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.impl
import android.view.ViewGroup
import com.tangem.tangemtest.R
import com.tangem.tangemtest._arch.structure.abstraction.ItemViewModel
import com.tangem.tangemtest.card_use_cases.ui.personalize.widgets.abstraction.BaseBlockWidget
import com.tangem.tangemtest.cardUseCase.ui.personalize.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.card_use_cases.ui.personalize.widgets.impl.block
package com.tangem.tangemtest.cardUseCase.ui.personalize.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.card_use_cases.ui.personalize.widgets.abstraction.BaseBlockWidget
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.abstraction.BaseBlockWidget
/**
[REDACTED_AUTHOR]

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.card_use_cases.ui.personalize.widgets.impl.item
package com.tangem.tangemtest.cardUseCase.ui.personalize.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.card_use_cases.ui.personalize.widgets.abstraction.BaseWidget
import com.tangem.tangemtest.card_use_cases.ui.personalize.widgets.abstraction.getResDescription
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.abstraction.BaseWidget
import com.tangem.tangemtest.cardUseCase.ui.personalize.widgets.abstraction.getResDescription
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
/**

View file

@ -1,4 +1,4 @@
package com.tangem.tangemtest.card_use_cases.ui.personalize.widgets.impl.item
package com.tangem.tangemtest.cardUseCase.ui.personalize.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.card_use_cases.ui.personalize.widgets.abstraction.getResNameId
import com.tangem.tangemtest.cardUseCase.ui.personalize.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.card_use_cases.ui.personalize.widgets.impl.item
package com.tangem.tangemtest.cardUseCase.ui.personalize.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.card_use_cases.ui.personalize.widgets.abstraction.getResNameId
import com.tangem.tangemtest.cardUseCase.ui.personalize.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.card_use_cases.ui.personalize.widgets.impl.item
package com.tangem.tangemtest.cardUseCase.ui.personalize.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.card_use_cases.ui.personalize.widgets.abstraction.getResNameId
import com.tangem.tangemtest.cardUseCase.ui.personalize.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.card_use_cases.ui.personalize.widgets.impl.item
package com.tangem.tangemtest.cardUseCase.ui.personalize.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.card_use_cases.ui.personalize.widgets.abstraction.getResNameId
import com.tangem.tangemtest.cardUseCase.ui.personalize.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.card_use_cases.ui.personalize.widgets.impl.item
package com.tangem.tangemtest.cardUseCase.ui.personalize.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.card_use_cases.ui.personalize.widgets.abstraction.getResNameId
import com.tangem.tangemtest.cardUseCase.ui.personalize.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,113 +0,0 @@
package com.tangem.tangemtest.card_use_cases.domain.params_manager
import com.tangem.CardManager
import com.tangem.common.tlv.TlvTag
import com.tangem.tangemtest.card_use_cases.domain.card_action.*
import com.tangem.tangemtest.card_use_cases.domain.params_manager.modifiers.ParamsChangeConsequence
import com.tangem.tasks.TaskEvent
/**
[REDACTED_AUTHOR]
*
* ParamsManager monitors parameter changes and runs the CardManager command
*/
typealias ActionResponse = TaskEvent<*>
typealias AffectedList = List<IncomingParameter>
typealias AffectedParamsCallback = (AffectedList) -> Unit
typealias ActionCallback = (ActionResponse, AffectedList) -> Unit
class IncomingParameter(val tlvTag: TlvTag, var data: Any? = null)
interface ParamsManager {
fun parameterChanged(tag: TlvTag, value: Any?, callback: AffectedParamsCallback? = null)
fun getParams(): List<IncomingParameter>
fun invokeMainAction(cardManager: CardManager, callback: ActionCallback)
fun getActionByTag(tag: TlvTag, cardManager: CardManager): ((ActionCallback) -> Unit)?
}
fun List<IncomingParameter>.findParameter(tag: TlvTag): IncomingParameter? {
return firstOrNull { it.tlvTag == tag }
}
abstract class BaseParamsManager(protected val action: CardAction) : ParamsManager {
protected val paramsList: List<IncomingParameter> by lazy { createParamsList() }
abstract fun createParamsList(): List<IncomingParameter>
override fun parameterChanged(tag: TlvTag, value: Any?, callback: AffectedParamsCallback?) {
if (paramsList.isEmpty()) return
val foundParam = paramsList.findParameter(tag) ?: return
foundParam.data = value
applyChangesByAffectedParams(foundParam, callback)
}
override fun getParams(): MutableList<IncomingParameter> = paramsList.toMutableList()
override fun getActionByTag(tag: TlvTag, cardManager: CardManager): ((ActionCallback) -> Unit)? = null
// Use it if current parameter needs to be affect any other parameters
protected open fun applyChangesByAffectedParams(param: IncomingParameter, callback: AffectedParamsCallback?) {
getChangeConsequence()?.affectChanges(param, paramsList)?.let { callback?.invoke(it) }
}
protected open fun getChangeConsequence(): ParamsChangeConsequence? = null
protected fun getAttrsForAction(cardManager: CardManager)
: AttrForAction = AttrForAction(cardManager, paramsList, getChangeConsequence())
}
class ScanParamsManager : BaseParamsManager(ScanAction()) {
override fun createParamsList(): List<IncomingParameter> {
return listOf(IncomingParameter(TlvTag.CardId, null))
}
override fun invokeMainAction(cardManager: CardManager, callback: ActionCallback) {
action.executeMainAction(getAttrsForAction(cardManager), callback)
}
}
class SignParamsManager : BaseParamsManager(SignAction()) {
override fun createParamsList(): List<IncomingParameter> {
return listOf(
IncomingParameter(TlvTag.CardId, null),
IncomingParameter(TlvTag.TransactionOutHash, "Data used for hashing")
)
}
override fun invokeMainAction(cardManager: CardManager, callback: ActionCallback) {
action.executeMainAction(getAttrsForAction(cardManager), callback)
}
override fun getActionByTag(tag: TlvTag, cardManager: CardManager): ((ActionCallback) -> Unit)? {
return action.getActionByTag(tag, getAttrsForAction(cardManager))
}
}
class PersonalizeParamsManager : BaseParamsManager(PersonalizeAction()) {
override fun createParamsList(): List<IncomingParameter> {
return listOf()
}
override fun invokeMainAction(cardManager: CardManager, callback: ActionCallback) {
action.executeMainAction(getAttrsForAction(cardManager), callback)
}
}
class DepersonalizeParamsManager : BaseParamsManager(DepesonalizeAction()) {
override fun createParamsList(): List<IncomingParameter> {
return listOf(IncomingParameter(TlvTag.CardId, null))
}
override fun invokeMainAction(cardManager: CardManager, callback: ActionCallback) {
action.executeMainAction(getAttrsForAction(cardManager), callback)
}
override fun getActionByTag(tag: TlvTag, cardManager: CardManager): ((ActionCallback) -> Unit)? {
return action.getActionByTag(tag, getAttrsForAction(cardManager))
}
}

View file

@ -6,7 +6,7 @@
<fragment
android:id="@+id/nav_entry_point"
android:name="com.tangem.tangemtest._main.entry_point.EntryPointFragment"
android:name="com.tangem.tangemtest._main.entryPoint.ActionListFragment"
android:label="@string/fg_name_entry_point"
tools:layout="@layout/fg_entry_point">
@ -51,73 +51,73 @@
<fragment
android:id="@+id/nav_scan"
android:name="com.tangem.tangemtest.card_use_cases.ui.card.actions.ScanActionFragment"
android:name="com.tangem.tangemtest.cardUseCase.ui.card.actions.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.card_use_cases.ui.card.actions.SignActionFragment"
android:name="com.tangem.tangemtest.cardUseCase.ui.card.actions.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.card_use_cases.ui.personalize.PersonalizeFragment"
android:name="com.tangem.tangemtest.cardUseCase.ui.personalize.PersonalizeFragment"
android:label="@string/action_personalize"
tools:layout="@layout/fg_personalize" />
<fragment
android:id="@+id/nav_depersonalize"
android:name="com.tangem.tangemtest.card_use_cases.ui.card.actions.DepesonalizeActionFragment"
android:name="com.tangem.tangemtest.cardUseCase.ui.card.actions.DepesonalizeActionFragment"
android:label="@string/action_depersonalize"
tools:layout="@layout/fg_depersonalize" />
<fragment
android:id="@+id/nav_issuer_read_data"
android:name="com.tangem.tangemtest.card_use_cases.ui.IssuerReadDataActionFragment"
android:name="com.tangem.tangemtest.cardUseCase.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.card_use_cases.ui.IssuerWriteDataActionFragment"
android:name="com.tangem.tangemtest.cardUseCase.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.card_use_cases.ui.IssuerReadExDataActionFragment"
android:name="com.tangem.tangemtest.cardUseCase.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.card_use_cases.ui.IssuerWriteExDataActionFragment"
android:name="com.tangem.tangemtest.cardUseCase.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.card_use_cases.ui.UserReadDataActionFragment"
android:name="com.tangem.tangemtest.cardUseCase.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.card_use_cases.ui.UserWriteDataActionFragment"
android:name="com.tangem.tangemtest.cardUseCase.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.card_use_cases.ui.WalletCreateActionFragment"
android:name="com.tangem.tangemtest.cardUseCase.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.card_use_cases.ui.WalletPurgeActionFragment"
android:name="com.tangem.tangemtest.cardUseCase.ui.WalletPurgeActionFragment"
android:label="@string/action_wallet_purge"
tools:layout="@layout/fg_action_wallet_purge" />