Updated on 2026-08-14
This commit is contained in:
parent
f3f1d88d1b
commit
f57fc16ff6
29 changed files with 107 additions and 264 deletions
|
|
@ -8,6 +8,5 @@ dependencies {
|
|||
/** Project - Domain */
|
||||
implementation(projects.core.utils)
|
||||
implementation(projects.domain.core)
|
||||
implementation(projects.domain.models)
|
||||
implementation(projects.domain.appCurrency.models)
|
||||
}
|
||||
|
|
@ -3,7 +3,6 @@ package com.tangem.domain.appcurrency.extenstions
|
|||
import arrow.core.getOrElse
|
||||
import com.tangem.domain.appcurrency.GetSelectedAppCurrencyUseCase
|
||||
import com.tangem.domain.appcurrency.model.AppCurrency
|
||||
import com.tangem.domain.models.currency.FiatCurrency
|
||||
import kotlinx.coroutines.flow.firstOrNull
|
||||
import kotlinx.coroutines.flow.map
|
||||
|
||||
|
|
@ -14,6 +13,4 @@ suspend fun GetSelectedAppCurrencyUseCase.unwrap(): AppCurrency {
|
|||
}
|
||||
.firstOrNull()
|
||||
?: AppCurrency.Default
|
||||
}
|
||||
|
||||
fun AppCurrency.toFiatCurrency(): FiatCurrency = FiatCurrency(code = code, symbol = symbol)
|
||||
}
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
package com.tangem.domain.models.currency
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* Fiat currency in which a [com.tangem.domain.models.quote.QuoteStatus] is expressed. Plain business
|
||||
* entity without UI metadata (icons, localized name) — those live in `AppCurrency`.
|
||||
*
|
||||
* @property code ISO code, e.g. "USD"
|
||||
* @property symbol display symbol, e.g. "$"
|
||||
*/
|
||||
@Serializable
|
||||
data class FiatCurrency(
|
||||
val code: String,
|
||||
val symbol: String,
|
||||
) {
|
||||
|
||||
companion object {
|
||||
val Default = FiatCurrency(code = "USD", symbol = "$")
|
||||
}
|
||||
}
|
||||
|
|
@ -2,7 +2,6 @@ package com.tangem.domain.models.quote
|
|||
|
||||
import com.tangem.domain.models.StatusSource
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
import com.tangem.domain.models.currency.FiatCurrency
|
||||
import java.math.BigDecimal
|
||||
|
||||
/**
|
||||
|
|
@ -39,15 +38,13 @@ data class QuoteStatus(val rawCurrencyId: CryptoCurrency.RawID, val value: Value
|
|||
* Represents financial information for a specific cryptocurrency, including its fiat exchange rate and
|
||||
* price change.
|
||||
*
|
||||
* @property source status source
|
||||
* @property fiatCurrency fiat currency in which [fiatRate] is expressed
|
||||
* @property fiatRate the current fiat exchange rate for the cryptocurrency
|
||||
* @property fiatRateUSD the current fiat exchange rate in USD for the cryptocurrency
|
||||
* @property priceChange the price change for the cryptocurrency
|
||||
* @property source status source
|
||||
* @property fiatRate the current fiat exchange rate for the cryptocurrency
|
||||
* @property fiatRateUSD the current fiat exchange rate in USD for the cryptocurrency
|
||||
* @property priceChange the price change for the cryptocurrency
|
||||
*/
|
||||
data class Data(
|
||||
override val source: StatusSource,
|
||||
val fiatCurrency: FiatCurrency,
|
||||
val fiatRate: BigDecimal,
|
||||
val fiatRateUSD: BigDecimal,
|
||||
val priceChange: BigDecimal,
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package com.tangem.domain.tokens.mock
|
|||
import arrow.core.nonEmptySetOf
|
||||
import com.tangem.domain.models.StatusSource
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
import com.tangem.domain.models.currency.FiatCurrency
|
||||
import com.tangem.domain.models.quote.QuoteStatus
|
||||
import java.math.BigDecimal
|
||||
|
||||
|
|
@ -13,7 +12,6 @@ internal object MockQuotes {
|
|||
val quote1 = QuoteStatus(
|
||||
rawCurrencyId = MockTokens.token1.id.rawCurrencyId!!,
|
||||
value = QuoteStatus.Data(
|
||||
fiatCurrency = FiatCurrency.Default,
|
||||
fiatRate = BigDecimal("1.23"),
|
||||
fiatRateUSD = BigDecimal("1.23"),
|
||||
priceChange = BigDecimal("0.01"),
|
||||
|
|
@ -24,7 +22,6 @@ internal object MockQuotes {
|
|||
val quote2 = QuoteStatus(
|
||||
rawCurrencyId = MockTokens.token2.id.rawCurrencyId!!,
|
||||
value = QuoteStatus.Data(
|
||||
fiatCurrency = FiatCurrency.Default,
|
||||
fiatRate = BigDecimal("2.34"),
|
||||
fiatRateUSD = BigDecimal("2.34"),
|
||||
priceChange = BigDecimal("-0.02"),
|
||||
|
|
@ -35,7 +32,6 @@ internal object MockQuotes {
|
|||
val quote3 = QuoteStatus(
|
||||
rawCurrencyId = MockTokens.token3.id.rawCurrencyId!!,
|
||||
value = QuoteStatus.Data(
|
||||
fiatCurrency = FiatCurrency.Default,
|
||||
fiatRate = BigDecimal("3.45"),
|
||||
fiatRateUSD = BigDecimal("3.45"),
|
||||
priceChange = BigDecimal("0.03"),
|
||||
|
|
@ -46,7 +42,6 @@ internal object MockQuotes {
|
|||
val quote4 = QuoteStatus(
|
||||
rawCurrencyId = MockTokens.token4.id.rawCurrencyId!!,
|
||||
value = QuoteStatus.Data(
|
||||
fiatCurrency = FiatCurrency.Default,
|
||||
fiatRate = BigDecimal("4.56"),
|
||||
fiatRateUSD = BigDecimal("4.56"),
|
||||
priceChange = BigDecimal("-0.04"),
|
||||
|
|
@ -57,7 +52,6 @@ internal object MockQuotes {
|
|||
val quote5 = QuoteStatus(
|
||||
rawCurrencyId = MockTokens.token5.id.rawCurrencyId!!,
|
||||
value = QuoteStatus.Data(
|
||||
fiatCurrency = FiatCurrency.Default,
|
||||
fiatRate = BigDecimal("5.67"),
|
||||
fiatRateUSD = BigDecimal("5.67"),
|
||||
priceChange = BigDecimal("0.05"),
|
||||
|
|
@ -68,7 +62,6 @@ internal object MockQuotes {
|
|||
val quote6 = QuoteStatus(
|
||||
rawCurrencyId = MockTokens.token6.id.rawCurrencyId!!,
|
||||
value = QuoteStatus.Data(
|
||||
fiatCurrency = FiatCurrency.Default,
|
||||
fiatRate = BigDecimal("6.78"),
|
||||
fiatRateUSD = BigDecimal("6.78"),
|
||||
priceChange = BigDecimal("-0.06"),
|
||||
|
|
@ -79,7 +72,6 @@ internal object MockQuotes {
|
|||
val quote7 = QuoteStatus(
|
||||
rawCurrencyId = MockTokens.token7.id.rawCurrencyId!!,
|
||||
value = QuoteStatus.Data(
|
||||
fiatCurrency = FiatCurrency.Default,
|
||||
fiatRate = BigDecimal("7.89"),
|
||||
fiatRateUSD = BigDecimal("7.89"),
|
||||
priceChange = BigDecimal("0.07"),
|
||||
|
|
@ -90,7 +82,6 @@ internal object MockQuotes {
|
|||
val quote8 = QuoteStatus(
|
||||
rawCurrencyId = MockTokens.token8.id.rawCurrencyId!!,
|
||||
value = QuoteStatus.Data(
|
||||
fiatCurrency = FiatCurrency.Default,
|
||||
fiatRate = BigDecimal("8.90"),
|
||||
fiatRateUSD = BigDecimal("8.90"),
|
||||
priceChange = BigDecimal("-0.08"),
|
||||
|
|
@ -101,7 +92,6 @@ internal object MockQuotes {
|
|||
val quote9 = QuoteStatus(
|
||||
rawCurrencyId = MockTokens.token9.id.rawCurrencyId!!,
|
||||
value = QuoteStatus.Data(
|
||||
fiatCurrency = FiatCurrency.Default,
|
||||
fiatRate = BigDecimal("9.01"),
|
||||
fiatRateUSD = BigDecimal("9.01"),
|
||||
priceChange = BigDecimal("0.09"),
|
||||
|
|
@ -112,7 +102,6 @@ internal object MockQuotes {
|
|||
val quote10 = QuoteStatus(
|
||||
rawCurrencyId = MockTokens.token10.id.rawCurrencyId!!,
|
||||
value = QuoteStatus.Data(
|
||||
fiatCurrency = FiatCurrency.Default,
|
||||
fiatRate = BigDecimal("10.12"),
|
||||
fiatRateUSD = BigDecimal("10.12"),
|
||||
priceChange = BigDecimal("-0.10"),
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import com.tangem.blockchain.common.Blockchain
|
|||
import com.tangem.common.test.domain.token.MockCryptoCurrencyFactory
|
||||
import com.tangem.domain.models.StatusSource
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
import com.tangem.domain.models.currency.FiatCurrency
|
||||
import com.tangem.domain.models.currency.CryptoCurrencyStatus
|
||||
import com.tangem.domain.models.network.NetworkAddress
|
||||
import com.tangem.domain.models.network.NetworkStatus
|
||||
|
|
@ -44,7 +43,6 @@ class CryptoCurrencyStatusFactoryTest {
|
|||
)
|
||||
|
||||
private val fullQuote = QuoteStatus.Data(
|
||||
fiatCurrency = FiatCurrency.Default,
|
||||
fiatRate = 1800.0.toBigDecimal(),
|
||||
fiatRateUSD = 1800.0.toBigDecimal(),
|
||||
priceChange = (-2.5).toBigDecimal(),
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import com.tangem.domain.core.utils.lceError
|
|||
import com.tangem.domain.core.utils.lceLoading
|
||||
import com.tangem.domain.models.StatusSource
|
||||
import com.tangem.domain.models.currency.CryptoCurrencyStatus
|
||||
import com.tangem.domain.models.currency.FiatCurrency
|
||||
import com.tangem.domain.models.network.NetworkAddress
|
||||
import com.tangem.domain.models.quote.PriceChange
|
||||
import com.tangem.domain.tokens.mock.MockTokens
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import com.tangem.domain.models.StatusSource
|
|||
import com.tangem.domain.models.TotalFiatBalance
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
import com.tangem.domain.models.currency.CryptoCurrencyStatus
|
||||
import com.tangem.domain.models.currency.FiatCurrency
|
||||
import com.tangem.domain.models.network.NetworkAddress
|
||||
import com.tangem.domain.models.staking.BalanceItem
|
||||
import com.tangem.domain.models.staking.BalanceType
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import com.tangem.domain.account.models.AccountList
|
|||
import com.tangem.domain.account.supplier.SingleAccountListSupplier
|
||||
import com.tangem.domain.models.StatusSource
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
import com.tangem.domain.models.currency.FiatCurrency
|
||||
import com.tangem.domain.models.currency.CryptoCurrencyStatus
|
||||
import com.tangem.domain.models.network.Network
|
||||
import com.tangem.domain.models.network.NetworkAddress
|
||||
|
|
@ -82,7 +81,6 @@ class YieldSupplyMinAmountUseCaseTest {
|
|||
QuoteStatus(
|
||||
rawCurrencyId = CryptoCurrency.RawID("polygon-ecosystem-token"),
|
||||
value = QuoteStatus.Data(
|
||||
fiatCurrency = FiatCurrency.Default,
|
||||
source = StatusSource.ACTUAL,
|
||||
fiatRate = nativeFiatRate,
|
||||
fiatRateUSD = nativeFiatRate,
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import arrow.core.Either
|
|||
import com.google.common.truth.Truth.assertThat
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
import com.tangem.domain.models.currency.CryptoCurrencyStatus
|
||||
import com.tangem.domain.models.currency.FiatCurrency
|
||||
import com.tangem.domain.models.network.Network
|
||||
import com.tangem.domain.models.network.NetworkAddress
|
||||
import com.tangem.domain.models.wallet.UserWalletId
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import com.tangem.domain.account.models.AccountList
|
|||
import com.tangem.domain.account.supplier.SingleAccountListSupplier
|
||||
import com.tangem.domain.models.StatusSource
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
import com.tangem.domain.models.currency.FiatCurrency
|
||||
import com.tangem.domain.models.currency.CryptoCurrencyStatus
|
||||
import com.tangem.domain.models.network.Network
|
||||
import com.tangem.domain.models.network.NetworkAddress
|
||||
|
|
@ -78,7 +77,6 @@ class YieldSupplyGetCurrentFeeUseCaseTest {
|
|||
QuoteStatus(
|
||||
rawCurrencyId = nativeCoin.id.rawCurrencyId!!,
|
||||
value = QuoteStatus.Data(
|
||||
fiatCurrency = FiatCurrency.Default,
|
||||
source = StatusSource.ACTUAL,
|
||||
fiatRate = nativeFiatRate,
|
||||
fiatRateUSD = nativeFiatRate,
|
||||
|
|
@ -131,7 +129,6 @@ class YieldSupplyGetCurrentFeeUseCaseTest {
|
|||
QuoteStatus(
|
||||
rawCurrencyId = nativeCoin.id.rawCurrencyId!!,
|
||||
value = QuoteStatus.Data(
|
||||
fiatCurrency = FiatCurrency.Default,
|
||||
source = StatusSource.ACTUAL,
|
||||
fiatRate = nativeFiatRate,
|
||||
fiatRateUSD = nativeFiatRate,
|
||||
|
|
@ -259,7 +256,6 @@ class YieldSupplyGetCurrentFeeUseCaseTest {
|
|||
QuoteStatus(
|
||||
rawCurrencyId = nativeCoin.id.rawCurrencyId!!,
|
||||
value = QuoteStatus.Data(
|
||||
fiatCurrency = FiatCurrency.Default,
|
||||
source = StatusSource.ACTUAL,
|
||||
fiatRate = BigDecimal.ZERO, // non-positive
|
||||
fiatRateUSD = BigDecimal.ZERO,
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import com.google.common.truth.Truth.assertThat
|
|||
import com.tangem.domain.appcurrency.model.AppCurrency
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
import com.tangem.domain.models.currency.CryptoCurrencyStatus
|
||||
import com.tangem.domain.models.currency.FiatCurrency
|
||||
import com.tangem.domain.models.network.Network
|
||||
import com.tangem.domain.models.network.NetworkAddress
|
||||
import org.junit.jupiter.api.Test
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import com.tangem.core.ui.format.bigdecimal.format
|
|||
import com.tangem.domain.appcurrency.model.AppCurrency
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
import com.tangem.domain.models.currency.CryptoCurrencyStatus
|
||||
import com.tangem.domain.models.currency.FiatCurrency
|
||||
import com.tangem.domain.models.network.Network
|
||||
import com.tangem.domain.models.network.NetworkAddress
|
||||
import com.tangem.domain.yield.supply.YieldSupplyRepository
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue