diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/markets/models/response/TokenMarketInfoResponse.kt b/core/datasource/src/main/java/com/tangem/datasource/api/markets/models/response/TokenMarketInfoResponse.kt index fb8f19935b..64b168072f 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/markets/models/response/TokenMarketInfoResponse.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/markets/models/response/TokenMarketInfoResponse.kt @@ -30,6 +30,8 @@ data class TokenMarketInfoResponse( val links: Links?, @Json(name = "price_performance") val pricePerformance: PricePerformance?, + @Json(name = "exchanges_amount") + val exchangesAmount: Int?, ) { @JsonClass(generateAdapter = true) diff --git a/data/markets/src/main/java/com/tangem/data/markets/converters/TokenMarketInfoConverter.kt b/data/markets/src/main/java/com/tangem/data/markets/converters/TokenMarketInfoConverter.kt index 77faa385ef..7df1e1a203 100644 --- a/data/markets/src/main/java/com/tangem/data/markets/converters/TokenMarketInfoConverter.kt +++ b/data/markets/src/main/java/com/tangem/data/markets/converters/TokenMarketInfoConverter.kt @@ -25,6 +25,7 @@ internal object TokenMarketInfoConverter : Converter urlOpener.openUrl(link.url) diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/details/impl/model/converters/TokenMarketInfoConverter.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/details/impl/model/converters/TokenMarketInfoConverter.kt index 8a9b8aa82a..b58a1e48d5 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/details/impl/model/converters/TokenMarketInfoConverter.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/details/impl/model/converters/TokenMarketInfoConverter.kt @@ -6,6 +6,7 @@ import com.tangem.domain.markets.PriceChangeInterval import com.tangem.domain.markets.TokenMarketInfo import com.tangem.features.markets.details.impl.ui.state.InfoBottomSheetContent import com.tangem.features.markets.details.impl.ui.state.LinksUM +import com.tangem.features.markets.details.impl.ui.state.ListedOnUM import com.tangem.features.markets.details.impl.ui.state.MarketsTokenDetailsUM import com.tangem.utils.Provider import com.tangem.utils.converter.Converter @@ -14,6 +15,7 @@ import com.tangem.utils.converter.Converter internal class TokenMarketInfoConverter( private val appCurrency: Provider, private val onInfoClick: (InfoBottomSheetContent) -> Unit, + private val onListedOnClick: () -> Unit, onLinkClick: (LinksUM.Link) -> Unit, onPricePerformanceIntervalChanged: (PriceChangeInterval) -> Unit, onInsightsIntervalChanged: (PriceChangeInterval) -> Unit, @@ -41,6 +43,7 @@ internal class TokenMarketInfoConverter( onInfoClick = onInfoClick, ) + val exchangesAmount = value.exchangesAmount return MarketsTokenDetailsUM.InformationBlocks( insights = value.insights?.let { insightsConverter.convert(it) }, securityScore = null, @@ -51,6 +54,11 @@ internal class TokenMarketInfoConverter( currentPrice = value.quotes.currentPrice, ) }, + listedOn = if (exchangesAmount != null && exchangesAmount > 0) { + ListedOnUM.Content(onClick = onListedOnClick, amount = exchangesAmount) + } else { + ListedOnUM.Empty + }, links = value.links?.let { linksConverter.convert(it) }, ) } diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/details/impl/ui/state/ListedOnUM.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/details/impl/ui/state/ListedOnUM.kt new file mode 100644 index 0000000000..753c6ca7c1 --- /dev/null +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/details/impl/ui/state/ListedOnUM.kt @@ -0,0 +1,35 @@ +package com.tangem.features.markets.details.impl.ui.state + +import com.tangem.core.ui.extensions.TextReference +import com.tangem.core.ui.extensions.stringReference + +/** + * "Listed on" block UI model + * +[REDACTED_AUTHOR] + */ +internal sealed interface ListedOnUM { + + /** Description */ + val description: TextReference + + /** Empty state. No exchanges found */ + data object Empty : ListedOnUM { + // TODO [REDACTED_JIRA] + override val description: TextReference = stringReference(value = "No exchanges found") + } + + /** + * Content with number of exchanges + * + * @property onClick lambda be invoked when button is clicked + * @property amount amount of exchanges + */ + data class Content( + val onClick: () -> Unit, + private val amount: Int, + ) : ListedOnUM { + // TODO [REDACTED_JIRA] + override val description: TextReference = stringReference(value = "$amount exchanges") + } +} \ No newline at end of file diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/details/impl/ui/state/MarketsTokenDetailsUM.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/details/impl/ui/state/MarketsTokenDetailsUM.kt index cec823bccb..1293a56b43 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/details/impl/ui/state/MarketsTokenDetailsUM.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/details/impl/ui/state/MarketsTokenDetailsUM.kt @@ -41,6 +41,7 @@ internal data class MarketsTokenDetailsUM( val securityScore: SecurityScoreUM?, val metrics: MetricsUM?, val pricePerformance: PricePerformanceUM?, + val listedOn: ListedOnUM, val links: LinksUM?, )