Open
Conversation
…petual # Conflicts: # app/src/main/res/values-zh-rCN/strings.xml # app/src/main/res/values/strings.xml
81cfb63 to
b38e1ae
Compare
2b12cc2 to
e08b485
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
Adds Perpetual (perps) trading to the Web3 Trade flow, including perps markets/positions UI, perps Room database + refresh job, and share/trading-guide surfaces.
Changes:
- Introduces perps API models/endpoints, perps Room database/DAOs, and a background job to refresh positions.
- Adds perps UI flows: perps tab in TradePage, market list bottom sheet, open/closed positions list & detail, leverage/guide sheets, and position share activity.
- Expands resources (strings/layouts/drawables) and adjusts some existing share/badge/error-handling behaviors.
Reviewed changes
Copilot reviewed 91 out of 94 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| gradle.properties | Enables Gradle dependency constraints usage. |
| app/src/main/res/values/strings.xml | Adds perps strings + guide copy + new errors/placeholders. |
| app/src/main/res/values-zh-rCN/strings.xml | Chinese translations for new perps strings/errors. |
| app/src/main/res/layout/layout_empty_transaction.xml | Adds hidden “How Perps Works” help action view. |
| app/src/main/res/layout/item_total_position_value.xml | New header card layout for total value/PnL. |
| app/src/main/res/layout/item_market_list.xml | New RecyclerView row layout for perps markets. |
| app/src/main/res/layout/item_closed_position_list.xml | New RecyclerView row layout for perps positions. |
| app/src/main/res/layout/fragment_market_list_bottom_sheet.xml | New market-search bottom sheet layout. |
| app/src/main/res/layout/fragment_all_closed_positions.xml | New screen layout for open/closed positions lists. |
| app/src/main/res/layout/activity_perps_position_share.xml | New perps position share layout. |
| app/src/main/res/layout/activity_market_share.xml | Tweaks logo size/alignment in share UI. |
| app/src/main/res/layout/activity_deposit_share.xml | Tweaks logo size/alignment in share UI. |
| app/src/main/res/drawable/ic_perps_share_profit.xml | New perps share style drawable (profit). |
| app/src/main/res/drawable/ic_perps_share_loss.xml | New perps share style drawable (loss). |
| app/src/main/res/drawable/ic_perps_minus.xml | New perps icon asset. |
| app/src/main/res/drawable/ic_perps_help.xml | New perps icon asset. |
| app/src/main/res/drawable/ic_perps_add.xml | New perps icon asset. |
| app/src/main/res/drawable/bg_round_gray_4dp.xml | New rounded gray background drawable. |
| app/src/main/res/drawable/bg_perps_share_tag.xml | New perps share tag background. |
| app/src/main/res/drawable/bg_perps_share_footer.xml | New perps share footer background. |
| app/src/main/res/drawable/bg_perps_share_card_profit.xml | New perps share card gradient (profit). |
| app/src/main/res/drawable/bg_perps_share_card_loss.xml | New perps share card gradient (loss). |
| app/src/main/res/drawable/bg_perps_share_card_container.xml | New perps share card container overlay. |
| app/src/main/res/drawable/bg_perps_leverage_short.xml | New leverage chip background (short). |
| app/src/main/res/drawable/bg_perps_leverage_long.xml | New leverage chip background (long). |
| app/src/main/res/drawable/bg_card_top.xml | New card background for list top item. |
| app/src/main/res/drawable/bg_card_middle.xml | New card background for list middle item. |
| app/src/main/res/drawable/bg_card_bottom.xml | New card background for list bottom item. |
| app/src/main/res/drawable/bg_card.xml | Updates card border styling. |
| app/src/main/java/one/mixin/android/widget/components/DotText.kt | Adds Compose helper for dot-prefixed text. |
| app/src/main/java/one/mixin/android/util/ErrorHandler.kt | Adds perps error codes and mappings to strings. |
| app/src/main/java/one/mixin/android/ui/wallet/fiatmoney/OrderStatusFragment.kt | Updates RiskConfig invocation arguments. |
| app/src/main/java/one/mixin/android/ui/wallet/alert/AllAlertPage.kt | Updates alert UI strings usage. |
| app/src/main/java/one/mixin/android/ui/wallet/alert/AlertPage.kt | Updates alert UI strings usage. |
| app/src/main/java/one/mixin/android/ui/wallet/alert/AlertEditPage.kt | Updates alert UI strings usage. |
| app/src/main/java/one/mixin/android/ui/wallet/TokenListBottomSheetDialogFragment.kt | Adds perps token-selection mode and filtering. |
| app/src/main/java/one/mixin/android/ui/wallet/MarketShareActivity.kt | Adjusts QR content + rounding and copy link behavior. |
| app/src/main/java/one/mixin/android/ui/wallet/MarketDetailsFragment.kt | Formatting-only change. |
| app/src/main/java/one/mixin/android/ui/wallet/DepositShareActivity.kt | Adjusts QR content + rounding. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/perps/PositionDetailFragment.kt | Adds perps position detail fragment with refresh + share/close actions. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/perps/PerpsPositionShareActivity.kt | Adds perps position share activity (bitmap share/copy/save). |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/perps/PerpsMarketListBottomSheetDialogFragment.kt | Adds market list bottom sheet with local filtering + navigation. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/perps/PerpsMarketListAdapter.kt | Adds RecyclerView adapter for market list rows. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/perps/PerpsMarketItem.kt | Adds Compose market list item. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/perps/PerpsActivity.kt | Adds perps activity hosting detail/open position pages + periodic refresh job. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/perps/PerpetualGuideBottomSheetDialogFragment.kt | Adds full-screen compose bottom sheet for trading guide. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/perps/OpenPositionItem.kt | Adds Compose open-position row item. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/perps/OpenPositionAdapter.kt | Adds paged adapter for open positions list (reuses closed row layout). |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/perps/LeverageBottomSheetDialogFragment.kt | Adds leverage selection sheet + profit/loss hints. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/perps/AllPositionsFragment.kt | Adds open/closed positions list fragment + totals header. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/perps/AllPerpsMarketsFragment.kt | Adds “All Markets” compose screen for perps. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/TradePage.kt | Adds perps tab, help bottom sheet, badges, and dynamic trade title. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/TradeFragment.kt | Wires perps navigation + per-wallet badge prefs + title preloading. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/TotalPositionValueAdapter.kt | Adds totals header adapter for perps open/closed lists. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/SwapViewModel.kt | Adds error-guarding around refresh order flows. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/InputTextField.kt | Adds sizing/typography parameters for token input UI. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/HelpBottomSheet.kt | Adds compose help sheet (support + trading guide). |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/ClosedPositionItem.kt | Adds Compose closed-position row item. |
| app/src/main/java/one/mixin/android/ui/home/web3/trade/ClosedPositionAdapter.kt | Adds paged adapter for closed positions list. |
| app/src/main/java/one/mixin/android/ui/home/web3/components/OpenOrderItem.kt | Makes order colors respect quote-color preference. |
| app/src/main/java/one/mixin/android/ui/home/MainActivity.kt | Adjusts nav badge logic (new dismissed pref). |
| app/src/main/java/one/mixin/android/ui/conversation/link/LinkBottomSheetDialogFragment.kt | Adds scheme handling to open perps market detail. |
| app/src/main/java/one/mixin/android/ui/common/BottomSheetViewModel.kt | Adds USD-balance token list + perps market fetch helper. |
| app/src/main/java/one/mixin/android/repository/TokenRepository.kt | Adds repository method for USD-token list with balance. |
| app/src/main/java/one/mixin/android/job/RefreshPerpsPositionsJob.kt | Adds background job to refresh perps positions into DB. |
| app/src/main/java/one/mixin/android/di/PerpsModule.kt | Adds DI providers for perps DB and DAOs. |
| app/src/main/java/one/mixin/android/db/perps/PerpsPositionHistoryDao.kt | Adds perps position history DAO + aggregate queries. |
| app/src/main/java/one/mixin/android/db/perps/PerpsPositionDao.kt | Adds perps positions DAO + aggregates + paging. |
| app/src/main/java/one/mixin/android/db/perps/PerpsMarketDao.kt | Adds perps markets DAO + search. |
| app/src/main/java/one/mixin/android/db/TokenDao.kt | Adds USD-token query + (chain,symbol) flow query. |
| app/src/main/java/one/mixin/android/db/PerpsDatabase.kt | Adds perps Room database implementation. |
| app/src/main/java/one/mixin/android/api/service/RouteService.kt | Adds perps REST endpoints (markets, positions, orders, candles). |
| app/src/main/java/one/mixin/android/api/response/perps/PerpsPositionItem.kt | Adds perps position “item” model (DB-join projection + parcelable). |
| app/src/main/java/one/mixin/android/api/response/perps/PerpsPositionHistoryItem.kt | Adds perps history “item” model (DB-join projection + parcelable). |
| app/src/main/java/one/mixin/android/api/response/perps/PerpsPositionHistory.kt | Adds perps position history entity. |
| app/src/main/java/one/mixin/android/api/response/perps/PerpsPosition.kt | Adds perps position entity. |
| app/src/main/java/one/mixin/android/api/response/perps/PerpsMarket.kt | Adds perps market entity. |
| app/src/main/java/one/mixin/android/api/response/perps/PerpsExt.kt | Adds conversion helper from item -> entity. |
| app/src/main/java/one/mixin/android/api/response/perps/CandleView.kt | Adds perps candles response models. |
| app/src/main/java/one/mixin/android/api/request/perps/OpenOrderRequest.kt | Adds perps open/close request/response models. |
| app/src/main/java/one/mixin/android/Constants.kt | Adds perps prefs + nav badge dismissed pref. |
| app/src/main/AndroidManifest.xml | Registers PerpsActivity and PerpsPositionShareActivity. |
| app/schemas/one.mixin.android.db.PerpsDatabase/1.json | Adds Room schema for perps database v1. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
Comment on lines
+6
to
+8
| android:layout_height="match_parent" | ||
| android:orientation="vertical"> | ||
|
|
Comment on lines
+488
to
+490
| <string name="error_perps_order_value_too_small">ERROR 10650: Position size is too small.</string> | ||
| <string name="error_perps_market_already_has_active_position">ERROR 10651: The current market already has an open position.</string> | ||
| <string name="error_waiting_other_orders">The current market already has an open position.</string> |
Comment on lines
+3
to
+8
| import PageScaffold | ||
| import android.os.Bundle | ||
| import android.view.LayoutInflater | ||
| import android.view.View | ||
| import android.view.ViewGroup | ||
| import androidx.compose.foundation.layout.Arrangement |
Comment on lines
+265
to
+266
| PageScaffold( | ||
| title = stringResource(id = R.string.Trade), | ||
| title = currentTradeTitle, |
Comment on lines
+78
to
+82
| @Query("SELECT SUM(CAST(unrealized_pnl AS REAL)) FROM positions WHERE wallet_id = :walletId AND state = (state = 'open' or state = 'opening')") | ||
| suspend fun getTotalUnrealizedPnl(walletId: String): Double? | ||
|
|
||
| @Query("SELECT COALESCE(SUM(CAST(unrealized_pnl AS REAL)), 0) FROM positions WHERE wallet_id = :walletId AND (state = 'open' or state = 'opening')") | ||
| fun observeTotalUnrealizedPnl(walletId: String): Flow<Double> |
Comment on lines
+248
to
+252
| defaultAssets = if (fromType == TYPE_FROM_PERP) { | ||
| it.filter { token -> token.assetId in acceptedPerpAssetIds } | ||
| } else { | ||
| it | ||
| } |
Comment on lines
+52
to
+55
| iconIv.loadImage(market.iconUrl, R.drawable.ic_avatar_place_holder) | ||
| symbolTv.text = market.tokenSymbol | ||
|
|
||
| val formattedVolume = try { |
Comment on lines
+23
to
+26
| fun submitList(list: List<PerpsMarket>) { | ||
| markets = list | ||
| notifyDataSetChanged() | ||
| } |
This reverts commit 8d32223.
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.
No description provided.