diff --git a/app/build.gradle b/app/build.gradle index 16d19ccf637..46af327a25b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -277,7 +277,7 @@ dependencies { implementation 'com.github.horizontalsystems:ethereum-kit-android:3a02f3a' implementation 'com.github.horizontalsystems:blockchain-fee-rate-kit-android:1d3bd49' implementation 'com.github.horizontalsystems:binance-chain-kit-android:c1509a2' - implementation 'com.github.horizontalsystems:market-kit-android:c5c778a' + implementation 'com.github.horizontalsystems:market-kit-android:c1a875a' implementation 'com.github.horizontalsystems:solana-kit-android:34ef394' implementation 'com.github.horizontalsystems:tron-kit-android:5eb6395' // Zcash SDK @@ -321,7 +321,7 @@ dependencies { implementation "androidx.compose.runtime:runtime-livedata:$compose_version" - def coil_version = "2.4.0" + def coil_version = "2.5.0" implementation "io.coil-kt:coil-compose:$coil_version" implementation "io.coil-kt:coil-svg:$coil_version" implementation("io.coil-kt:coil-gif:$coil_version") diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/MarketKitWrapper.kt b/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/MarketKitWrapper.kt index 926d7db815e..466e84b38a2 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/MarketKitWrapper.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/core/managers/MarketKitWrapper.kt @@ -219,7 +219,7 @@ class MarketKitWrapper( fun marketOverviewSingle(currencyCode: String) = marketKit.marketOverviewSingle(currencyCode) - fun topPairsSingle(page: Int, limit: Int) = marketKit.topPairsSingle(page, limit) + fun topPairsSingle(currencyCode: String, page: Int, limit: Int) = marketKit.topPairsSingle(currencyCode, page, limit) fun topMoversSingle(currencyCode: String) = marketKit.topMoversSingle(currencyCode) diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/overview/MarketOverviewModule.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/overview/MarketOverviewModule.kt index 9124e3a42fe..17b0f5ca396 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/overview/MarketOverviewModule.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/overview/MarketOverviewModule.kt @@ -109,12 +109,8 @@ data class TopPairViewItem( val price: String? ) { companion object { - fun createFromTopPair(topPair: TopPair): TopPairViewItem { - val volumeStr = App.numberFormatter.formatFiatShort( - topPair.volume, - App.currencyManager.baseCurrency.symbol, - 2 - ) + fun createFromTopPair(topPair: TopPair, currencySymbol: String): TopPairViewItem { + val volumeStr = App.numberFormatter.formatFiatShort(topPair.volume, currencySymbol, 2) val priceStr = topPair.price?.let { App.numberFormatter.formatCoinShort( diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/overview/MarketOverviewViewModel.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/overview/MarketOverviewViewModel.kt index 3887e951dec..ffb99610043 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/overview/MarketOverviewViewModel.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/overview/MarketOverviewViewModel.kt @@ -154,7 +154,7 @@ class MarketOverviewViewModel( topSectorsBoard = topSectorsBoard(coinCategoryItems), topPlatformsBoard = topPlatformsBoard(topPlatformItems), topMarketPairs = marketOverview.topPairs.map { - TopPairViewItem.createFromTopPair(it) + TopPairViewItem.createFromTopPair(it, baseCurrency.symbol) }, ) } diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/toppairs/TopPairsViewModel.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/toppairs/TopPairsViewModel.kt index 266d6a06482..e2c5f372190 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/toppairs/TopPairsViewModel.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/toppairs/TopPairsViewModel.kt @@ -7,16 +7,21 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import io.horizontalsystems.bankwallet.core.App +import io.horizontalsystems.bankwallet.core.managers.CurrencyManager import io.horizontalsystems.bankwallet.core.managers.MarketKitWrapper import io.horizontalsystems.bankwallet.entities.ViewState import io.horizontalsystems.bankwallet.modules.market.overview.TopPairViewItem import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch +import kotlinx.coroutines.rx2.asFlow import kotlinx.coroutines.rx2.await import kotlinx.coroutines.withContext -class TopPairsViewModel(private val marketKit: MarketKitWrapper) : ViewModel() { +class TopPairsViewModel( + private val marketKit: MarketKitWrapper, + private val currencyManager: CurrencyManager, +) : ViewModel() { private var isRefreshing = false private var items = listOf() private var viewState: ViewState = ViewState.Loading @@ -31,8 +36,12 @@ class TopPairsViewModel(private val marketKit: MarketKitWrapper) : ViewModel() { private set init { - viewState = ViewState.Loading - emitState() + viewModelScope.launch { + currencyManager.baseCurrencyUpdatedSignal.asFlow().collect { + fetchItems() + emitState() + } + } viewModelScope.launch { fetchItems() @@ -42,9 +51,9 @@ class TopPairsViewModel(private val marketKit: MarketKitWrapper) : ViewModel() { private suspend fun fetchItems() = withContext(Dispatchers.Default) { try { - val topPairs = marketKit.topPairsSingle(1, 100).await() + val topPairs = marketKit.topPairsSingle(currencyManager.baseCurrency.code, 1, 100).await() items = topPairs.map { - TopPairViewItem.createFromTopPair(it) + TopPairViewItem.createFromTopPair(it, currencyManager.baseCurrency.symbol) } viewState = ViewState.Success } catch (e: Throwable) { @@ -81,7 +90,7 @@ class TopPairsViewModel(private val marketKit: MarketKitWrapper) : ViewModel() { class Factory : ViewModelProvider.Factory { @Suppress("UNCHECKED_CAST") override fun create(modelClass: Class): T { - return TopPairsViewModel(App.marketKit) as T + return TopPairsViewModel(App.marketKit, App.currencyManager) as T } }