Open
Conversation
Remove VICO-based chart implementation and introduce a custom GemLineChart + PulsingDot with scrubbing/selection, area gradient, haptics and optimized point reduction. Add ChartUIModel.from factory to build renderable ChartPoint list, min/max labels and percentage logic; update ChartViewModel to use the new factory and fix currency rate multiplication/casting. Revamp Chart composable to use ChartHeader, GemLineChart and updated loading/empty states. Update PeriodsPanel UI to use clickable chips with animated background. Add test fixtures (ChartMock) and update unit tests to cover new behavior (render points, min/max labels, percentage handling).
Replace mutable list builders with immutable listOfNotNull for marketItems, supplyItems and allTime to simplify construction and avoid mutation. Add TradingVolume to MarketInfoUIModel and include the trading volume item in market properties. Also move the contract item into marketItems and adjust badge formatting for market cap rank. These changes tidy up list creation and expose trading volume in the UI model.
Replace one-off sync flow with a continuous polling loop that syncs market info every minute. Asset ID flow is now filtered/mapped to non-null AssetId, and the sync flow emits Unit in a repeating coroutine using delay(DateUtils.MINUTE_IN_MILLIS). Updated imports (DateUtils, delay) and adjusted flowOn/stateIn initial value to Unit. This ensures regular background refresh of market data instead of a single sync.
Introduce a new ChipBadge composable (android/ui/src/main/kotlin/.../ChipBadge.kt) that displays a rounded, padded label using Material3 color/typography tokens. Update AssetChartScene to import and use ChipBadge in place of the previous Badge, and add necessary Material3/Text imports. This swaps the badge visual to the new chip-style presentation.
Extract chartFrameHeight and dateRowHeight into a private ChartSceneMetrics object and update Chart to reference ChartSceneMetrics.frameHeight and .dateRowHeight. In PropertyItem, switch Arrangement.spacedBy from paddingMiddle to space4 and add the required import. These changes centralize chart layout metrics and align list item spacing with the UI theme.
Introduce Asset.formatSupply(value) which returns '∞ SYMBOL' for a zero supply and otherwise uses compactFormatter. Update AssetChartScene to use asset.compactFormatter for circulating/total supply and asset.formatSupply for max supply. Add unit tests (TestFormat.testFormatSupply) to verify infinity and numeric formatting.
gemcoder21
approved these changes
Apr 4, 2026
Contributor
is no longer needed, because whenever there is a change in price it will trigger update by itself |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
closes #27
GemLineChart+PulsingDot— scrubbing, area gradient, haptics, andoptimized point reduction
ChartUIModel.fromfactory to build renderable chart points, min/max labels, and percentage logicAssetChartScenecomposable withChartHeader,GemLineChart, and updated loading/empty statesPeriodsPanelto use clickable chips with animated background + newChipBadgecomposableAsset.formatSupply(returns∞ SYMBOLfor zero supply)AssetChartViewModellistOfNotNull, add TradingVolume fieldChartMocktest fixtures and update unit testsimages: