Skip to content

Commit

Permalink
Remove rates from Coin Markets
Browse files Browse the repository at this point in the history
  • Loading branch information
rafaelekol committed Apr 12, 2024
1 parent 38d5725 commit 90b7f6f
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 80 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ data class MarketTickerViewItem(
val market: String,
val marketImageUrl: String?,
val pair: String,
val rate: String,
val volume: String,
val volumeFiat: String,
val volumeToken: String,
val tradeUrl: String?,
val badge: TranslatableString?
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,8 @@ data class MarketTickerItem(
val marketImageUrl: String?,
val baseCoinCode: String,
val targetCoinCode: String,
val rate: BigDecimal,
val volume: BigDecimal,
val volumeType: CoinMarketsModule.VolumeMenuType,
val volumeFiat: BigDecimal,
val volumeToken: BigDecimal,
val tradeUrl: String?,
val verified: Boolean
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,13 +79,10 @@ fun CoinMarketsScreen(
} else {
CoinMarketsMenu(
viewModel.verifiedMenu,
viewModel.volumeMenu,
{
viewModel.toggleVerifiedType(it)
scrollToTopAfterUpdate = true
},
{ viewModel.toggleVolumeType(it) }
)
) {
viewModel.toggleVerifiedType(it)
scrollToTopAfterUpdate = true
}
CoinMarketList(items, scrollToTopAfterUpdate)
if (scrollToTopAfterUpdate) {
scrollToTopAfterUpdate = false
Expand All @@ -103,32 +100,21 @@ fun CoinMarketsScreen(
@Composable
fun CoinMarketsMenu(
menuVerified: Select<VerifiedType>,
menuVolumeType: Select<CoinMarketsModule.VolumeMenuType>,
onToggleVerified: (VerifiedType) -> Unit,
onToggleVolumeType: (CoinMarketsModule.VolumeMenuType) -> Unit
) {

var verifiedType by remember { mutableStateOf(menuVerified) }
var volumeType by remember { mutableStateOf(menuVolumeType) }

HeaderSorting(borderTop = true, borderBottom = true) {
Spacer(Modifier.weight(1f))
ButtonSecondaryToggle(
modifier = Modifier.padding(start = 16.dp),
modifier = Modifier.padding(end = 16.dp),
select = verifiedType,
onSelect = {
onToggleVerified.invoke(it)
verifiedType = Select(it, verifiedType.options)
}
)
Spacer(Modifier.weight(1f))
ButtonSecondaryToggle(
modifier = Modifier.padding(end = 16.dp),
select = volumeType,
onSelect = {
onToggleVolumeType.invoke(it)
volumeType = Select(it, volumeType.options)
}
)
}
}

Expand All @@ -146,8 +132,8 @@ fun CoinMarketList(
item.market,
item.pair,
item.marketImageUrl ?: "",
item.rate,
MarketDataValue.Volume(item.volume),
item.volumeToken,
MarketDataValue.Volume(item.volumeFiat),
item.tradeUrl,
item.badge
)
Expand All @@ -168,8 +154,8 @@ fun CoinMarketCell(
name: String,
subtitle: String,
iconUrl: String,
coinRate: String? = null,
marketDataValue: MarketDataValue? = null,
volumeToken: String,
marketDataValue: MarketDataValue,
tradeUrl: String?,
badge: TranslatableString?
) {
Expand All @@ -194,7 +180,7 @@ fun CoinMarketCell(
Column(
modifier = Modifier.fillMaxWidth()
) {
MarketCoinFirstRow(name, coinRate, badge?.getString())
MarketCoinFirstRow(name, volumeToken, badge?.getString())
Spacer(modifier = Modifier.height(3.dp))
MarketCoinSecondRow(subtitle, marketDataValue, null)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import io.horizontalsystems.bankwallet.core.managers.CurrencyManager
import io.horizontalsystems.bankwallet.core.managers.MarketKitWrapper
import io.horizontalsystems.bankwallet.core.subscribeIO
import io.horizontalsystems.bankwallet.entities.DataState
import io.horizontalsystems.bankwallet.modules.coin.coinmarkets.CoinMarketsModule.VolumeMenuType
import io.horizontalsystems.bankwallet.ui.compose.Select
import io.horizontalsystems.marketkit.models.FullCoin
import io.horizontalsystems.marketkit.models.MarketTicker
Expand All @@ -22,16 +21,9 @@ class CoinMarketsService(
private var marketTickers = listOf<MarketTicker>()
private val price = marketKit.coinPrice(fullCoin.coin.uid, currencyManager.baseCurrency.code)?.value ?: BigDecimal.ZERO

private val volumeOptions = listOf(
VolumeMenuType.Coin(fullCoin.coin.code),
VolumeMenuType.Currency(currency.code)
)

private var verifiedType: VerifiedType = VerifiedType.Verified
private var volumeType: VolumeMenuType = volumeOptions[0]
private var verifiedType: VerifiedType = VerifiedType.All

val verifiedMenu = Select(verifiedType, VerifiedType.values().toList())
val volumeMenu = Select(volumeType, volumeOptions)
val stateObservable: BehaviorSubject<DataState<List<MarketTickerItem>>> = BehaviorSubject.create()

val currency get() = currencyManager.baseCurrency
Expand Down Expand Up @@ -59,12 +51,6 @@ class CoinMarketsService(
emitItems()
}

fun setVolumeType(volumeType: VolumeMenuType) {
this.volumeType = volumeType

emitItems()
}

@Synchronized
private fun emitItems() {
val filtered = when (verifiedType) {
Expand All @@ -75,22 +61,14 @@ class CoinMarketsService(
stateObservable.onNext(DataState.Success(filtered.map { createItem(it) }))
}

private fun createItem(marketTicker: MarketTicker): MarketTickerItem {
val volume = when (volumeType) {
is VolumeMenuType.Coin -> marketTicker.volume
is VolumeMenuType.Currency -> marketTicker.volume.multiply(price)
}

return MarketTickerItem(
marketTicker.marketName,
marketTicker.marketImageUrl,
marketTicker.base,
marketTicker.target,
marketTicker.rate,
volume,
volumeType,
marketTicker.tradeUrl,
marketTicker.verified
)
}
private fun createItem(marketTicker: MarketTicker): MarketTickerItem = MarketTickerItem(
market = marketTicker.marketName,
marketImageUrl = marketTicker.marketImageUrl,
baseCoinCode = marketTicker.base,
targetCoinCode = marketTicker.target,
volumeFiat = marketTicker.volume.multiply(price),
volumeToken = marketTicker.volume,
tradeUrl = marketTicker.tradeUrl,
verified = marketTicker.verified
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,10 @@ import io.horizontalsystems.bankwallet.core.subscribeIO
import io.horizontalsystems.bankwallet.entities.DataState
import io.horizontalsystems.bankwallet.entities.ViewState
import io.horizontalsystems.bankwallet.modules.coin.MarketTickerViewItem
import io.horizontalsystems.bankwallet.modules.coin.coinmarkets.CoinMarketsModule.VolumeMenuType
import io.horizontalsystems.bankwallet.ui.compose.TranslatableString
import io.reactivex.disposables.CompositeDisposable

class CoinMarketsViewModel(private val service: CoinMarketsService) : ViewModel() {
val volumeMenu by service::volumeMenu
val verifiedMenu by service::verifiedMenu
val viewStateLiveData = MutableLiveData<ViewState>(ViewState.Loading)
val viewItemsLiveData = MutableLiveData<List<MarketTickerViewItem>>()
Expand Down Expand Up @@ -45,23 +43,13 @@ class CoinMarketsViewModel(private val service: CoinMarketsService) : ViewModel(
item.market,
item.marketImageUrl,
"${item.baseCoinCode}/${item.targetCoinCode}",
App.numberFormatter.formatCoinFull(item.rate, item.targetCoinCode, 8),
getVolume(item),
App.numberFormatter.formatFiatShort(item.volumeFiat, service.currency.symbol, service.currency.decimal),
App.numberFormatter.formatCoinShort(item.volumeToken, item.baseCoinCode, 8),
item.tradeUrl,
if (item.verified) TranslatableString.ResString(R.string.CoinPage_MarketsLabel_Verified) else null
)
}

private fun getVolume(item: MarketTickerItem) = when (item.volumeType) {
is VolumeMenuType.Coin -> {
App.numberFormatter.formatCoinShort(item.volume, item.baseCoinCode, 8)
}
is VolumeMenuType.Currency -> {
val currency = service.currency
App.numberFormatter.formatFiatShort(item.volume, currency.symbol, currency.decimal)
}
}

override fun onCleared() {
disposables.clear()
service.stop()
Expand All @@ -75,7 +63,4 @@ class CoinMarketsViewModel(private val service: CoinMarketsService) : ViewModel(
service.setVerifiedType(verifiedType)
}

fun toggleVolumeType(volumeMenuType: VolumeMenuType) {
service.setVolumeType(volumeMenuType)
}
}

0 comments on commit 90b7f6f

Please sign in to comment.