Skip to content

feat(wallet): integration DashDEX feat#818

Open
romchornyi wants to merge 67 commits into
masterfrom
feat/dash-dex
Open

feat(wallet): integration DashDEX feat#818
romchornyi wants to merge 67 commits into
masterfrom
feat/dash-dex

Conversation

@romchornyi

Copy link
Copy Markdown
Contributor

Issue being fixed or feature implemented

What was done?

How Has This Been Tested?

Breaking Changes

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

Why:
- improve SwapKit conversion UX and error surfacing across quote, preview, and submit flows

What:
- curate supported assets, preserve identifier casing, and expand chain coverage
- split indicative quote fetching from full swap execution and improve preview refresh behavior
- surface clearer fee and invalid destination address messaging, plus related UI/localization updates

Validation:
- full build/tests were not run in this session before committing
Why:
- keep the current swap flow changes together in one commit
- preserve the current project version state from the working tree

What:
- harden Maya and SwapKit pending, status, address, and validation flows
- include the current project and localization updates that are part of the staged state

Validation:
- not run (not requested)
Why:
- refine the SwapKit portal presentation and supporting assets
- keep the current staged project wiring together with the ui update

What:
- update swap portal screens, copy, and illustrations
- replace the svg portal illustration with png assets and include the current project file changes

Validation:
- not run (not requested)
Why:
- reduce receive-target overshoot in swap previews
- restore missing long-tail token icons in select-coin flow

What:
- use fixed-fee-aware gross-up and preview convergence for receive-target quotes
- keep preview purchase amount anchored to the entered target
- load remote token icons from the SwapKit CDN with jsupa fallback
- update swapkit-related image assets used by the flow

Validation:
- git diff --cached --stat
- git diff --check on updated swap files
- swiftc -parse on updated Swift files
- xcodebuild -list -project DashWallet.xcodeproj
Add isConfirming flag to prevent multiple confirmations when rapidly
tapping Continue. Re-arm flag when returning from previous screen and
in error cases. Add guard in SwapFlowCoordinator to prevent duplicate
ConvertVC navigation.
- Import and use DashUIKit components (NavigationBar, MenuItem, MenuViewModifier)
- Update color references to use DashUIKit theming (Color.dash.primaryBackground)
- Refactor action cards to use DashUIKit MenuItem component
- Update styling to use MenuViewModifier for consistent appearance
- Remove FrameReader, LocationReader, ScrollViewWithOnScrollChanged from project
- Remove SearchBar component (now in DashUIKit)
- Update LocalCurrencyView to use DashUIKit components
- Update SelectCoinView to use DashUIKit components
- Update project configuration for DashUIKit integration
- Remove DashSwitch and RadioButtonRow (now in DashUIKit)
- Remove CoinRowView component
- Update POIDetailsView to use DashUIKit components
- Update MerchantFiltersView with DashUIKit integration
- Update TerritoryPickerView with new component structure
- Update TransactionFilterDialog to use DashUIKit components
- Update SelectCoinView with DashUIKit imports and usage
- Update project configuration for new dependencies
- Remove ErrorIllustration, LoadingIllustration, SuccessIllustration (now in DashUIKit)
- Remove HaltedToast component (replaced by DashUIKit Toast)
- Update SelectCoinView to use DashUIKit Toast component
- Update SwapTransactionFailureView with DashUIKit Toast and ErrorIllustration
- Update SwapTransactionPendingView with DashUIKit LoadingIllustration
- Update SwapTransactionSuccessView with DashUIKit Toast and SuccessIllustration
- Update project configuration for new component structure
- Remove AddressFieldView from project (now in DashUIKit)
- Update EnterAddressView to use DashUIKit AddressFieldView component
- Update SelectCoinView with DashUIKit integration
- Update project configuration for new component structure
- Remove DashBalanceView, DashPickerView, EnterAmountView, SwapAmountView (now in DashUIKit)
- Remove ScaleToFitWidth geometry utility (now in DashUIKit)
- Update SwapConvertView to use DashUIKit EnterAmount component
- Update SwapConvertViewModel to work with new component structure
- Update project configuration for DashUIKit integration
- Remove NumericKeyboardView from project (now in DashUIKit)
- Update DashSpendSinglePanel to use DashUIKit NumericKeyboardView
- Update DashSpendUserAuthScreen to use DashUIKit NumericKeyboardView
- Update project configuration for new component structure
- Update SwapConvertView with refined component structure
- Update SwapConvertCardRow with new styling
- Update OrderPreviewView and related components
- Update OrderPreviewFeeRow and OrderPreviewTableRow
- Update SwapFeeInfoSheet component
- Update SelectCoinView with improvements
- Update SwapTransactionStatusHostingController
- Update SwapTransactionFailureView, SwapTransactionPendingView, SwapTransactionSuccessView
- Integrate latest DashUIKit components and styling
…der routing

