From 37282d005dfa728d4f4809c34f33ef95d05e28d6 Mon Sep 17 00:00:00 2001 From: Rafael Date: Fri, 7 Jun 2024 14:33:22 +0600 Subject: [PATCH] Make fixes in Markets - Fix scroll to top - Remove extra divider in Pairs --- .../bankwallet/modules/market/etf/EtfFragment.kt | 1 + .../bankwallet/modules/market/etf/EtfViewModel.kt | 3 +++ .../modules/market/favorites/MarketFavoritesScreen.kt | 4 +++- .../modules/market/favorites/MarketFavoritesService.kt | 3 +++ .../modules/market/filters/MarketFiltersViewModel.kt | 1 + .../modules/market/topcoins/MarketTopCoinsService.kt | 3 +++ .../bankwallet/modules/market/topcoins/TopCoins.kt | 1 + .../bankwallet/modules/market/toppairs/TopPairsScreen.kt | 9 ++++++++- .../modules/market/toppairs/TopPairsViewModel.kt | 3 +++ 9 files changed, 26 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/etf/EtfFragment.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/etf/EtfFragment.kt index 64634f0cad4..333f29ffd9e 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/etf/EtfFragment.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/etf/EtfFragment.kt @@ -141,6 +141,7 @@ fun EtfPage( ViewState.Success -> { val listState = rememberSaveable( uiState.sortBy, + uiState.timeDuration, saver = LazyListState.Saver ) { LazyListState() diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/etf/EtfViewModel.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/etf/EtfViewModel.kt index 43d7cd836b9..f20804bca12 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/etf/EtfViewModel.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/etf/EtfViewModel.kt @@ -14,6 +14,7 @@ import io.horizontalsystems.bankwallet.modules.market.etf.EtfModule.EtfViewItem import io.horizontalsystems.marketkit.models.Etf import io.horizontalsystems.marketkit.models.EtfPoint import io.horizontalsystems.marketkit.models.HsTimePeriod +import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.delay @@ -90,6 +91,8 @@ class EtfViewModel( updateViewItems() viewState = ViewState.Success + } catch (e: CancellationException) { + // no-op } catch (e: Throwable) { viewState = ViewState.Error(e) } diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/favorites/MarketFavoritesScreen.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/favorites/MarketFavoritesScreen.kt index 21471db90fb..a07c6ccc8a8 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/favorites/MarketFavoritesScreen.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/favorites/MarketFavoritesScreen.kt @@ -169,6 +169,7 @@ fun MarketFavoritesScreen( onSelect = { selected -> manualOrderEnabled = false openSortingSelector = false + scrollToTopAfterUpdate = true viewModel.onSelectSortingField(selected) stat(page = StatPage.Markets, section = StatSection.Watchlist, event = StatEvent.SwitchSortType(selected.statSortType)) @@ -183,8 +184,9 @@ fun MarketFavoritesScreen( title = R.string.CoinPage_Period, select = Select(uiState.period, viewModel.periods), onSelect = { selected -> - viewModel.onSelectPeriod(selected) openPeriodSelector = false + scrollToTopAfterUpdate = true + viewModel.onSelectPeriod(selected) stat(page = StatPage.Markets, section = StatSection.Watchlist, event = StatEvent.SwitchPeriod(selected.statPeriod)) }, diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/favorites/MarketFavoritesService.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/favorites/MarketFavoritesService.kt index 83989a5dc7f..0b51b4a4c7d 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/favorites/MarketFavoritesService.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/favorites/MarketFavoritesService.kt @@ -13,6 +13,7 @@ import io.horizontalsystems.core.BackgroundManager import io.horizontalsystems.marketkit.models.Analytics import io.reactivex.Observable import io.reactivex.subjects.BehaviorSubject +import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -73,6 +74,8 @@ class MarketFavoritesService( if (menuService.showSignals) { syncSignals() } + } catch (e: CancellationException) { + // no-op } catch (e: Throwable) { marketItemsSubject.onNext(DataState.Error(e)) } diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/filters/MarketFiltersViewModel.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/filters/MarketFiltersViewModel.kt index 352c12e2b99..08675aa77fd 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/filters/MarketFiltersViewModel.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/filters/MarketFiltersViewModel.kt @@ -120,6 +120,7 @@ class MarketFiltersViewModel(val service: MarketFiltersService) solidDexOn = false goodDistributionOn = false selectedBlockchains = emptyList() + filterTradingSignal = FilterViewItemWrapper.getAny() updateSelectedBlockchains() emitState() reloadData() diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/topcoins/MarketTopCoinsService.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/topcoins/MarketTopCoinsService.kt index 4062c0c45c6..04e74c49e3d 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/topcoins/MarketTopCoinsService.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/topcoins/MarketTopCoinsService.kt @@ -10,6 +10,7 @@ import io.horizontalsystems.bankwallet.modules.market.TimeDuration import io.horizontalsystems.bankwallet.modules.market.TopMarket import io.horizontalsystems.bankwallet.modules.market.category.MarketItemWrapper import io.reactivex.subjects.BehaviorSubject +import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -84,6 +85,8 @@ class MarketTopCoinsService( ).await() syncItems() + } catch (e: CancellationException) { + //do nothing } catch (e: Throwable) { stateObservable.onNext(DataState.Error(e)) } diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/topcoins/TopCoins.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/topcoins/TopCoins.kt index 55d0617cfd1..63f7f0fb6a5 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/topcoins/TopCoins.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/topcoins/TopCoins.kt @@ -167,6 +167,7 @@ fun TopCoins( onSelect = { selected -> viewModel.onSelectPeriod(selected) openPeriodSelector = false + scrollToTopAfterUpdate = true stat(page = StatPage.Markets, section = StatSection.Coins, event = StatEvent.SwitchPeriod(selected.statPeriod)) }, diff --git a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/toppairs/TopPairsScreen.kt b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/toppairs/TopPairsScreen.kt index a64c2ab6e35..3c3d219ce72 100644 --- a/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/toppairs/TopPairsScreen.kt +++ b/app/src/main/java/io/horizontalsystems/bankwallet/modules/market/toppairs/TopPairsScreen.kt @@ -13,10 +13,12 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.Scaffold import androidx.compose.runtime.Composable +import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -56,6 +58,10 @@ fun TopPairsScreen() { val uiState = viewModel.uiState val context = LocalContext.current + val state = rememberSaveable(uiState.sortDescending, saver = LazyListState.Saver) { + LazyListState(0, 0) + } + Scaffold( backgroundColor = ComposeAppTheme.colors.tyler, ) { @@ -79,6 +85,7 @@ fun TopPairsScreen() { ViewState.Success -> { LazyColumn( + state = state, modifier = Modifier.fillMaxSize() ) { stickyHeader { @@ -98,7 +105,7 @@ fun TopPairsScreen() { } } itemsIndexed(uiState.items) { i, item -> - TopPairItem(item, borderTop = i == 0, borderBottom = true) { + TopPairItem(item, borderBottom = true) { it.tradeUrl?.let { LinkHelper.openLinkInAppBrowser(context, it) 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 c24119d7918..f8679fb6cc9 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 @@ -14,6 +14,7 @@ import io.horizontalsystems.bankwallet.core.stats.StatSortType import io.horizontalsystems.bankwallet.core.stats.stat import io.horizontalsystems.bankwallet.entities.ViewState import io.horizontalsystems.bankwallet.modules.market.overview.TopPairViewItem +import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch @@ -63,6 +64,8 @@ class TopPairsViewModel( } items = sortItems(pairs) viewState = ViewState.Success + } catch (e: CancellationException) { + // no-op } catch (e: Throwable) { viewState = ViewState.Error(e) }