Updated on 2026-08-14

This commit is contained in:
Tangem 2026-04-23 03:02:00 -07:00
parent e1c819d421
commit 53b02cfb10
31 changed files with 286 additions and 346 deletions

View file

@ -51,7 +51,7 @@ class MoshiModule {
.withSubtype(PaymentAccountStatusValueDM.NotCreated::class.java, "not_created")
.withSubtype(PaymentAccountStatusValueDM.UnderReview::class.java, "kyc_status")
.withSubtype(PaymentAccountStatusValueDM.IssuingCard::class.java, "issuing_card")
.withSubtype(PaymentAccountStatusValueDM.ActiveCard::class.java, "active_card")
.withSubtype(PaymentAccountStatusValueDM.ActiveAccount::class.java, "active_account")
.withSubtype(PaymentAccountStatusValueDM.CardIssueFailed::class.java, "card_issue_failed"),
)
.add(

View file

@ -1,7 +1,7 @@
package com.tangem.datasource.local.visa
import com.tangem.datasource.local.datastore.RuntimeDataStore
import com.tangem.domain.models.TangemPayReissueCardFee
import com.tangem.domain.models.pay.TangemPayReissueCardFee
import com.tangem.domain.models.wallet.UserWalletId
internal class DefaultTangemPayReissueCardStore(

View file

@ -1,6 +1,6 @@
package com.tangem.datasource.local.visa
import com.tangem.domain.models.TangemPayReissueCardFee
import com.tangem.domain.models.pay.TangemPayReissueCardFee
import com.tangem.domain.models.wallet.UserWalletId
interface TangemPayReissueCardStore {

View file

@ -4,6 +4,7 @@ package com.tangem.datasource.local.visa.entity
import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass
import com.tangem.domain.models.kyc.KycStatus
import com.tangem.domain.models.serialization.SerializedBigDecimal
import dev.onenowy.moshipolymorphicadapter.PolymorphicAdapterType
import dev.onenowy.moshipolymorphicadapter.annotations.NameLabel
import java.math.BigDecimal
@ -32,18 +33,14 @@ sealed interface PaymentAccountStatusValueDM {
@Json(name = "issuing_card") val marker: Boolean = true,
) : PaymentAccountStatusValueDM
@NameLabel("active_card")
data class ActiveCard(
@Json(name = "active_card") val isLocked: Boolean,
@NameLabel("active_account")
data class ActiveAccount(
@Json(name = "customer_id") val customerId: String,
@Json(name = "card_id") val cardId: String,
@Json(name = "last_four_digits") val lastFourDigits: String,
@Json(name = "currency_code") val currencyCode: String,
@Json(name = "deposit_address") val depositAddress: String?,
@Json(name = "is_pin_set") val isPinSet: Boolean,
@Json(name = "fiat_balance") val fiatBalance: FiatBalanceDM,
@Json(name = "crypto_balance") val cryptoBalance: CryptoBalanceDM,
@Json(name = "display_name") val displayName: String?,
@Json(name = "cards") val cards: List<TangemPayCard>,
) : PaymentAccountStatusValueDM
@NameLabel("card_issue_failed")
@ -66,4 +63,15 @@ sealed interface PaymentAccountStatusValueDM {
@Json(name = "token_contract_address") val tokenContractAddress: String,
@Json(name = "balance") val balance: BigDecimal,
)
@JsonClass(generateAdapter = true)
data class TangemPayCard(
@Json(name = "id") val id: String,
@Json(name = "has_pin_code") val hasPinCode: Boolean,
@Json(name = "display_name") val displayName: String?,
@Json(name = "actual_daily_limit") val actualDailyLimit: SerializedBigDecimal?,
@Json(name = "admin_daily_limit") val adminDailyLimit: SerializedBigDecimal?,
@Json(name = "is_frozen") val isFrozen: Boolean,
@Json(name = "last_digits") val lastDigits: String,
)
}

View file

@ -1,5 +1,6 @@
package com.tangem.datasource.utils
import androidx.datastore.core.CorruptionException
import androidx.datastore.core.Serializer
import com.squareup.moshi.JsonAdapter
import com.squareup.moshi.Moshi
@ -34,7 +35,11 @@ class MoshiDataStoreSerializer<T>(
override suspend fun readFrom(input: InputStream): T {
return input.bufferedReader().use { reader ->
adapter.fromJson(reader.readText()) ?: defaultValue
try {
adapter.fromJson(reader.readText()) ?: defaultValue
} catch (e: Exception) {
throw CorruptionException("Failed to deserialize data", e)
}
}
}