Implement DashDEX feature entry-point with protocol-driven swap provider dispatch:
- Add SwapDirection enum (buy/sell) for directional swap flows
- Add RouteProvider protocol for swap provider selection logic
- Implement SwapKit and Maya as SwapProvider conformers via protocol requirements
- Update SwapBackend to dispatch based on protocol requirements, not extension fallbacks
- Migrate Maya coin icons to dynamic loading with fallback UI support
- Remove static Maya coin PNG assets (now loaded from API)
- Add DashDEX entry icons and illustrations to asset catalog

This ensures SwapKit overrides work correctly through proper protocol dispatch
instead of being skipped by static method resolution.
Update Maya and Swap UI components with improved icon handling and display:
- Refactor MayaCoinIconLoader for dynamic icon loading with fallback support
- Update MayaCryptoCurrency icon mapping for efficient loading
- Enhance SwapProvider protocol with better icon URL handling
- Update SwapKitModels for improved asset representation
- Optimize SwapKitSwapProvider icon URL construction
- Improve SwapCoinIconView with better fallback UI
- Update SelectCoinViewModel with enhanced icon loading logic
- Refine SwapPortalScaffold UI layout
- Update MayaPortalView for better icon display
- Improve ShortcutAction with DashDEX shortcut icon
- Add shortcut-dash-dex PNG assets to asset catalog
- Update project configuration for asset changes
… integration

Improve swap UI components and Maya provider icon loading:
- Enhance MayaCryptoCurrency icon mapping with better fallback support
- Optimize SwapKitSwapProvider icon URL handling
- Improve SwapCoinIconView with better image loading and fallback UI
- Update SelectCoinViewModel with enhanced icon loading logic
- Refine SwapKitPortalView icon display
- Update project configuration

This improves the user experience when displaying swap provider icons and coin assets.
jeanpierreroma and others added 29 commits July 2, 2026 14:26
… flow

- Enhance MayaCryptoCurrency with buy operation support
- Update project.pbxproj with buy flow component references
- Add support for deposit address resolution and refund handling
- Remove MayaAddressValidator (merged into MayaSwapProvider)
- Remove MayaCoinIconLoader (now handled by dynamic icon loading)
- Remove MayaCryptoCurrency (consolidated in provider models)
- Remove MayaExchangeAddressProvider (functionality in SwapProvider)
- Remove MayaPool (address management in provider)
- Remove MayaSwapPendingGate (transaction tracking in service)
- Cleanup legacy Maya model separation
…roviders

- Enhance SwapProvider with consolidated address validation and deposit routing
- Improve SwapDepositURIBuilder for provider-agnostic URI generation
- Consolidate MayaSwapProvider with address validator functionality
- Improve SwapKitSwapProvider with cross-chain routing logic
- Reduce model fragmentation by moving logic to protocol implementations
…alidation

- Enhance BuyEnterAmountView with provider selection and amount validation
- Improve BuyEnterAmountViewModel with deposit address generation
- Refine BuyReceiveView for transaction tracking and clipboard support
- Improve BuyReceiveViewModel with polling and completion handling
- Enhance RefundAddressView with better UX and validation feedback
- Refine RefundAddressViewModel for NEAR address handling
- Update all hosting controllers for proper lifecycle management
- Enhance SwapConvertView with better provider routing and amount display
- Improve SwapConvertViewModel for provider-specific formatting
- Refine EnterAddressView with consolidated validation logic
- Improve EnterAddressViewModel using SwapProvider protocol methods
- Update hosting controllers for consistent lifecycle handling
- Remove dependency on deleted Maya standalone models
…provements

