Updated on 2026-08-14

This commit is contained in:
Tangem 2020-04-15 15:06:37 +03:00
parent 16a60b16ae
commit a314353f7f
7 changed files with 84 additions and 16 deletions

View file

@ -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))
}
}

View file

@ -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
}

View file

@ -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<M> : ModelToItems<M> {
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)
}
}

View file

@ -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<CompletionResult.Success<Card>> {
override fun convert(from: CompletionResult.Success<Card>): List<Item> = CardConverter().convert(from.data)
}
class SignResponseConverter : ModelToItems<SignResponse> {
class SignResponseConverter : BaseResponseConverter<SignResponse>() {
override fun convert(from: SignResponse): List<Item> {
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<DepersonalizeResponse> {
class DepersonalizeResponseConverter : BaseResponseConverter<DepersonalizeResponse>() {
override fun convert(from: DepersonalizeResponse): List<Item> {
return listOf(TextItem(StringId("Is success"), stringOf(from.success)))
return listOf(TextItem(DepersonalizeId.isSuccess, stringOf(from.success)))
}
}

View file

@ -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">

View file

@ -9,6 +9,7 @@
<color name="action_name">#2B2B2B</color>
<color name="field_header_background">#C3C3C3</color>
<color name="field_info">#888888</color>
<color name="field_content">#303030</color>
<color name="field_description">@color/field_info</color>

View file

@ -136,4 +136,23 @@
<string name="info_response_card_card_data_token_symbol"></string>
<string name="info_response_card_card_data_token_contract_address"></string>
<string name="info_response_card_card_data_token_decimal"></string>
<!-- Field names - Response: Sign -->
<string name="response_sign_cid">CID</string>
<string name="response_sign_wallet_signed_hashes">Wallet signed hashes</string>
<string name="response_sign_wallet_remaining_signatures">Wallet remaining signatures</string>
<string name="response_sign_signature">Signature</string>
<string name="info_response_sign_cid">@string/info_response_card_cid</string>
<string name="info_response_sign_wallet_signed_hashes">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.</string>
<string name="info_response_sign_wallet_remaining_signatures">Remaining number of SIGN operations before the wallet will stop signing transactions.</string>
<string name="info_response_sign_signature">Array of resulting signatures that App should embed into a raw transaction according to a transaction format of an appropriate blockchain.</string>
<!-- Field names - Response: Depersonalize -->
<string name="response_depersonalize_is_success">Is success</string>
<string name="info_response_depersonalize_is_success">Is success</string>
</resources>