diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/ResponseResources.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/ResponseResources.kt index a9ad0a3d69..989bdce039 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/ResponseResources.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/ResponseResources.kt @@ -5,6 +5,8 @@ import com.tangem.tangemtest.ucase.resources.MainResourceHolder import com.tangem.tangemtest.ucase.resources.Resources import com.tangem.tangemtest.ucase.variants.responses.CardDataId import com.tangem.tangemtest.ucase.variants.responses.CardId +import com.tangem.tangemtest.ucase.variants.responses.DepersonalizeId +import com.tangem.tangemtest.ucase.variants.responses.SignId /** [REDACTED_AUTHOR] @@ -13,6 +15,8 @@ class ResponseResources { fun init(holder: MainResourceHolder) { initCard(holder) initCardData(holder) + initSignResponse(holder) + initDepersonalizeResponse(holder) } private fun initCard(holder: MainResourceHolder) { @@ -50,4 +54,15 @@ class ResponseResources { holder.register(CardDataId.tokenContractAddress, Resources(R.string.response_card_card_data_token_contract_address, R.string.info_response_card_card_data_token_contract_address)) holder.register(CardDataId.tokenDecimal, Resources(R.string.response_card_card_data_token_decimal, R.string.info_response_card_card_data_token_decimal)) } + + private fun initSignResponse(holder: MainResourceHolder) { + holder.register(SignId.cid, Resources(R.string.response_sign_cid, R.string.info_response_sign_cid)) + holder.register(SignId.walletSignedHashes, Resources(R.string.response_sign_wallet_signed_hashes, R.string.info_response_sign_wallet_signed_hashes)) + holder.register(SignId.walletRemainingSignatures, Resources(R.string.response_sign_wallet_remaining_signatures, R.string.info_response_sign_wallet_remaining_signatures)) + holder.register(SignId.signature, Resources(R.string.response_sign_signature, R.string.info_response_sign_signature)) + } + + private fun initDepersonalizeResponse(holder: MainResourceHolder) { + holder.register(DepersonalizeId.isSuccess, Resources(R.string.response_depersonalize_is_success, R.string.info_response_depersonalize_is_success)) + } } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/Ids.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/Ids.kt index 05e0d37d44..2e84215136 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/Ids.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/Ids.kt @@ -29,6 +29,7 @@ enum class CardId : ResponseId { paymentFlowVersion, userCounter, userProtectedCounter, + empty } enum class CardDataId : ResponseId { @@ -41,4 +42,15 @@ enum class CardDataId : ResponseId { tokenSymbol, tokenContractAddress, tokenDecimal, +} + +enum class SignId : ResponseId { + cid, + walletSignedHashes, + walletRemainingSignatures, + signature, +} + +enum class DepersonalizeId: ResponseId { + isSuccess } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/BaseResponseConverter.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/BaseResponseConverter.kt new file mode 100644 index 0000000000..b685392de9 --- /dev/null +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/BaseResponseConverter.kt @@ -0,0 +1,27 @@ +package com.tangem.tangemtest.ucase.variants.responses.converter + +import com.tangem.tangemtest._arch.structure.Id +import com.tangem.tangemtest._arch.structure.abstraction.* +import com.tangem.tangemtest.ucase.domain.responses.ResponseFieldConverter +import com.tangem.tangemtest.ucase.variants.responses.item.TextHeaderItem +import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf + +/** +[REDACTED_AUTHOR] + */ +abstract class BaseResponseConverter : ModelToItems { + protected val fieldConverter = ResponseFieldConverter() + + protected open fun createGroup(id: Id, colorId: Int? = null, addHeaderItem: Boolean = true): ItemGroup { + val group = if (colorId == null) SimpleItemGroup(id) + else SimpleItemGroup(id, BaseItemViewModel(viewState = ViewState(bgColor = colorId))) + + if (addHeaderItem) group.addItem(TextHeaderItem(id, "")) + return group + } + + protected open fun valueToString(value: Any?): String? { + if (value == null) return null + return stringOf(value) + } +} \ No newline at end of file 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 b0c43734b1..64b8edbec5 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,36 +1,30 @@ 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.tangemtest.ucase.variants.responses.DepersonalizeId +import com.tangem.tangemtest.ucase.variants.responses.SignId import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf /** [REDACTED_AUTHOR] */ -class ReadEventConverter : ModelToItems> { - override fun convert(from: CompletionResult.Success): List = CardConverter().convert(from.data) -} - -class SignResponseConverter : ModelToItems { +class SignResponseConverter : BaseResponseConverter() { override fun convert(from: SignResponse): List { return listOf( - TextItem(StringId("CID"), from.cardId), - TextItem(StringId("Wallet signed hashes"), stringOf(from.walletSignedHashes)), - TextItem(StringId("Wallet remaining signatures"), stringOf(from.walletRemainingSignatures)), - TextItem(StringId("Signature"), stringOf(from.signature)) + TextItem(SignId.cid, from.cardId), + TextItem(SignId.walletSignedHashes, valueToString(from.walletSignedHashes)), + TextItem(SignId.walletRemainingSignatures, valueToString(from.walletRemainingSignatures)), + TextItem(SignId.signature, fieldConverter.byteArray(from.signature)) ) } } -class DepersonalizeResponseConverter : ModelToItems { +class DepersonalizeResponseConverter : BaseResponseConverter() { override fun convert(from: DepersonalizeResponse): List { - return listOf(TextItem(StringId("Is success"), stringOf(from.success))) + return listOf(TextItem(DepersonalizeId.isSuccess, stringOf(from.success))) } } \ No newline at end of file diff --git a/tangem-demo/src/main/res/layout/w_personalize_item_header.xml b/tangem-demo/src/main/res/layout/w_personalize_item_header.xml index 43997729b0..f7c15672e3 100644 --- a/tangem-demo/src/main/res/layout/w_personalize_item_header.xml +++ b/tangem-demo/src/main/res/layout/w_personalize_item_header.xml @@ -3,7 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@color/delimiter" + android:background="@color/field_header_background" android:minHeight="@dimen/iw_layout_frame_header_min_height" android:paddingTop="6dp" android:paddingBottom="6dp"> diff --git a/tangem-demo/src/main/res/values/colors.xml b/tangem-demo/src/main/res/values/colors.xml index 180f557ffd..4de83d2669 100644 --- a/tangem-demo/src/main/res/values/colors.xml +++ b/tangem-demo/src/main/res/values/colors.xml @@ -9,6 +9,7 @@ #2B2B2B + #C3C3C3 #888888 #303030 @color/field_info diff --git a/tangem-demo/src/main/res/values/strings_response.xml b/tangem-demo/src/main/res/values/strings_response.xml index e0f0676ca9..825ce94f41 100644 --- a/tangem-demo/src/main/res/values/strings_response.xml +++ b/tangem-demo/src/main/res/values/strings_response.xml @@ -136,4 +136,23 @@ + + + + CID + Wallet signed hashes + Wallet remaining signatures + Signature + + @string/info_response_card_cid + Total number of signed single hashes returned by the card in SIGN command responses since card personalization. Sums up array elements within all SIGN commands. + Remaining number of SIGN operations before the wallet will stop signing transactions. + Array of resulting signatures that App should embed into a raw transaction according to a transaction format of an appropriate blockchain. + + + + Is success + + Is success + \ No newline at end of file