- Enhance OrderPreviewView for buy/sell flow display
- Improve OrderPreviewViewModel with buy amount calculation
- Update SelectCoinView for better provider routing
- Improve SelectCoinViewModel using SwapProvider protocol methods
- Enhance SwapCoinIconView with dynamic icon fallbacks
- Update SelectCoinHostingController for lifecycle management
- Remove dependency on deleted Maya models
- Update SendCoinsService to use SwapProvider protocol methods
- Enhance MayaAPIService for provider-driven requests
- Improve Coinbase integration with new provider routing
- Remove MayaAddressValidatorTests (functionality moved to providers)
- Remove MayaExchangeAddressLookupContextTests (consolidated in tests)
- Update all services to use new protocol-based swap provider interface
- Update project.pbxproj to remove deleted Maya model references
- Remove test file references for consolidated tests
- Enhance SwapFlowCoordinator with updated provider routing
- Update build configuration for cleaner module separation
- Add ExchangeAddressProvider protocol for provider-agnostic address resolution
- Add SwapAddressValidator for consolidated address validation
- Add SwapCoinIconLoader for dynamic icon loading
- Add SwapCryptoCurrency for unified crypto currency handling
- Add SwapPendingGate for transaction state tracking
- Add SwapPool for liquidity pool representation
- Add test coverage for address validation and exchange lookup
- Create abstraction layer for multi-provider swap support
- Detect noRoutesFound error and show minimum amount message
- Provide user-friendly error messages for swap failures
- Handle edge cases in amount validation with proper localization
…ting

- Enhance SwapBackend for better provider dispatching
- Improve SwapDepositURIBuilder with better error handling
- Refine SwapKitSwapProvider for cross-chain deposit routing
- Enhance BuyEnterAmountViewModel with better validation
- Improve BuyReceiveView with enhanced message display
- Refine BuyReceiveViewModel for better state management
- Update RefundAddressViewModel with improved error handling
- Update CURRENT_PROJECT_VERSION to 14 for all targets
- All targets (dashwallet, dashpay, TodayExtension, WatchApp) at 8.6.1 (14)
- Maintain consistency across all build configurations
…tor routing

- Improve SwapDepositURIBuilder with better error handling
- Enhance BuyEnterAmountViewModel validation and error messages
- Add message display improvements to BuyReceiveView
- Refine BuyReceiveViewModel for better state handling
- Simplify RefundAddressViewModel logic
- Update SwapFlowCoordinator for improved routing
…ndling

- Enhance SwapAddressValidator with better address validation
- Improve SwapCryptoCurrency for consistent currency handling
- Refine SwapDepositURIBuilder for accurate deposit address generation
- Enhance BuySellPortalView with better layout and navigation
- Improve ShortcutsBarView for better shortcut display
- Refine BuyReceiveView with better UX and messaging
- Update RefundAddressView for NEAR address handling
- Improve SelectCoinView with better coin selection UX
- Enhance SwapPortalScaffold for consistent portal layout
- Enhance SwapKitQuoteDecodingTests for better quote validation
- Add BuyReceiveFlowUITests for buy flow screenshot testing
- Comprehensive test coverage for swap operations
- Update .gitignore for build artifacts
- Update project.pbxproj with test file references
- Maintain DWUpholdMainnetConstants.m configuration
- Ensure clean build environment
- Add SwapOrder model and SwapOrdersDAO for transaction tracking
- Implement SwapTrackingService for monitoring swap status
- Add SwapOrderMetadataProvider for displaying swap metadata in transactions
- Implement NetworkStatusService for connectivity monitoring
- Add database migration for swap_orders table
- Enhance SwapProvider protocol with provider-specific implementations
- Update BuyEnterAmountView, BuyReceiveView, RefundAddressView with improved UX
- Improve SwapConvertView and order preview flow
- Update HomeView with swap order metadata display
- Enhance MayaPortalView and SwapKit integration
DWUpholdMainnetConstants.m was committed with real Uphold clientID/clientSecret
(populated locally by the Release build phase). Restore it to master's blanked
(@"") state; real values belong only in the out-of-repo DWUpholdMainnetConstants__Release.m.
The leaked secret must be rotated separately in the Uphold developer dashboard.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…transfer icons

