Updated on 2026-08-14
This commit is contained in:
parent
acd023b2f5
commit
635f38bb86
10 changed files with 50 additions and 35 deletions
|
|
@ -5,7 +5,6 @@ import android.os.Bundle
|
|||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.tangem.CardManager
|
||||
import com.tangem.tangem_sdk_new.extensions.init
|
||||
import com.tangem.tangemtest.extensions.create
|
||||
import com.tangem.tasks.ScanEvent
|
||||
import com.tangem.tasks.TaskError
|
||||
import com.tangem.tasks.TaskEvent
|
||||
|
|
|
|||
|
|
@ -30,8 +30,8 @@ abstract class BaseViewWidget(
|
|||
) : ViewWidget {
|
||||
|
||||
override val view: View = inflate(getLayoutId(), parent)
|
||||
private var defaultBackground: Drawable = view.background
|
||||
|
||||
private var defaultBackground: Drawable? = view.background
|
||||
|
||||
init {
|
||||
if (item.viewModel.viewState.isHidden) {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package com.tangem.tangemtest._main
|
|||
|
||||
import android.content.res.Resources
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.Menu
|
||||
import androidx.activity.viewModels
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
|
|
@ -12,8 +11,9 @@ import androidx.navigation.findNavController
|
|||
import androidx.navigation.fragment.NavHostFragment
|
||||
import androidx.navigation.ui.AppBarConfiguration
|
||||
import androidx.navigation.ui.navigateUp
|
||||
import androidx.navigation.ui.setupActionBarWithNavController
|
||||
import androidx.navigation.ui.setupWithNavController
|
||||
import com.tangem.tangemtest.R
|
||||
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
|
||||
|
||||
/**
|
||||
[REDACTED_AUTHOR]
|
||||
|
|
@ -34,8 +34,8 @@ class MainActivity : AppCompatActivity() {
|
|||
.findFragmentById(R.id.nav_host_fragment) as NavHostFragment? ?: return
|
||||
|
||||
val navController = host.navController
|
||||
appBarConfiguration = AppBarConfiguration(setOf(R.id.nav_entry_point))
|
||||
setupActionBarWithNavController(navController, appBarConfiguration)
|
||||
appBarConfiguration = AppBarConfiguration(navController.graph)
|
||||
toolbar.setupWithNavController(navController, appBarConfiguration)
|
||||
|
||||
navController.addOnDestinationChangedListener { _, destination, _ ->
|
||||
val dest: String = try {
|
||||
|
|
@ -43,7 +43,7 @@ class MainActivity : AppCompatActivity() {
|
|||
} catch (e: Resources.NotFoundException) {
|
||||
destination.id.toString()
|
||||
}
|
||||
Log.d("NavigationActivity", "Navigated to $dest")
|
||||
Log.d(this, "Navigated to $dest")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,8 @@ import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
|
|||
*/
|
||||
class MainViewModel : ViewModel() {
|
||||
val ldDescriptionSwitch = MutableLiveData<Boolean>(false)
|
||||
val ldResponseEvent = MutableLiveData<TaskEvent<*>>()
|
||||
|
||||
var responseEvent: TaskEvent<*>? = null
|
||||
|
||||
fun switchToggled(state: Boolean) {
|
||||
ldDescriptionSwitch.postValue(state)
|
||||
|
|
@ -20,6 +21,6 @@ class MainViewModel : ViewModel() {
|
|||
Log.d(this, "changeResponseEvent")
|
||||
val reqEvent = event ?: return
|
||||
|
||||
ldResponseEvent.value = reqEvent
|
||||
responseEvent = reqEvent
|
||||
}
|
||||
}
|
||||
|
|
@ -10,7 +10,6 @@ import androidx.navigation.fragment.NavHostFragment.findNavController
|
|||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.tangem.tangemtest.ucase.getDefaultNavigationOptions
|
||||
import com.tangem.tangemtest.ucase.tunnel.SnackbarHolder
|
||||
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
|
||||
import ru.dev.gbixahue.eu4d.lib.kotlin.common.LayoutHolder
|
||||
|
||||
/**
|
||||
|
|
@ -26,7 +25,6 @@ abstract class BaseFragment : Fragment(), LayoutHolder, SnackbarHolder {
|
|||
}
|
||||
|
||||
protected fun navigateTo(navigationId: Int, bundle: Bundle? = null, options: NavOptions? = getDefaultNavigationOptions()) {
|
||||
Log.d(this, "navigateTo id: $navigationId")
|
||||
findNavController(this).navigate(navigationId, bundle, options)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import ru.dev.gbixahue.eu4d.lib.android._android.views.stringFrom
|
|||
/**
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
abstract class BaseAppWidget(parent: ViewGroup, item: Item): BaseViewWidget(parent, item) {
|
||||
abstract class BaseAppWidget(parent: ViewGroup, item: Item) : BaseViewWidget(parent, item) {
|
||||
override fun getName(): String {
|
||||
return when (val id = item.id) {
|
||||
is StringId -> id.value
|
||||
|
|
|
|||
|
|
@ -2,10 +2,15 @@ package com.tangem.tangemtest.ucase.variants.responses
|
|||
|
||||
import android.view.View
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.tangem.commands.Card
|
||||
import com.tangem.commands.SignResponse
|
||||
import com.tangem.commands.personalization.DepersonalizeResponse
|
||||
import com.tangem.tangemtest.R
|
||||
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
|
||||
|
||||
|
|
@ -17,7 +22,7 @@ class ResponseViewModel : ViewModel() {
|
|||
private val convertersHolder = ConvertersStore()
|
||||
private var itemList: List<Item>? = null
|
||||
|
||||
fun createItemList(taskEvent: TaskEvent<*>): List<Item> {
|
||||
fun createItemList(taskEvent: TaskEvent<*>?): List<Item> {
|
||||
Log.d(this, "createItemList: itemList size: ${itemList?.size ?: 0}")
|
||||
|
||||
val event = taskEvent as? TaskEvent.Event<Any> ?: return emptyList()
|
||||
|
|
@ -32,6 +37,18 @@ class ResponseViewModel : ViewModel() {
|
|||
it.viewModel.viewState.descriptionVisibility = if (state) View.VISIBLE else View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
fun determineTitleId(taskEvent: TaskEvent<*>?): Int {
|
||||
val event = taskEvent as? TaskEvent.Event<Any> ?: 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
|
||||
is Card -> R.string.fg_name_response_personalization
|
||||
is DepersonalizeResponse -> R.string.fg_name_response_depersonalization
|
||||
else -> R.string.unknown
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.tangem.tangemtest.ucase.variants.responses.ui
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.LinearLayout
|
||||
|
|
@ -13,17 +14,12 @@ import com.tangem.tangemtest._main.MainViewModel
|
|||
import com.tangem.tangemtest.ucase.ui.BaseFragment
|
||||
import com.tangem.tangemtest.ucase.variants.responses.ResponseViewModel
|
||||
import com.tangem.tangemtest.ucase.variants.responses.ui.widget.ResponseItemBuilder
|
||||
import ru.dev.gbixahue.eu4d.lib.android.global.log.Log
|
||||
|
||||
/**
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
open class ResponseFragment : BaseFragment() {
|
||||
|
||||
companion object Arg {
|
||||
val response = "response"
|
||||
}
|
||||
|
||||
private val mainActivityVM: MainViewModel by activityViewModels()
|
||||
private val selfVM: ResponseViewModel by viewModels()
|
||||
|
||||
|
|
@ -31,22 +27,28 @@ open class ResponseFragment : BaseFragment() {
|
|||
|
||||
override fun getLayoutId(): Int = R.layout.fg_card_response
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
setTittle()
|
||||
return super.onCreateView(inflater, container, savedInstanceState)
|
||||
}
|
||||
|
||||
private fun setTittle() {
|
||||
val titleId = selfVM.determineTitleId(mainActivityVM.responseEvent)
|
||||
activity?.setTitle(titleId)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
mainActivityVM.ldResponseEvent.observe(viewLifecycleOwner, Observer { event ->
|
||||
val builder = WidgetBuilder(ResponseItemBuilder())
|
||||
val itemList = selfVM.createItemList(event)
|
||||
itemList.forEach { builder.build(it, itemContainer) }
|
||||
})
|
||||
subscribeToViewModelChanges()
|
||||
}
|
||||
|
||||
private fun subscribeToViewModelChanges() {
|
||||
Log.d(this, "subscribeToViewModelChanges")
|
||||
buildWidgets()
|
||||
listenDescriptionSwitchChanges()
|
||||
}
|
||||
|
||||
private fun buildWidgets() {
|
||||
val builder = WidgetBuilder(ResponseItemBuilder())
|
||||
val itemList = selfVM.createItemList(mainActivityVM.responseEvent)
|
||||
itemList.forEach { builder.build(it, itemContainer) }
|
||||
}
|
||||
|
||||
private fun listenDescriptionSwitchChanges() {
|
||||
mainActivityVM.ldDescriptionSwitch.observe(viewLifecycleOwner, Observer {
|
||||
|
|
|
|||
|
|
@ -2,13 +2,11 @@ package com.tangem.tangemtest.ucase.variants.scan.ui
|
|||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.lifecycle.Observer
|
||||
import com.tangem.tangemtest.R
|
||||
import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager
|
||||
import com.tangem.tangemtest.ucase.domain.paramsManager.managers.ScanItemsManager
|
||||
import com.tangem.tangemtest.ucase.ui.BaseCardActionFragment
|
||||
import com.tangem.tangemtest.ucase.variants.responses.ui.ResponseFragment
|
||||
|
||||
/**
|
||||
[REDACTED_AUTHOR]
|
||||
|
|
@ -26,10 +24,7 @@ class ScanActionFragment : BaseCardActionFragment() {
|
|||
|
||||
override fun listenReadResponse() {
|
||||
actionVM.seReadResponse.observe(viewLifecycleOwner, Observer {
|
||||
navigateTo(
|
||||
R.id.action_nav_card_action_to_response_screen,
|
||||
bundleOf(Pair(ResponseFragment.response, it))
|
||||
)
|
||||
navigateTo(R.id.action_nav_card_action_to_response_screen)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -2,7 +2,10 @@
|
|||
<string name="app_name">Tangem Development Kit</string>
|
||||
|
||||
<string name="fg_name_entry_point">@string/app_name</string>
|
||||
<string name="current_card_id">"Current card ID: "</string>
|
||||
<string name="fg_name_response_scan">Scan response</string>
|
||||
<string name="fg_name_response_sign">Sign response</string>
|
||||
<string name="fg_name_response_personalization">Personalization response</string>
|
||||
<string name="fg_name_response_depersonalization">Depersonalization response</string>
|
||||
|
||||
<string name="unknown">unknown</string>
|
||||
<string name="switch_description">Docs</string>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue