From db97d7015a7709eb64f8038a2c8bb7fad0c916a6 Mon Sep 17 00:00:00 2001 From: SeniorZhai Date: Tue, 29 Sep 2026 19:07:23 +0800 Subject: [PATCH] fix(perps): correct initial chart viewport and leverage badges --- .../android/ui/home/web3/market/MarketPage.kt | 4 ++-- .../android/ui/home/web3/trade/CandleChart.kt | 17 ++++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/one/mixin/android/ui/home/web3/market/MarketPage.kt b/app/src/main/java/one/mixin/android/ui/home/web3/market/MarketPage.kt index 4734a02646..414c29e6af 100644 --- a/app/src/main/java/one/mixin/android/ui/home/web3/market/MarketPage.kt +++ b/app/src/main/java/one/mixin/android/ui/home/web3/market/MarketPage.kt @@ -461,7 +461,7 @@ private fun MarketRecommendations( entry = entry, selected = selected, quoteColorReversed = quoteColorReversed, - perpetualBadgeStyle = PerpetualMarketBadgeStyle.PERPETUAL, + perpetualBadgeStyle = PerpetualMarketBadgeStyle.LEVERAGE, onSelect = { selectedIds = if (selected) { @@ -531,7 +531,7 @@ private fun MarketRow( market = entry.market, isFavored = entry.isFavored, quoteColorReversed = settings.quoteColorReversed, - badgeStyle = PerpetualMarketBadgeStyle.PERPETUAL, + badgeStyle = PerpetualMarketBadgeStyle.LEVERAGE, onFavorite = onFavorite, onClick = onClick, ) diff --git a/app/src/main/java/one/mixin/android/ui/home/web3/trade/CandleChart.kt b/app/src/main/java/one/mixin/android/ui/home/web3/trade/CandleChart.kt index a1694bf660..54e8b391c4 100644 --- a/app/src/main/java/one/mixin/android/ui/home/web3/trade/CandleChart.kt +++ b/app/src/main/java/one/mixin/android/ui/home/web3/trade/CandleChart.kt @@ -220,7 +220,6 @@ private fun ScrollableCandleChart( val baseSpacing = 2.dp val density = LocalDensity.current - val scrollState = rememberScrollState() val coroutineScope = rememberCoroutineScope() var touchXOnChart by remember { mutableStateOf(null) } var isTouching by remember { mutableStateOf(false) } @@ -239,12 +238,6 @@ private fun ScrollableCandleChart( (8.dp + (candleWidth * items.size) + (spacing * (items.size - 1).coerceAtLeast(0))).toPx() } - LaunchedEffect(items.size) { - if (items.size > 50) { - scrollState.scrollTo(scrollState.maxValue) - } - } - val selectedIndex = touchXOnChart?.let { x -> ((x - chartStartPaddingPx) / candleStepPx).toInt().coerceIn(0, items.lastIndex) } @@ -274,6 +267,16 @@ private fun ScrollableCandleChart( ) { val axisPanelWidthPx = with(density) { axisPanelWidth.toPx() } val viewportWidthPx = (with(density) { maxWidth.toPx() } - axisPanelWidthPx).coerceAtLeast(1f) + val scrollState = rememberScrollState( + initial = (totalChartWidthPx.roundToInt() - viewportWidthPx.roundToInt()).coerceAtLeast(0), + ) + + LaunchedEffect(items.size) { + if (items.size > 50) { + scrollState.scrollTo(scrollState.maxValue) + } + } + val viewportLeft = scrollState.value.toFloat() val viewportRight = viewportLeft + viewportWidthPx val startIndex = ((((viewportLeft - chartStartPaddingPx) - candleWidthPx) / candleStepPx).toInt() - 1)