- SwapTrackingService: route-aware status polling and expiry handling
- SwapBuyTransactionMatcher: precise buy DASH-arrival matching (amount+time+received)
- SwapOrderMetadataProvider: guard against mislabeling non-DEX receives as "Converted"
- CoinbaseMetadataProvider: Coinbase transfer tx icon via service tagging
- SwapOrdersDAO: actor-based serialization
- OrderPreview / Convert / Buy flow refinements

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Processing shows a text label only; completed shows nothing extra; failed
(refunded/failed/expired) shows the error corner badge. Drops the ellipsis
placeholder badge for pending states.
fix(ui): address review findings and improve UI contrast
feat(wallet): DashDEX ui and logic improvements
feat(wallet): implement DashDEX buy flow with transaction submission
@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 171 files, which is 121 over the limit of 50.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c1307d1e-61b0-479d-a666-2ddfb95752a5

📥 Commits

Reviewing files that changed from the base of the PR and between bc40526 and cbb3b2b.

⛔ Files ignored due to path filters (28)
  • DashWallet/Resources/AppAssets.xcassets/Illustration/swapkit-illustration.imageset/illustration-dash-dex.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/Illustration/swapkit-illustration.imageset/illustration-dash-dex@2x.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/Illustration/swapkit-illustration.imageset/illustration-dash-dex@3x.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/Menu/menu-swapkit.imageset/dash-dex.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/Menu/menu-swapkit.imageset/dash-dex@2x.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/Menu/menu-swapkit.imageset/dash-dex@3x.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-bar-dash-dex.imageset/shortcut-bar-dash-dex.svg is excluded by !**/*.svg
  • DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-dash-dex.imageset/shortcut-dash-dex.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-dash-dex.imageset/shortcut-dash-dex@2x.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-dash-dex.imageset/shortcut-dash-dex@3x.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/dash-dex-buy.imageset/dash-dex-buy.svg is excluded by !**/*.svg
  • DashWallet/Resources/AppAssets.xcassets/dash-dex-illustration.imageset/dash-dex-illustration.svg is excluded by !**/*.svg
  • DashWallet/Resources/AppAssets.xcassets/dash-dex-sell.imageset/dash-dex-sell.svg is excluded by !**/*.svg
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.arb.imageset/maya.coin.arb.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.btc.imageset/maya.coin.btc.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.dai.imageset/maya.coin.dai.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.eth.imageset/maya.coin.eth.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.gld.imageset/maya.coin.gld.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.kuji.imageset/maya.coin.kuji.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.leo.imageset/maya.coin.leo.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.link.imageset/maya.coin.link.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.pepe.imageset/maya.coin.pepe.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.rune.imageset/maya.coin.rune.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.tgt.imageset/maya.coin.tgt.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.usdc.imageset/maya.coin.usdc.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.usdt.imageset/maya.coin.usdt.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.wbtc.imageset/maya.coin.wbtc.png is excluded by !**/*.png
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.wsteth.imageset/maya.coin.wsteth.png is excluded by !**/*.png
📒 Files selected for processing (208)
  • .gitignore
  • DashSyncCurrentCommit
  • DashWallet.xcodeproj/project.pbxproj
  • DashWallet/AppDelegate.m
  • DashWallet/Resources/AppAssets.xcassets/Illustration/swapkit-illustration.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/Menu/menu-swapkit.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/Navigation bar/navigationbar-back.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/Navigation bar/navigationbar-close.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-bar-dash-dex.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-dash-dex.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/dash-dex-buy.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/dash-dex-illustration.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/dash-dex-sell.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.gld.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.kuji.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.leo.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.link.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.pepe.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.rune.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.tgt.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.usdc.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.usdt.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.wbtc.imageset/Contents.json
  • DashWallet/Resources/AppAssets.xcassets/maya.coin.wsteth.imageset/Contents.json
  • DashWallet/Sources/Application/Tools.swift
  • DashWallet/Sources/Infrastructure/Database/DatabaseConnection.swift
  • DashWallet/Sources/Infrastructure/Database/Migrations/AddSwapOrdersTable.swift
  • DashWallet/Sources/Infrastructure/NetworkStatusService.swift
  • DashWallet/Sources/Infrastructure/Networking/HTTPClient.swift
  • DashWallet/Sources/Models/Coinbase/Accounts/Account/CBAccount.swift
  • DashWallet/Sources/Models/Coinbase/Coinbase.swift
  • DashWallet/Sources/Models/Coinbase/Infrastructure/API/CoinbaseAPIEndpoint.swift
  • DashWallet/Sources/Models/Coinbase/Infrastructure/API/DTOs/Address/CoinbaseCreateAddressesRequest.swift
  • DashWallet/Sources/Models/Explore Dash/Services/DashSpend/DashSpendError.swift
  • DashWallet/Sources/Models/Maya/MayaAPIService.swift
  • DashWallet/Sources/Models/Maya/MayaAddressValidator.swift
  • DashWallet/Sources/Models/Maya/MayaCoinIconLoader.swift
  • DashWallet/Sources/Models/Maya/MayaConstants.swift
  • DashWallet/Sources/Models/Maya/MayaCryptoCurrency.swift
  • DashWallet/Sources/Models/Maya/MayaExchangeAddressProvider.swift
  • DashWallet/Sources/Models/Maya/MayaSwapProvider.swift
  • DashWallet/Sources/Models/Swap/BuyOrder.swift
  • DashWallet/Sources/Models/Swap/DAO/SwapOrdersDAO.swift
  • DashWallet/Sources/Models/Swap/ExchangeAddressProvider.swift
  • DashWallet/Sources/Models/Swap/RouteProvider.swift
  • DashWallet/Sources/Models/Swap/SwapAddressValidator.swift
  • DashWallet/Sources/Models/Swap/SwapBackend.swift
  • DashWallet/Sources/Models/Swap/SwapBuyTransactionMatcher.swift
  • DashWallet/Sources/Models/Swap/SwapCoinIconLoader.swift
  • DashWallet/Sources/Models/Swap/SwapCryptoCurrency.swift
  • DashWallet/Sources/Models/Swap/SwapDepositURIBuilder.swift
  • DashWallet/Sources/Models/Swap/SwapDirection.swift
  • DashWallet/Sources/Models/Swap/SwapExecutionData.swift
  • DashWallet/Sources/Models/Swap/SwapKitErrorCopy.swift
  • DashWallet/Sources/Models/Swap/SwapOrder.swift
  • DashWallet/Sources/Models/Swap/SwapPendingGate.swift
  • DashWallet/Sources/Models/Swap/SwapPool.swift
  • DashWallet/Sources/Models/Swap/SwapProvider.swift
  • DashWallet/Sources/Models/Swap/SwapTrackingService.swift
  • DashWallet/Sources/Models/SwapKit/SwapKitAPIService.swift
  • DashWallet/Sources/Models/SwapKit/SwapKitConstants.swift
  • DashWallet/Sources/Models/SwapKit/SwapKitEndpoint.swift
  • DashWallet/Sources/Models/SwapKit/SwapKitModels.swift
  • DashWallet/Sources/Models/SwapKit/SwapKitSwapProvider.swift
  • DashWallet/Sources/Models/Transactions/DSAccount+SpentInputCheck.h
  • DashWallet/Sources/Models/Transactions/DSAccount+SpentInputCheck.m
  • DashWallet/Sources/Models/Transactions/SendCoinsService.swift
  • DashWallet/Sources/UI/Buy Sell/BuySellPortalView.swift
  • DashWallet/Sources/UI/Buy Sell/BuySellPortalViewController.swift
  • DashWallet/Sources/UI/Buy Sell/IntegrationViewController.swift
  • DashWallet/Sources/UI/Buy Sell/Model/BuySellPortalModel.swift
  • DashWallet/Sources/UI/Buy Sell/Model/ServiceDataProvider.swift
  • DashWallet/Sources/UI/Coinbase/Base/UIViewController+Coinbase.swift
  • DashWallet/Sources/UI/Coinbase/ServiceOverview/ServiceEntryPointModel.swift
  • DashWallet/Sources/UI/Coinbase/Transfer Amount/TransferAmountViewController.swift
  • DashWallet/Sources/UI/Explore Dash/Merchants & ATMs/Details/Views/POIDetailsView.swift
  • DashWallet/Sources/UI/Explore Dash/Merchants & ATMs/List/Filters/MerchantFiltersView.swift
  • DashWallet/Sources/UI/Explore Dash/Merchants & ATMs/List/Filters/TerritoryPickerView.swift
  • DashWallet/Sources/UI/Explore Dash/Views/DashSpend/Components/DashSpendSinglePanel.swift
  • DashWallet/Sources/UI/Explore Dash/Views/DashSpend/DashSpendUserAuthScreen.swift
  • DashWallet/Sources/UI/Home/HomeViewController+Shortcuts.swift
  • DashWallet/Sources/UI/Home/Tx Metadata/CoinbaseMetadataProvider.swift
  • DashWallet/Sources/UI/Home/Tx Metadata/GiftCardMetadataProvider.swift
  • DashWallet/Sources/UI/Home/Tx Metadata/SwapOrderMetadataProvider.swift
  • DashWallet/Sources/UI/Home/Views/HomeView.swift
  • DashWallet/Sources/UI/Home/Views/HomeViewModel.swift
  • DashWallet/Sources/UI/Home/Views/MetadataProvider.swift
  • DashWallet/Sources/UI/Home/Views/Shortcuts/Models/ShortcutAction.swift
  • DashWallet/Sources/UI/Home/Views/Shortcuts/ShortcutsBarView.swift
  • DashWallet/Sources/UI/Home/Views/TransactionFilterDialog.swift
  • DashWallet/Sources/UI/Maya/Convert/Components/DashBalanceView.swift
  • DashWallet/Sources/UI/Maya/Convert/Components/DashPickerView.swift
  • DashWallet/Sources/UI/Maya/Convert/Components/EnterAmountView.swift
  • DashWallet/Sources/UI/Maya/Convert/Components/MayaAmountView.swift
  • DashWallet/Sources/UI/Maya/EnterAddress/EnterAddressView.swift
  • DashWallet/Sources/UI/Maya/MayaPortal/MayaPortalView.swift
  • DashWallet/Sources/UI/Maya/MayaPortal/MayaPortalViewController.swift
  • DashWallet/Sources/UI/Maya/MayaPortalView.swift
  • DashWallet/Sources/UI/Maya/MayaPortalViewController.swift
  • DashWallet/Sources/UI/Maya/OrderPreview/OrderPreviewViewModel.swift
  • DashWallet/Sources/UI/Maya/SelectCoin/Components/CoinRowView.swift
  • DashWallet/Sources/UI/Maya/SelectCoin/Components/HaltedToast.swift
  • DashWallet/Sources/UI/Maya/SelectCoin/Components/MayaCoinIconView.swift
  • DashWallet/Sources/UI/Maya/TransactionStatus/MayaTransactionSuccessView.swift
  • DashWallet/Sources/UI/Menu/Settings/LocalCurrency/LocalCurrencyView.swift
  • DashWallet/Sources/UI/Payments/PaymentModels/DWPaymentProcessor.m
  • DashWallet/Sources/UI/Swap/Buy/EnterAmount/BuyEnterAmountHostingController.swift
  • DashWallet/Sources/UI/Swap/Buy/EnterAmount/BuyEnterAmountView.swift
  • DashWallet/Sources/UI/Swap/Buy/EnterAmount/BuyEnterAmountViewModel.swift
  • DashWallet/Sources/UI/Swap/Buy/Receive/BuyReceiveHostingController.swift
  • DashWallet/Sources/UI/Swap/Buy/Receive/BuyReceiveView.swift
  • DashWallet/Sources/UI/Swap/Buy/Receive/BuyReceiveViewModel.swift
  • DashWallet/Sources/UI/Swap/Buy/RefundAddress/RefundAddressHostingController.swift
  • DashWallet/Sources/UI/Swap/Buy/RefundAddress/RefundAddressView.swift
  • DashWallet/Sources/UI/Swap/Buy/RefundAddress/RefundAddressViewModel.swift
  • DashWallet/Sources/UI/Swap/Convert/Components/SwapConvertCardRow.swift
  • DashWallet/Sources/UI/Swap/Convert/SwapConvertAmount.swift
  • DashWallet/Sources/UI/Swap/Convert/SwapConvertHostingController.swift
  • DashWallet/Sources/UI/Swap/Convert/SwapConvertView.swift
  • DashWallet/Sources/UI/Swap/Convert/SwapConvertViewModel.swift
  • DashWallet/Sources/UI/Swap/DEXOfflineToastModifier.swift
  • DashWallet/Sources/UI/Swap/EnterAddress/Components/AddressSourceView.swift
  • DashWallet/Sources/UI/Swap/EnterAddress/EnterAddressHostingController.swift
  • DashWallet/Sources/UI/Swap/EnterAddress/EnterAddressView.swift
  • DashWallet/Sources/UI/Swap/EnterAddress/EnterAddressViewModel.swift
  • DashWallet/Sources/UI/Swap/OrderPreview/Components/OrderPreviewFeeRow.swift
  • DashWallet/Sources/UI/Swap/OrderPreview/Components/OrderPreviewTableRow.swift
  • DashWallet/Sources/UI/Swap/OrderPreview/Components/SwapFeeInfoSheet.swift
  • DashWallet/Sources/UI/Swap/OrderPreview/OrderPreviewHostingController.swift
  • DashWallet/Sources/UI/Swap/OrderPreview/OrderPreviewView.swift
  • DashWallet/Sources/UI/Swap/OrderPreview/OrderPreviewViewModel.swift
  • DashWallet/Sources/UI/Swap/QRScanner/GenericQRScannerController.swift
  • DashWallet/Sources/UI/Swap/QRScanner/GenericQRScannerView.swift
  • DashWallet/Sources/UI/Swap/QRScanner/QRCaptureView.swift
  • DashWallet/Sources/UI/Swap/SelectCoin/Components/SwapCoinIconView.swift
  • DashWallet/Sources/UI/Swap/SelectCoin/SelectCoinHostingController.swift
  • DashWallet/Sources/UI/Swap/SelectCoin/SelectCoinView.swift
  • DashWallet/Sources/UI/Swap/SelectCoin/SelectCoinViewModel.swift
  • DashWallet/Sources/UI/Swap/SwapFlowCoordinator.swift
  • DashWallet/Sources/UI/Swap/SwapMenuStyles.swift
  • DashWallet/Sources/UI/Swap/SwapPortalScaffold.swift
  • DashWallet/Sources/UI/Swap/TransactionStatus/SwapTransactionFailureView.swift
  • DashWallet/Sources/UI/Swap/TransactionStatus/SwapTransactionPendingView.swift
  • DashWallet/Sources/UI/Swap/TransactionStatus/SwapTransactionStatusHostingController.swift
  • DashWallet/Sources/UI/Swap/TransactionStatus/SwapTransactionSuccessView.swift
  • DashWallet/Sources/UI/SwapKit/SwapKitPortalView.swift
  • DashWallet/Sources/UI/SwapKit/SwapKitPortalViewController.swift
  • DashWallet/Sources/UI/SwiftUI Components/AddressFieldView.swift
  • DashWallet/Sources/UI/SwiftUI Components/DashSwitch.swift
  • DashWallet/Sources/UI/SwiftUI Components/Dialogs/ModalDialog.swift
  • DashWallet/Sources/UI/SwiftUI Components/Geometry Readers/FrameReader.swift
  • DashWallet/Sources/UI/SwiftUI Components/Geometry Readers/LocationReader.swift
  • DashWallet/Sources/UI/SwiftUI Components/Geometry Readers/ScaleToFitWidth.swift
  • DashWallet/Sources/UI/SwiftUI Components/Icon.swift
  • DashWallet/Sources/UI/SwiftUI Components/IconName+DashIconSource.swift
  • DashWallet/Sources/UI/SwiftUI Components/Illustrations/LoadingIllustration.swift
  • DashWallet/Sources/UI/SwiftUI Components/NumericKeyboardView.swift
  • DashWallet/Sources/UI/SwiftUI Components/RadioButtonRow.swift
  • DashWallet/Sources/UI/SwiftUI Components/ScrollViews/ScrollViewWithOnScrollChanged.swift
  • DashWallet/Sources/UI/SwiftUI Components/SearchBar.swift
  • DashWallet/ar.lproj/Localizable.strings
  • DashWallet/bg.lproj/Localizable.strings
  • DashWallet/ca.lproj/Localizable.strings
  • DashWallet/cs.lproj/Localizable.strings
  • DashWallet/da.lproj/Localizable.strings
  • DashWallet/de.lproj/Localizable.strings
  • DashWallet/el.lproj/Localizable.strings
  • DashWallet/en.lproj/Localizable.strings
  • DashWallet/eo.lproj/Localizable.strings
  • DashWallet/es.lproj/Localizable.strings
  • DashWallet/et.lproj/Localizable.strings
  • DashWallet/fa.lproj/Localizable.strings
  • DashWallet/fi.lproj/Localizable.strings
  • DashWallet/fil.lproj/Localizable.strings
  • DashWallet/fr.lproj/Localizable.strings
  • DashWallet/hr.lproj/Localizable.strings
  • DashWallet/hu.lproj/Localizable.strings
  • DashWallet/id.lproj/Localizable.strings
  • DashWallet/it.lproj/Localizable.strings
  • DashWallet/ja.lproj/Localizable.strings
  • DashWallet/ko.lproj/Localizable.strings
  • DashWallet/mk.lproj/Localizable.strings
  • DashWallet/ms.lproj/Localizable.strings
  • DashWallet/nb.lproj/Localizable.strings
  • DashWallet/nl.lproj/Localizable.strings
  • DashWallet/pl.lproj/Localizable.strings
  • DashWallet/pt.lproj/Localizable.strings
  • DashWallet/ro.lproj/Localizable.strings
  • DashWallet/ru.lproj/Localizable.strings
  • DashWallet/sk.lproj/Localizable.strings
  • DashWallet/sl.lproj/Localizable.strings
  • DashWallet/sl_SI.lproj/Localizable.strings
  • DashWallet/sq.lproj/Localizable.strings
  • DashWallet/sr.lproj/Localizable.strings
  • DashWallet/sv.lproj/Localizable.strings
  • DashWallet/th.lproj/Localizable.strings
  • DashWallet/tr.lproj/Localizable.strings
  • DashWallet/uk.lproj/Localizable.strings
  • DashWallet/vi.lproj/Localizable.strings
  • DashWallet/zh-Hans.lproj/Localizable.strings
  • DashWallet/zh-Hant-TW.lproj/Localizable.strings
  • DashWallet/zh.lproj/Localizable.strings
  • DashWallet/zh_TW.lproj/Localizable.strings
  • DashWalletScreenshotsUITests/BuyReceiveFlowUITests.swift
  • DashWalletTests/ExchangeAddressLookupContextTests.swift
  • DashWalletTests/SwapAddressValidatorTests.swift
  • DashWalletTests/SwapKitQuoteDecodingTests.swift
  • DashWalletTests/swapkit_quote_response.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Review on demand using usage pricing
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/dash-dex

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants