* 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.
* 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
* 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
* Add theme base v2
* Initial new theme base files
* Typos
* Fixes
* Update theme files
* feat: Migrate to Material 3 Theming
Foundation, Theme Data Refactor, and First Extension Cleanup Batch.
This commit completes the first major phase of migrating to Material 3 theming by setting up the foundations for material 3 integration and begins the initial migration, removing custom theme extensions, updating theme data, and refactoring all relevant widget and page theming to use Material 3’s built-in color and typography tokens.
These changes:
- Lays the groundwork for Material 3 theming by restructuring the app’s theme configuration to use Material 3’s ColorScheme and TextTheme as the primary sources of color and typography throughout the app.
- Refactors the core theme config files by removing legacy custom color roles ensuring all color definitions now map directly to Material 3’s role.
- Begins the first batch migration of custom theme extensions (InfoTheme, PlaceholderTheme, KeyboardTheme, PinCodeTheme) and updates all affected widgets and pages to use Material 3 color and typography tokens instead of the custom properties.
- Cleans up the codebase by deleting the files of the initial set of migrated extensions and eliminating all related imports and usages.
* feat: Migrate to Material 3 Theming.
This change:
- Updates the themes README.md file to reflect the current structure and give more information based on the first major phase that was completed.
* feat: Migrate to Material 3 Theming
Deleting previous theme extensions
* feat: Migrate to Material 3 Theming
Another batch of migrations from existing extensions
* feat: Migration to Material 3 Theming
Third Migration batch for theme extensions
* fwat: Migration to Material 3 Theming
Final Migration batch for previous theme extensions
* Update onboarding hero
* Update button radius
* Add surfaceContainer to light theme
* feat(themes): Migrate to Material 3 Theming
This change:
- Adds new set of hero images
- Modifies the core structure for the themes
- Add missing color tokens to the theme classes
- Adds a CustomThemeColor class for custom color tokens
- Modifies the themelist to have a fall back for previous theme implementation
- Adds localization for some texts
- Modifies the flow for loading the theme on app start
- Add a WidgetsBindingObserver that listens for changes in the device theme and updates the app theme when there is a change
- Registers the themeStore as a Singleton for codebase wide use
* feat(themes): Migrate to Material 3 theming
This change:
- Migrates UI flows across the app to the new themes
- Confirms styling and typography of components across the app uses the new themes
- Remove instances of Palette use
- Switch TextStyles across the app to use theme text styles
* feat(themes): Migrate to Material 3 Theming.
This change:
- Adjusts bottomsheets styling and removes duplicate close button
- Removes more themedata extensions from the previous implementation
* - Remove outlines from cards and dock
- Update menu colors
- Update padding/divider size for cards
* - Update PIN screen
- Fix navigation dock shadow
- Update wallet screen colors
* Update border radius --skip-ci
* feat(themes): Migrate to Material 3 Theming.
This change:
- Adds gradient backgrounds to the dashbaord and balance cards.
- Migrates the input fields across the app to BaseTextFormFields.
- Removes dependence of input fields on individual styling, focusing instead on using theme defined InputDecoration styling with adjustments on individual components where needed.
- Applies new theme styling to BaseTextFormField, AddressTextField and CurrencyAmountTextField.
* - Switch some hero images to PNG
- Fix nagivation_dock shadow
- Minor fixes
* feat: Add fallback to previous underline styling in central widgets
This change:
- Adds a fallback to CurrencyAmountTextField, AddressTextField, and BaseTextFormField, allowing them use the previous theme styling.
- Adds localization for new texts
* feat(themes): Update warning box colors for dark and light themes
* feat(themes): Relaod themes when user restores from backup, ensuring the user previous theme preference is used.
* feat(themes): Handle themes logic during restore from backup
This change:
- Refactors theme loading logic to handle backup restore edgecase
- Refreshes the theme based on the user saved preference during restore from backup flow
* Fix card gradients and spacing
* Fix even more radiuses
Test new icons for navigation_dock.dart
* Update onboarding flow backgrounds
Fix swap icon clipping
Fix some text colors
Add more hero images
* Fix incorrect color for light theme
* Fix more hero images and cleanup
* Update text field icons
Fix info box CTA colors
Fix sync indicator colors
* Update toggle colors
Update dark theme colors (minor)
Update crypto_balance_widget.dart icon
* Update page transitions in router.dart
Fix some colors
* feat(themes): Display label by default for filled textfields
* feat(themes): Refactor theme handling across various components
This change:
- Fixes issue with themeMode resetting to system mode when app is restarted causing a UI glitch
- Updates theme checks from `currentTheme.type == ThemeType.dark` to `currentTheme.isDark` for consistency
- Adjusts UI components to use the theme directly from the themeStore
* feat(themes): Add animating tagline to the create pin welcome screen
* Revert text fields label temporarily, fix a couple colors, and cleanup some images
---------
Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
Co-authored-by: Blazebrain <davidadegoke16@gmail.com>
* Initial Payjoin
* Initial Payjoin
* More payjoin stuff
* Minor fixes
* Minor fixes
* Minor cleanup
* Minor cleanup
* Minor cleanup
* Minor cleanup
* Minor cleanup
* Minor cleanup
* Fix minor bug causes by data inconsistency in the btc utxos
* Minor cleanup
* Minor cleanup
* Minor cleanup
* Minor cleanup
* Initial Payjoin
* Initial Payjoin
* More payjoin stuff
* Minor fixes
* Minor fixes
* Minor cleanup
* Minor cleanup
* Minor cleanup
* Minor cleanup
* Minor cleanup
* Minor cleanup
* Fix minor bug causes by data inconsistency in the btc utxos
* Minor cleanup
* Minor cleanup
* Minor cleanup
* Minor cleanup
* Fix Rebase issues
* Move PJ Receiver to isolate
* Add Payjoin Setting
* Payjoin Sender are now isolated
* Added Payjoin sessions to tx overview. Fix Fee issue with payjoin
* Clean up code
* Fix taproot for payjoin
* Fix CI Errors
* Add Payjoin UI elements and details page
* Add Payjoin UI elements and details page
* Fix Translations
* feat: Detect Payjoin URIs in pasted text and show to the User sending Payjoin
* feat: rename pjUri to payjoinURI for more code clarity
* Update res/values/strings_pl.arb
Co-authored-by: cyan <cyjan@mrcyjanek.net>
* Update cw_bitcoin/lib/payjoin/manager.dart
Co-authored-by: cyan <cyjan@mrcyjanek.net>
* Update cw_bitcoin/lib/payjoin/manager.dart
Co-authored-by: cyan <cyjan@mrcyjanek.net>
* feat: Disable Payjoin per default
* feat: Disable Payjoin fully if disabled or no Inputs available
* feat: Resume Payjoin if app comes back to foreground
* chore: Revert overly aggressive code formats
* feat: show correct Payjoin amount for receivers
* feat: Improved payjoin status
* feat: Show payjoin errors on payjoin details screen
* deps: update flutter to 3.27.4
* feat: Revert localisations
* bug: Remove duplicate transaction id on payjoin details
* style: remove double await in payjoin sender
* refactor(cw_bitcoin): Refactor method signatures and convert constructor to factory
* refactor(cw_bitcoin): Refactor wallet service and PSBT signer for cleaner code
Removed unnecessary `CakeHive` dependency and refactored `BitcoinWallet` initialization to use `payjoinSessionSource`. Improved code readability in `PsbtSigner` by reformatting lines and simplifying constructor methods for `UtxoWithPrivateKey`.
* fix: Resume Payjoin Sessions and load PJUri after sleep
* feat: Add "Copy Payjoin URL button" to receive screen
* fix: Add "Payjoin enabled"-Box below QR Code on the receive screen
* fix: Set payjoin_enabled color to black independent of the theme
* refactor: Payjoin session management and cleanup unused code.
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
Co-authored-by: cyan <cyjan@mrcyjanek.net>
* fix(cw_monero): prevent monero wallet from breaking during rename
* update to cleaned up monero.dart
* fix: transaction screen not refreshing in monero
* fix: wallets not opening until app restart after rename.
* fix(cw_decred): wallet renaming throwing
* fix: transaction not being shown after sending until 1st confirmation
* fix(cw_monero): loop safeguard
* fix: don't await wallet.fetchTransactions
* feat(passphrase for restore): improve passphrase discoverability for restore flow.
Makes the option for adding a passphrase more visible for the user to see while restoring a wallet with seeds.
This change:
- Adds a checkbox on the restore from seeds page that asks if the wallet has a passphrase
- Switches the main CTA for the page to "Add Passphrase" when the checkbox is checked
- Pops up a bottomsheet with input fields for the passphrase when the "Add Passphrase" button is pressed
- Completes the flow and restores the wallet with the passphrase when the "Restore" button on the bottomsheet is pressed
- Hides the passphrase input fields in AdvancedSettings page when its a restore flow.
* feat(passphrase for restore): improve passphrase discoverability for restore flow. (Cont.)
This change:
- Obscures the passpgrase input fields by default
- Changes the color for the main CTA button
* feat(passphrase for restore): improve passphrase discoverability for restore flow. (Cont.)
This change:
- Adjusts the colors for the buttons on both the seed page and the bottomsheet
* feat(passphrase for restore): improve passphrase discoverability for restore flow. (Cont.)
This change:
- Combines the control for the visibility icons of the passphrase input fields - one tap to rule them all :)
* fix(moralis-nft-errors): guard against concurrent NFT fetches and adjusts the message being presented to the user.
Previously multiple calls to get NFTs for the currently opened wallet could overlap and queue the error bottom sheet multiple times.
This change:
- Registers the NFTViewModel as a lazySingleton so its isLoading flag persists.
- Adds an early return in the call to fetch the wallet NFTs when isLoading is already true.
- Cleans up the error message being displayed to the user when there is an error.
* feat(moralis-nft-error): localize error message in NFTViewModel
* feat(nft/wc-bottom-sheet): Revamped the flow, service, theme, and UI for smoother UX
Revamps bottom‑sheet handling end‑to‑end to deliver a much more smoother experience.
This change:
- Refactors the BottomSheetService queueing logic to prevent races and ensure strict sequencing
- Update theme extensions and styling for the bottom‑sheet components
- Adds the option to either auto dismiss or allow user manually dismiss the bottomsheet
* fix: Context clash when entering the wallets on airplane mode. The flushbar clashes with the bottomSheet and results in it blocking entry to the selected wallet.
This change:
- Moves the logic for fetching nft to the listing page, no need fetching if the user does not route to the page,
- Routes to balance page when entering from wallet list page
- Adds a fade transition when entering the dashboard
- Reverts nftViewModel registeration to be a factory
* fix: Revert animation for now, prior to when the UX overhaul for the app is done
* fix: Remove duplicate registration
* feat: background sync improvements
- dev options on ci build cherrypick
- add permissions for background sync to AndroidManifestBase
- enable desugaring + update java compatibility to 17
- update walletconnect_flutter_v2
- update ens_dart
- update nostr_tools
- add notification for new transactions found in background
- expose more settings from flutter_daemon in UI
- remove battery optimization setting when it's already disabled
- fix notification permission handling
- fix background sync last trigger saving
- prevent notifications from being duplicated
* potential fix for multiple notifications firing for the same tx
* improve logging in background sync
* ui improvements to ignore battery optimization popup
* feat: logs for bg sync
disable decred bgsync
* fix: call store() directly to be sure that it is writing the data
* chore: rename logs to background sync logs
* Update lib/view_model/dashboard/dashboard_view_model.dart
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* chore: remove unused key
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* Reown WalletConnect Implementation
- Setup for Solana Chain
- Setup for EVM chain
- Enable signing messages and transactions on Solana Chain
- Fix issues related to signinig of transactions on Solana chain
- Decode mesage to human readable format - WIP
* Reown WalletConnect Implementation Continuation:
- Add readable text for signedTypedDatav4 and sendTransaction event requests
- Modify styling for bottomsheetModel
- Switch minimum deployment target to 13.0
- Gracefully handle errors
- Fix issues discovered while testing across dApps
* chore: ReownWalletConnectImplementation (Cont.)
- Remove unneeded code and files
- Rename files to match classes and vice versa
- Add maven jitpack repository for reown.com/yttrium repo
- Add better folder structuring to entire feature
- Add localization for all feature related texts
- Add testnet and devnet access for Solana Chain Service
- Add a better error message for Moralis NFT fetch
* feat:
- Add field to enter wc uri directly
- Handle bottomsheet not coming up after initial display
- Remove unneeded print statements
- Remove double display of success popup for session proposal bottomsheets
* fix:
- Add visual feedback to WC RelayClient Errors
- Adjust theme for bottomSheets
* Testing a theroy
* Temporarily add flags back
* Remove added flags and update proguard rules
* fix(android): update proguard-rules.pro and drop minify flags (#2199)
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* fix: Switch bottomsheet result from signOne to signAll
---------
Co-authored-by: cyan <cyjan@mrcyjanek.net>
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* fix: more verbose errors in backups
* show user friendly error, but prompt to send the full logs [skip ci]
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* fix: Error while restoring Solana Wallet with PrivateKey
* fix: Enhance Solana Error Messages, especially for ATA Creation Errors
* - Optimize Solana Transaction History, now more smoother and faster
- fix bug with transactions history not being displayed in real time until next reload
* feat: Add Open CryptoPay for sending
* bug: Fix sending Open CryptoPay for eth
* feat: add transaction dismissal
* style: remove print statements from OCP
* feat: add support for Monero over OCP
* bug: Hide "Add to Address Book" on OCP transactions
* style: revert code style in send_view_model.dart
* style: revert code style in send_view_model.dart
* feat: set failure state if it fails to create an OCP transaction
* Update lib/view_model/send/send_view_model.dart
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* feat: add exodus style bip39 to monero legacy seed
* feat: restore monero wallet from bip39 and add test
* bug: fix wrong naming in CI
* feat: add monero bip39 UI flow
* fix: monero.dart generation
* fix: skip monero_wallet_service tests till CI is fixed
* ci: copy monero_libwallet2_api_c.so to /usr/lib for testing
ci: reduce timeout for cw_monero tests
* fix: monero wallet creation credentials default to bip39 if mnemonic are set
* fix: do not skip monero wallets services test
* fix: Include non bip39 monero wallets on Wallet Group
* fix: null pointer stemming from missing language selector if seed is selected
* fix: Fixes to Bip39 Creation and restore
- Do not restore from 0 for fresh bip39 wallet
- disallow restoring bip39 wallet without date or height
* fix: Fixes to Bip39 restore
- Refresh height is now getting set correctly
- Add new create monero wallet tests
- Add seed-language English for Bip39 Monero wallets
- Fix seed-type naming
* feat (cw_monero): Store monero wallet after bip39 creation
* feat (cw_monero): remove prints from monero_wallet_service_test.dart
* fix: exception during seed language autodetect
* feat (cw_monero): Add support for passphrases on bip39 seeds
* feat (cw_monero): Add support for passphrases on bip39 seeds
* fix: seed language selection for recovering bip39 wallets
* style: improve readability of isLegacySeedOnly in wallet_keys_view_model.dart
* feat: hide monero seed type selector from advanced settings when creating a child wallet
* fix(cw_monero): use named arguments for bip39_seed tests
---------
Co-authored-by: cyan <cyjan@mrcyjanek.net>
* - enabled development options in CI builds.
- Implemented caching for account retrieval.
- refactor transaction handling in `dashboard_view_model.dart` to improve efficiency and reduce unnecessary updates in xmr.
- `DevMoneroCallProfilerPage`, for profiling performance of xmr,wow,zano wallet calls.
* use FeatureFlag.hasDevOptions
* prevent crashes in monero_c by using mutexes properly
improve performance of _transactionDisposer
remove unnecessary checks
* remove logging, bring back simplified logic
* update _transactionDisposer on length and confirmation of first and last transaction
* address comments from review
* don't throw unhandled exceptions in unawaited async code
* use cached transaction list in getAllSubaddresses, fix usage of txHistoryMutex
* [DNM] fix: crashes when opening wallet, performance issue when syncing and update dependencies
* Revert "use cached transaction list in getAllSubaddresses, fix usage of txHistoryMutex"
This reverts commit 4c4c33ac6a47603e970a6c8d940e90204525b241.
* Revert "[DNM] fix: crashes when opening wallet, performance issue when syncing and update dependencies"
This reverts commit d7603445ad6ae76d76bf179c34728ce242c8c610.
* Revert "use cached transaction list in getAllSubaddresses, fix usage of txHistoryMutex"
This reverts commit 4c4c33ac6a47603e970a6c8d940e90204525b241.
* update shared_preferences
* improve state management performance by not rendering multiple changes in transaction screen on a single frame
* fix wallet switching