* feat: add max decimal handling for crypto amounts and test coverage
* fix: correct decimal point handling in `withMaxDecimals` and update related test
* fix: ensure amount formatting aligns with selected currency decimals in ReceivePage
* fix: ensure amount controller syncs with ViewModel in AddressPage and ReceivePage
* feat: add support for currency decimals and streamline amount handling logic
* fix: ensure crypto and fiat amounts sync correctly in Send ViewModel
* feat(deuro): Enhance gas fee handling and error management for Deuro Savings Transactions.
This change:
- Introduces DeuroGasFeeException to handle insufficient ETH for gas fees.
- Adds check for ETH balance before savings transactions to prevent failures due to insufficient funds.
- Updates savings transaction methods to include error handling.
- Adds UI feedback for transaction failures in DEuroSavingsPage.
* Fix conflicts
* Update cw_ethereum/lib/deuro/deuro_savings.dart
Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com>
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com>
* feat: enhance Payjoin transaction details with block explorer link
* feat: enhance Payjoin transaction details with block explorer link
* fix: handle connectivity errors in Payjoin session operations
* feat(walletconnect): Minor update to WalletConnect tile UI to fix expanded image issue
* feat(walletconnect): Minor update to WalletConnect tile UI to fix expanded image issue
* feat(walletconnect): Enhance WalletConnect EVM chain service.
This change:
- Improves signTypedDataV4 method handing and data parsing in extractPermitData.
- Adjusts UI for One Click Auth requests
* feat(walletconnect): Add redirect to PairingMetadata in WalletKit setup
* fix(walletconnect): Ensure session null checks before handling redirects in EvmChainService
* fix(walletconnect): Add null safety checks for permitData properties in EvmChainService
* refactor(walletconnect): Update WCPairingItemWidget layout and improve error handling for image loading
* fix(walletconnect): Handle break in connection flow triggered by global exception handler when SVGParser fails on invalid SvgData and triggers FlutterError.
* refactor(solana): Remove redundant session request responses and simplify error handling in SolanaChainService
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* feat(token_validation): Improve flow for adding new tokens across wallets
This change:
- Implements check to see if a token is already added, preventing duplicates
- Triggers dialog warning if its a duplicate token
- Takes EVM Chains contract adddress case-insensitivity when making checks for potential scams.
* refactor(token_validation): Modify token management flow
This change:
- Removes duplicate token check during token addition in EVMChainWalletBase.
- Introduces a flag to indicate if a token is being edited
- Adjusts token addition validation to bypass checks when editing an existing token.
* Update lib/src/screens/dashboard/edit_token_page.dart
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* tor wip
* Enable tor on iOS
* Prevent app lag when node is exceptionally slow (usually over tor)
* fix: logic in daemonBlockchainHeight refresh
fix: storing tor state
* Pin ledger_flutter_plus dependency to fix builds
* bump arti version
* wip
* add single httpclient
* route everything I was able to catch trough the built-in tor node
* Enable proxy for http.Client [run tests]
* add tor proxy support to cw_evm, cw_tron and cw_polygon [run tests]
* remove log pollution, cleanup [skip slack]
* fix tests not working in latest main [skip slack] [run tests]
* remove cw_wownero import
* fix build issues
* migrate all remaining calls to use ProxyWrapper
add a CI action to enforce using ProxyWrapper instead of http/http.dart to prevent leaks
* fix tor background sync (will work on test builds after #2142 is merged and this PR is rebased on top)
* wip [skip ci]
* relicense to GPLv3 add socks5 license, build fixes
* use ProxyWrapper instead of http in robinhood
* Revert "relicense to GPLv3"
* feat(cw_bitcoin): support socks proxy and CakeTor
* fix(tor): migrate OCP and EVM over to ProxyWrapper()
* chore: cleanup
fix: show tor loading screen when app is starting
* fix: tor switch properly dismisses fullscreen loading dialog
fix: connectToNode after tor startup on app start
* fix(tor): status check for xmr/wow/zano
* fix(tor): onramper request fix
* fix(api): ServicesResponse is now being cached and doesn't fetch data everytime DashboardViewModel is being rebuilt
fix(tor): do not fallback to clearnet when tor failed.
fix(tor): do not leak connections during app startup
chore: refactor bootstrap() function to be separated into bootstrapOffline and bootstrapOnline
fix(cw_bitcoin): migrate payjoin to use ProxyWrapper
* [skip ci] remove print
* address comments from review
* fix: derusting tor implementation
Instead of rust-based Arti I've moved back to the
OG C++ tor implementation.
This fixed all issues we had with Tor.
- onion services now work
- all requests are going through without random errors
- we don't have to navigate a maze of multiple forks of multiple packages
- fully working `torrc` config file (probably will be needed for Tari).
- logging for Tor client
- and so on.
feat: network logging tab
feat: use built-in proxy on Tails - this should resolve all issues for Tails users (needs testing though)
* fix conflicts with main
bump https to fix build issue
relax store() call
* fix(cw_wownero): tor connection
fix(tor): connection issues
* fix(cw_evm): add missing chainId
fix(cw_core): solana rpc fix
* feat: mark tor as experimental
fix: drop anonpay onion authority
fix: drop fiatapi onion authority
fix: drop trocador onion authority
fix: disable networkimage when tor is enabled
fix: handle cakepay errors gracefully
* fix re-formatting [skip ci]
* changes from review
* Delete android/.kotlin/sessions/kotlin-compiler-2468481326039681181.salive
* fix missing imports
* Update pubspec_base.yaml
---------
Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
* feat: stop polling payjoin on switch wallet
* refactor: improve Payjoin session handling and cleanup unused methods
- Replaced `initReceiver` with `getUnusedReceiver` to reuse existing Payjoin sessions.
- Streamlined session initialization by removing `spawnNewReceiver`.
- Adjusted wallet sync reactions to resume Payjoin sessions when necessary.
* fix: Receiver.fromJson correctly handle parameter format in Payjoin manager
* fix: try reloading unspents if unspents are empty; No Unpsents available are now recoverable errors
* fix: ensure transaction details display only if transactionInfo is available and adjust payjoin success status handling
* fix: adjust payjoin success status handling for pending transactions
* fix: add error handling for Payjoin initialization and receiver creation [skip-ci]
* fix: add unrecoverable error handling for Payjoin sender sessions
* fix(cw_monero): call store() directly after commiting tx to make sure that tx key is written to cache
also, store it in TransactionDescription hive box
* Update lib/view_model/send/send_view_model.dart
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* fix(solana-issues): Fix missing solana transaction history entries
* fix(solana-issues): Fixes issues relating to Solana Transaction History
This change:
- Modifies transaction parsing logic to handle more scenarios and better parse Solana transaction data.
- Adds partial filter for spam transactions
* fix(solana-issues): Enhance transaction parsing for Associated Token Account (ATA) programs
This change:
- Adds logic to differentiate between create account and token transfer transactions for the ATA program.
- Introduces a check to skip transactions that only create accounts without associated token transfers.
* fix(solana-issues): Improve transaction update logic and enhance error handling
This change:
- Updates the transaction update callback to only trigger when new valid transactions are present.
- Enhances error handling for insufficient funds by distinguishing between errors for sender and receiver.
This change:
- Adds svg icons for history and notification
- Updates the sidebar and services widget to use new images
- Fixes services widget icon looking very tiny on desktop
* feat(swap-status-monitor): add real-time swap status monitoring and UI updates
- Introduce SwapManager for automatic tracking of active-wallet swaps.
- Automatically queues new or updated trades from the Hive box.
- Periodically fetch and persist swap statuses via the corresponding trade provider.
- Implement start(wallet, providers), stop(), and dispose() for lifecycle control.
- Apply user's ExchangeApiMode(disabled, tor-only, enabled) when fetching updates.
- Remove swaps from the watchlist on any final state (completed, expired, failed).
- Dispose SwapManager in AppState.dispose() to cancel polling and the Hive subscription.
* refactor(swap-status): replace SwapManager with TradeMonitor for improved trade monitoring.
This change improves the flow by simplifying the trade monitoring logic.
- Removes SwapManager class and replace with TradeMonitor implementation
- Update di and Appstate to register and dispose TradeMonitor
- Modify DashboardViewModel to use TradeMonitor instead of SwapManager
* fix: Modify trade monitoring logic to ensure trade timers are properly disposed when wallet switching occurs
* fix(swap-status): Fix receive amount for exchanges showing as .00 because of null values
* feat(swap-status): Enhance Trade Monitoring
This change:
- Adds a privacy settings option to disable automatic exchange status updates.
- Prevents trade monitoring when privacy settings option is enabled.
- Disables trade monitoring when the app is in background, we only want to run these checks in foreground.
- Refactors the trade monitoring logic to remove unneccessary checks and use of resources.
* feat(swap-status): Enhance Trade Monitoring
This change:
- Adds a privacy settings option to disable automatic exchange status updates.
- Prevents trade monitoring when privacy settings option is enabled.
- Disables trade monitoring when the app is in background, we only want to run these checks in foreground.
- Refactors the trade monitoring logic to remove unneccessary checks and use of resources.
* fix(swap-staus): Prevent unneccessary calls
* feat(swap-status): Prevent api request calls as long as last update time is less than specified interval
* refactor(theme-setup-update): Move didChangePlatformBrightness lifecycle method to Root widget instead of AppState. We already have an active WidgetsBindingObserver in Root widget.
* fix(theme): Add workaround for flutter iOS didChangePlatformBrightness issue causing unneeded rebuilds.
* Fix some colors
* fix(themes): Adjust background and text colors for action buttons on info bottomsheet
---------
Co-authored-by: Blazebrain <davidadegoke16@gmail.com>