From 82c48330e20773a0061dce648918a1fd9397e511 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 10 Apr 2020 15:16:11 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tangem/tangemtest/_main/MainViewModel.kt | 10 +- .../managers/PersonalizationItemsManager.kt | 6 +- .../domain/responses/ResponseJsonConverter.kt | 13 +- .../tangemtest/ucase/ui/ActionViewModel.kt | 153 +++++++++--------- .../ucase/ui/BaseCardActionFragment.kt | 28 ++-- .../personalize/ui/PersonalizationFragment.kt | 20 +-- .../variants/responses/ResponseViewModel.kt | 20 ++- .../responses/converter/ConvertersStore.kt | 3 +- .../responses/converter/SimpleConverters.kt | 7 +- .../variants/responses/ui/ResponseFragment.kt | 6 +- .../variants/scan/ui/ScanActionFragment.kt | 16 +- 11 files changed, 131 insertions(+), 151 deletions(-) diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/MainViewModel.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/_main/MainViewModel.kt index a599bcb479..a50da93a68 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/MainViewModel.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/_main/MainViewModel.kt @@ -2,7 +2,7 @@ package com.tangem.tangemtest._main import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel -import com.tangem.tasks.TaskEvent +import com.tangem.commands.CommandResponse import ru.dev.gbixahue.eu4d.lib.android.global.log.Log /** @@ -11,16 +11,16 @@ import ru.dev.gbixahue.eu4d.lib.android.global.log.Log class MainViewModel : ViewModel() { val ldDescriptionSwitch = MutableLiveData(false) - var responseEvent: TaskEvent<*>? = null + var commandResponse: CommandResponse? = null fun switchToggled(state: Boolean) { ldDescriptionSwitch.postValue(state) } - fun changeResponseEvent(event: TaskEvent<*>?) { + fun changeResponseEvent(commandResponse: CommandResponse?) { Log.d(this, "changeResponseEvent") - val reqEvent = event ?: return + val response = commandResponse ?: return - responseEvent = reqEvent + this.commandResponse = response } } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt index e67e278aca..1652cd2833 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt @@ -2,7 +2,7 @@ package com.tangem.tangemtest.ucase.domain.paramsManager.managers import androidx.lifecycle.Lifecycle import androidx.lifecycle.OnLifecycleEvent -import com.tangem.CardManager +import com.tangem.TangemSdk import com.tangem.tangemtest.commons.Store import com.tangem.tangemtest.ucase.domain.actions.PersonalizeAction import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback @@ -23,8 +23,8 @@ class PersonalizationItemsManager( setItems(converter.convert(config)) } - 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) } @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/responses/ResponseJsonConverter.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/responses/ResponseJsonConverter.kt index 84695d90fb..d54bc08a5d 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/responses/ResponseJsonConverter.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/responses/ResponseJsonConverter.kt @@ -1,12 +1,8 @@ package com.tangem.tangemtest.ucase.domain.responses import com.google.gson.* -import com.tangem.commands.ProductMask -import com.tangem.commands.Settings -import com.tangem.commands.SettingsMask -import com.tangem.commands.SigningMethod +import com.tangem.commands.* import com.tangem.common.extensions.toHexString -import com.tangem.tasks.TaskEvent import java.lang.reflect.Type import java.text.DateFormat import java.util.* @@ -29,12 +25,7 @@ class ResponseJsonConverter { return builder.create() } - fun convertTaskEvent(task: TaskEvent<*>?): String = gson.toJson(task) - - fun convertEvent(task: TaskEvent<*>?): String { - val event = task as? TaskEvent.Event ?: "" - return gson.toJson(event) - } + fun convertResponse(response: CommandResponse?): String = gson.toJson(response) } class ByteTypeAdapter : JsonSerializer { diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/ActionViewModel.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/ActionViewModel.kt index f0fc4deec9..ea37c478fd 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/ActionViewModel.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/ActionViewModel.kt @@ -14,13 +14,9 @@ import com.tangem.tangemtest._arch.structure.Id import com.tangem.tangemtest._arch.structure.Payload import com.tangem.tangemtest._arch.structure.abstraction.Item import com.tangem.tangemtest._arch.structure.abstraction.iterate -import com.tangem.tangemtest.commons.performAction import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager import com.tangem.tangemtest.ucase.domain.responses.ResponseJsonConverter 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 /** @@ -32,9 +28,9 @@ class ActionViewModelFactory(private val manager: ItemsManager) : ViewModelProvi class ActionViewModel(private val itemsManager: ItemsManager) : ViewModel(), LifecycleObserver { - val seResponseEvent = SingleLiveEvent>() - val seReadResponse = SingleLiveEvent() - val seResponse = SingleLiveEvent() + val seResponse = SingleLiveEvent() + val seResponseData = SingleLiveEvent() + val seResponseCardData = SingleLiveEvent() val ldItemList = MutableLiveData(itemsManager.getItems()) val seError: MutableLiveData = SingleLiveEvent() @@ -58,88 +54,87 @@ class ActionViewModel(private val itemsManager: ItemsManager) : ViewModel(), Lif //invokes Scan, Sign etc... fun invokeMainAction() { - performAction(itemsManager, tangemSdk) { paramsManager, cardManager -> - performAction(itemsManager, tangemSdk, { paramsManager, cardManager -> - paramsManager.invokeMainAction(tangemSdk) { response, listOfChangedParams -> - notifier.handleActionResult(response, listOfChangedParams) - } - }) + if (!::tangemSdk.isInitialized) { + Log.e(this, "TangemSdk isn't initialized") + return } - - fun getItemAction(id: Id): (() -> Unit)? { - val itemFunction = itemsManager.getActionByTag(id, tangemSdk) ?: return null - - return { - itemFunction { response, listOfChangedParams -> - notifier.handleActionResult(response, listOfChangedParams) - } - } - } - - fun toggleDescriptionVisibility(state: Boolean) { - ldItemList.value?.iterate { - it.viewModel.viewState.descriptionVisibility = if (state) View.VISIBLE else View.GONE - } - } - - fun attachToPayload(payload: Payload) { - itemsManager.attachPayload(payload) - } - - @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) - fun viewOnDestroy() { - val keyList = mutableListOf() - itemsManager.payload.filterValues { it is ViewScreen }.forEach { keyList.add(it.key) } - keyList.forEach { itemsManager.payload.remove(it) } + itemsManager.invokeMainAction(tangemSdk) { response, listOfChangedParams -> + notifier.handleActionResult(response, listOfChangedParams) } } - internal class Notifier(private val vm: ActionViewModel) { + fun getItemAction(id: Id): (() -> Unit)? { + val itemFunction = itemsManager.getActionByTag(id, tangemSdk) ?: return null - private var notShowedError: SessionError? = null - private val gson: Gson = ResponseJsonConverter().gson - - fun handleActionResult(response: CompletionResult<*>, list: List) { - if (list.isNotEmpty()) notifyItemsChanged(list) - handleResponse(response) - } - - @UiThread - fun notifyItemsChanged(list: List) { - vm.seChangedItems.postValue(list) - } - - fun handleResponse(response: CompletionResult<*>) { - val taskEvent = response as? CompletionResult ?: return - - when (commandResponse) { - is CompletionResult.Success -> handleDataEvent(commandResponse.data) - is CompletionResult.Failure -> handleError(commandResponse.error) + return { + itemFunction { response, listOfChangedParams -> + notifier.handleActionResult(response, listOfChangedParams) } } + } - private fun handleDataEvent(event: CommandResponse?) { - when (event) { - is ScanEvent.OnReadEvent -> vm.seReadResponse.postValue(gson.toJson(event)) - is ScanEvent.OnVerifyEvent -> { + fun toggleDescriptionVisibility(state: Boolean) { + ldItemList.value?.iterate { + it.viewModel.viewState.descriptionVisibility = if (state) View.VISIBLE else View.GONE + } + } + + fun attachToPayload(payload: Payload) { + itemsManager.attachPayload(payload) + } + + @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) + fun viewOnDestroy() { + val keyList = mutableListOf() + itemsManager.payload.filterValues { it is ViewScreen }.forEach { keyList.add(it.key) } + keyList.forEach { itemsManager.payload.remove(it) } + } +} + +internal class Notifier(private val vm: ActionViewModel) { + + private var notShowedError: SessionError? = null + private val gson: Gson = ResponseJsonConverter().gson + + fun handleActionResult(result: CompletionResult<*>, list: List) { + if (list.isNotEmpty()) notifyItemsChanged(list) + handleCompletionResult(result) + } + + @UiThread + fun notifyItemsChanged(list: List) { + vm.seChangedItems.postValue(list) + } + + fun handleCompletionResult(result: CompletionResult<*>) { + val commandResponse = result as? CompletionResult ?: return + + when (commandResponse) { + is CompletionResult.Success -> handleData(commandResponse.data) + is CompletionResult.Failure -> handleError(commandResponse.error) + } + } + + private fun handleData(event: CommandResponse?) { + vm.seResponse.postValue(event) + when (event) { + is Card -> vm.seResponseCardData.postValue(event) + else -> vm.seResponseData.postValue(event) + } + } + + 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 -> vm.seResponse.postValue(gson.toJson(event)) - } - } - - private fun handleCompletionEvent(error: SessionError) { - 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 - } - } - 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/ui/BaseCardActionFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseCardActionFragment.kt index 36acc2c199..7e50f755ef 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 @@ -9,9 +9,8 @@ import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels 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.TangemSdk +import com.tangem.commands.Card import com.tangem.tangem_sdk_new.extensions.init import com.tangem.tangemtest.R import com.tangem.tangemtest._arch.structure.Id @@ -77,28 +76,37 @@ abstract class BaseCardActionFragment : BaseFragment(), ActionView { protected open fun subscribeToViewModelChanges() { Log.d(this, "subscribeToViewModelChanges") - listenEvent() - listenReadResponse() listenResponse() + listenResponseData() + listenResponseCardData() listenError() listenChangedItems() listenDescriptionSwitchChanges() } - protected open fun listenEvent() { - actionVM.seResponseEvent.observe(viewLifecycleOwner, Observer { + private fun listenResponse() { + actionVM.seResponse.observe(viewLifecycleOwner, Observer { + Log.d(this, "listen response: $it") mainActivityVM.changeResponseEvent(it) }) } - protected open fun listenReadResponse() {} - - protected open fun listenResponse() { - actionVM.seResponse.observe(viewLifecycleOwner, Observer { + protected open fun listenResponseData() { + actionVM.seResponseData.observe(viewLifecycleOwner, Observer { + Log.d(this, "listen responseData: $it") navigateTo(R.id.action_nav_card_action_to_response_screen) }) } + protected open fun listenResponseCardData() { + actionVM.seResponseCardData.observe(viewLifecycleOwner, Observer { + Log.d(this, "listen responseCardData: $it") + responseCardDataHandled(it) + }) + } + + protected open fun responseCardDataHandled(card: Card?) {} + protected open fun listenError() { actionVM.seError.observe(viewLifecycleOwner, Observer { showSnackbar(it) }) } diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizationFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizationFragment.kt index d0216c725b..4b950d8b57 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizationFragment.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizationFragment.kt @@ -3,6 +3,7 @@ package com.tangem.tangemtest.ucase.variants.personalize.ui import android.os.Bundle import android.view.View import androidx.lifecycle.Observer +import com.tangem.commands.Card import com.tangem.tangemtest.R import com.tangem.tangemtest._arch.structure.Id import com.tangem.tangemtest._arch.structure.abstraction.Item @@ -52,20 +53,6 @@ class PersonalizationFragment : BaseCardActionFragment() { }) } - override fun subscribeToViewModelChanges() { - Log.d(this, "subscribeToViewModelChanges") - listenEvent() - listenError() - listenDescriptionSwitchChanges() - } - - override fun listenEvent() { - actionVM.seResponseEvent.observe(viewLifecycleOwner, Observer { - mainActivityVM.changeResponseEvent(it) - navigateTo(R.id.action_nav_card_action_to_response_screen) - }) - } - override fun showSnackbar(id: Id, additionalHandler: ((Id) -> Int)?) { super.showSnackbar(id) { when (id) { @@ -75,4 +62,9 @@ class PersonalizationFragment : BaseCardActionFragment() { } } } + + override fun responseCardDataHandled(card: Card?) { + super.responseCardDataHandled(card) + navigateTo(R.id.action_nav_card_action_to_response_screen) + } } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ResponseViewModel.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ResponseViewModel.kt index 6216ffbddc..dae8eef20d 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ResponseViewModel.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ResponseViewModel.kt @@ -3,6 +3,7 @@ package com.tangem.tangemtest.ucase.variants.responses import android.view.View import androidx.lifecycle.ViewModel import com.tangem.commands.Card +import com.tangem.commands.CommandResponse import com.tangem.commands.SignResponse import com.tangem.commands.personalization.DepersonalizeResponse import com.tangem.tangemtest.R @@ -10,8 +11,6 @@ import com.tangem.tangemtest._arch.structure.abstraction.Item import com.tangem.tangemtest._arch.structure.abstraction.ModelToItems import com.tangem.tangemtest._arch.structure.abstraction.iterate import com.tangem.tangemtest.ucase.variants.responses.converter.ConvertersStore -import com.tangem.tasks.ScanEvent -import com.tangem.tasks.TaskEvent import ru.dev.gbixahue.eu4d.lib.android.global.log.Log /** @@ -22,13 +21,13 @@ class ResponseViewModel : ViewModel() { private val convertersHolder = ConvertersStore() private var itemList: List? = null - fun createItemList(taskEvent: TaskEvent<*>?): List { + fun createItemList(response: CommandResponse?): List { Log.d(this, "createItemList: itemList size: ${itemList?.size ?: 0}") - val event = taskEvent as? TaskEvent.Event ?: return emptyList() - val type = event.data::class.java + val responseEvent = response ?: return emptyList() + val type = responseEvent::class.java val converter = convertersHolder.get(type) as? ModelToItems ?: return emptyList() - itemList = converter.convert(event.data) + itemList = converter.convert(responseEvent) return itemList!! } @@ -38,13 +37,12 @@ class ResponseViewModel : ViewModel() { } } - fun determineTitleId(taskEvent: TaskEvent<*>?): Int { - val event = taskEvent as? TaskEvent.Event ?: return R.string.unknown + fun determineTitleId(response: CommandResponse?): Int { + val responseEvent = response ?: return R.string.unknown - return when (event.data) { - is ScanEvent.OnReadEvent -> R.string.fg_name_response_scan - is SignResponse -> R.string.fg_name_response_sign + return when (responseEvent) { is Card -> R.string.fg_name_response_personalization + is SignResponse -> R.string.fg_name_response_sign is DepersonalizeResponse -> R.string.fg_name_response_depersonalization else -> R.string.unknown } diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/ConvertersStore.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/ConvertersStore.kt index 9b1dc76a49..067d47027c 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/ConvertersStore.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/ConvertersStore.kt @@ -3,13 +3,12 @@ package com.tangem.tangemtest.ucase.variants.responses.converter import com.tangem.commands.Card import com.tangem.commands.SignResponse import com.tangem.commands.personalization.DepersonalizeResponse -import com.tangem.tasks.ScanEvent import ru.dev.gbixahue.eu4d.lib.kotlin.common.BaseTypedHolder import java.lang.reflect.Type class ConvertersStore : BaseTypedHolder() { init { - register(ScanEvent.OnReadEvent::class.java, ReadEventConverter()) +// register(CompletionResult.Success::class.java, ReadEventConverter()) register(SignResponse::class.java, SignResponseConverter()) register(Card::class.java, CardConverter()) register(DepersonalizeResponse::class.java, DepersonalizeResponseConverter()) diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/SimpleConverters.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/SimpleConverters.kt index a1c997465b..b0c43734b1 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/SimpleConverters.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/SimpleConverters.kt @@ -1,19 +1,20 @@ package com.tangem.tangemtest.ucase.variants.responses.converter +import com.tangem.commands.Card import com.tangem.commands.SignResponse import com.tangem.commands.personalization.DepersonalizeResponse +import com.tangem.common.CompletionResult import com.tangem.tangemtest._arch.structure.StringId import com.tangem.tangemtest._arch.structure.abstraction.Item import com.tangem.tangemtest._arch.structure.abstraction.ModelToItems import com.tangem.tangemtest._arch.structure.impl.TextItem -import com.tangem.tasks.ScanEvent import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf /** [REDACTED_AUTHOR] */ -class ReadEventConverter : ModelToItems { - override fun convert(from: ScanEvent.OnReadEvent): List = CardConverter().convert(from.card) +class ReadEventConverter : ModelToItems> { + override fun convert(from: CompletionResult.Success): List = CardConverter().convert(from.data) } class SignResponseConverter : ModelToItems { diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/ResponseFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/ResponseFragment.kt index 4477f12894..a42d51e237 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/ResponseFragment.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/ResponseFragment.kt @@ -33,7 +33,7 @@ open class ResponseFragment : BaseFragment() { } private fun setTittle() { - val titleId = selfVM.determineTitleId(mainActivityVM.responseEvent) + val titleId = selfVM.determineTitleId(mainActivityVM.commandResponse) activity?.setTitle(titleId) } @@ -47,7 +47,7 @@ open class ResponseFragment : BaseFragment() { private fun buildWidgets() { val builder = WidgetBuilder(ResponseItemBuilder()) - val itemList = selfVM.createItemList(mainActivityVM.responseEvent) + val itemList = selfVM.createItemList(mainActivityVM.commandResponse) itemList.forEach { builder.build(it, itemContainer) } } @@ -67,7 +67,7 @@ open class ResponseFragment : BaseFragment() { override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.action_share -> { - shareText(ResponseJsonConverter().convertEvent(mainActivityVM.responseEvent)) + shareText(ResponseJsonConverter().convertResponse(mainActivityVM.commandResponse)) } } return super.onOptionsItemSelected(item) diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/scan/ui/ScanActionFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/scan/ui/ScanActionFragment.kt index 1e5ed5eb9b..90e3931375 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/scan/ui/ScanActionFragment.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/scan/ui/ScanActionFragment.kt @@ -1,8 +1,6 @@ package com.tangem.tangemtest.ucase.variants.scan.ui -import android.os.Bundle -import android.view.View -import androidx.lifecycle.Observer +import com.tangem.commands.Card import com.tangem.tangemtest.R import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager import com.tangem.tangemtest.ucase.domain.paramsManager.managers.ScanItemsManager @@ -17,14 +15,12 @@ class ScanActionFragment : BaseCardActionFragment() { override fun getLayoutId(): Int = R.layout.fg_action_card_scan - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - enableActionFab(true) + override fun initFab() { + actionFab.setOnClickListener { actionVM.invokeMainAction() } } - override fun listenReadResponse() { - actionVM.seReadResponse.observe(viewLifecycleOwner, Observer { - navigateTo(R.id.action_nav_card_action_to_response_screen) - }) + override fun responseCardDataHandled(card: Card?) { + super.responseCardDataHandled(card) + navigateTo(R.id.action_nav_card_action_to_response_screen) } } \ No newline at end of file