Smoothen Jupiter Swap for Solana Wallets (#2816)

* feat: Integrate Jupiter DEX

* feat: Enable internal swaps

* feat: implement Jupiter swap execution api and enhance trade handling

- Added executeSwap method to handle signed swap transactions via the execute endpoint.
- Updated signAndPrepareJupiterSwapTransaction to include request ID and handle swap execution response.
- Modified trade details to use txId instead of id for Jupiter trades.
- Enhanced error handling for swap execution with user-friendly messages.
- Updated sendviewmodel to manage trade state updates after transaction commitment.

* fix: null error after successfully swapping

* fix: Finallyyy fixed the annoying tx history issue for solana dex swaps

* fix: update inputAddress to use toAddress in JupiterExchangeProvider

* feat: enhance transaction handling and token balance updates

- Cut down tx fetch/update time for transactions update after swapping
- Added TransactionFetchResult class to hold parsed transactions and token mints.
- Added pollForTransaction method to handle transaction polling with exponential backoff.
- Conditionally hide the external send button based on provider type.

* feat: add fees to trade object and handle null case

* feat: add Jupiter referral fee and account configuration

* fix: Jupiter dex swap fixes
- Fetch and display balance after each completed swap
- Make independent calls parallel, boosting balance display
- Remove incoming or outoging tags from tx history
This commit is contained in:
David Adegoke
2026-01-20 00:15:22 +01:00
committed by GitHub
parent cd2f87a76e
commit 696052f515
5 changed files with 105 additions and 27 deletions
@@ -55,7 +55,11 @@ class TransactionDetailsPage extends BasePage {
return GestureDetector(
key: item.key,
onTap: () {
Clipboard.setData(ClipboardData(text: item.value));
final textToCopy = item.title.toLowerCase() ==
S.of(context).transaction_details_transaction_id.toLowerCase()
? item.value.replaceAll(RegExp(r'_(incoming|outgoing)$'), '')
: item.value;
Clipboard.setData(ClipboardData(text: textToCopy));
showBar<void>(context, S.of(context).transaction_details_copied(item.title));
},
child: ListRow(