Commit Graph

73 Commits

Author SHA1 Message Date
Alex Jbanca 7603f24372 refactor: Remove business logic from WC ui components
This commit brings a separation of concerns for the UI components involved in dApp interactions.

Issue: The UI components depend on the WalletConnectService and also on its dependencies like DAppsRequestHAndler. As a result the UI components have a hard dependency on the WalletConnect specifics and are incompatible with BC. This results in duplication of logic.
Issue: The UI components operate on WalletConnect specific JSON object. E.g. session objects, session proposal etc. As a result the UI is built around the WalletConnect message format.
Issue: The UI components operate on ListModel items received through functions and stored internally. Any change in the model would result in a crash.
Solution: Remove the WalletConnectService dependency from DAppsWorkflow. The DAppsWorkflow now operates with models, signals and functions. This is the first step in the broader refactoring. Moving the logic into the service itself will allow us to further refactor the WC and BC.

How does it work now:

Dependencies - The UI components have a dependency on models. SessionRequestsModel and DAppsModel.
Pairing - The pairing is initiated in the UI. On user input a pairingValidationRequested signal is emitted and the result is received as a function pairingValidated. If the url is valid the UI requests a pairingRequested. When the WalletConnectService is refactored we can go further and request only pairingRequested and to receive a pairingResult call as a function with the result. In the current implementation on pairingRequested we'll receive a connectDApp request.
Connecting dApps - The flow is initiated with connectDApp function. This call currently contains all the needed info as args. In the next step it could be replaced with a ConnectionRequests model. The connectDApp call triggered a connection popup if we're not currently showing one to the user. If we're currently showing one it will be queued (corner case). The connection can be accepted with connectionAccepted and rejected with connectionDeclined. Once the connection is accepted we're expecting a result connectionSuccessful or connectionFailed. The connectionSuccessful also expects a new id for the established connection.
Signing - The signing flow orbits around the SessionRequestsModel. Each item from the model will generate a popup showing the sign details to the user. Sign can be accepted or rejected using signRequestAccepted or signRequestRejected. No response is currently expected. The model is expected to remove the sign request item.
2024-10-09 13:32:53 +03:00
Michał Cieślak 1b3a4cf955 stores: walletSection usages moved from shared/RootStore to wallet/RootStore 2024-10-02 13:38:22 +02:00
Lukáš Tinkl 2e249f9941 fix[WalletConnect] Incorrect authentication method icon on sign modal
- `loginType` was not propagated correctly, also due to a wrong
RootStore
- plus an evil typo: `account.migragedToKeycard` :)

Fixes #16089
2024-09-29 11:01:35 +02:00
Seitseman 2275fe4f1f fix(Stored): Make stores typed
Adding types instead of var for stores used in qml components

Closes: #14801
2024-08-27 10:52:18 +02:00
Lukáš Tinkl e3dae7e1db feat(StatusButton) Add support to show text when button is loading
- add a secondary "loading" state (`loadingWithText`), that is show the
loading indicator next to the text
- simplify the StatusBaseButton layout (esp. handling the overall
opacity/visibility)
- add a QML test suite; the code was becoming too complex and adding a
simple boolean prop was getting "dangerous"
- port the SwapModal to use the new `loadingWithText` property

Fixes #15313
2024-08-19 22:36:50 +02:00
Lukáš Tinkl a7e74f3e00 chore(Global): Remove FeatureFlags access via Global singleton
- rationale: do not save global state in a singleton, gather and
propagate the values via FeatureFlagsStore

Fixes #14697
2024-08-12 20:00:31 +02:00
Roman Chornii 6aa6746de2
fix(dApps): Improved handling of connected dApps. (#15985)
1. Hiding DApps button on not supported wallet account selection
2. Filtering DApps in connected dApps list based on account selection

closes: #15589
closes: #15647
2024-08-05 16:41:20 +03:00
Anthony Laibe b2592d5d01 fix(@wallet): disable state for refresh
in case not interactive, we should not change the color on hover
2024-07-12 14:35:48 +03:00
Alex Jbanca ca8a0028a8
feat(WalletConnect): Implement sign request modal (#15520)
* feat(WalletConnect): Implement sign request modal

1. Implementing sign request modal based on SignTransactionModalBase
2. Adding storybook page
3. Integrate it in the app
4. Removing DAppRequestModal
5. Update RoundImageWithBadge to preserve aspect ratio between badge and main image

* fix(WalletConnect): Remove unneeded properties from WalletConnectService API

Removing `selectedAccountAddress` and `loginType`. These properties are now passed through DAppsWorkflow API

* fix(WalletConnect): Removing unnecessary changes
2024-07-12 00:00:15 +03:00
belalshehab 3452fbadc6 feat(wallet)_: add manual reload button to WalletHeader.qml
- Added a manual reload button to the WalletHeader to allow users to refresh wallet data on demand.
- Implemented a throttle timer to prevent excessive reloads.
- Show the last reload time.
- Updated UI elements to reflect the reloading state for user feedback.
- Connected the reload button to the backend to trigger the wallet reload functionality.

resolves: #13652
2024-07-04 00:19:42 +03:00
Stefan dfe53c4c7c chore(dApps) support multiple actions in DAppRequestModal
Also fix minor issue and add improvements

Updates #15126
2024-06-26 12:00:54 +02:00
Alex Jbanca 901362dfc1 feat(networkSelector): Refatoring of NetworkSelector to remove backend dependency 2024-06-21 16:18:51 +03:00
Stefan 145053e34f chore(dapps) implement service tests and basic workflow tests
Abstract WalletConnectSDK to make it testable
Implement WC service pairing test
Bring back DAppsWorkflow tests back to life and add a pair modal test

Updates: #14927
2024-06-12 15:44:53 +02:00
Lukáš Tinkl 1692651184 fix(Wallet): "All accounts" title casing typo
Fixes #14669
2024-05-27 14:19:34 +02:00
Stefan ee72ec7aee feat(dapps) add DAppsService component and ConnectDAppModal
Implement the initial Pairing user workflow and disconnect option for
the first session.

Also

- rename pairing modal accordingly (`PairWCModal.qml`) to make room for the proper
`ConnectDAppModal.qml`
- basic tests for service helpers
- update storybook to reflect the new user workflows

Closes #14607
2024-05-20 15:09:57 +02:00
Stefan 7cd97a0051 chore(dapps) move dApps UX into its own DAppsWorkflow component
Storybook: also automate related workflows for faster iteration

Also extend the inspector utils to handle Loaders and Popups

Updates: #14607
2024-05-20 15:09:57 +02:00
Stefan 1f60410db8 feat(dapps) implement wallet connect URI input
Other changes

- start Wallet Connect SDK using web engine after wallet is ready
- source WC project ID from the constants in nim
- close list when opening the `ConnectDappModal`
- remove the old POC modal instantiation
- rename ConnectDappPopup to Modal for consistency
- move specific dapps related user settings to their place in the component
- add DAppsStore to be used for dapps abstraction

Updates #14556
2024-05-13 10:33:16 +02:00
Stefan 2972531766 chore(global) add the dapps button under a feature flag
Also add basic feature flag support that work with QML and nim

Closes #14553
2024-05-02 12:26:58 +02:00
Stefan 913041d5d9 chore(dapps) foundation for dapps page in storybook
Updates #14317
2024-05-02 09:47:30 +02:00
Sale Djenic dd104960ba feat(walletconnect): initial code organization
Closes #14395
2024-05-02 09:47:30 +02:00
Ivan Belyakov 6ba0cdfafa feat(wallet): removed allAddresses flag as redundant 2024-04-12 15:18:19 +02:00
Khushboo Mehta 5473e3b14e chore(@desktop/wallet): Simplify the wallet networks service
fixes #12717
2024-03-28 11:47:33 +01:00
Sale Djenic 3d5b24b87f fix(tests): e2e saved addresses related tests fixed 2024-01-04 17:45:57 +01:00
Sale Djenic 3ac13a7678 chore(savedaddresses): preparing saved address for reuse in wallet settings section
Part 1 of #13088
2024-01-04 17:45:57 +01:00
Khushboo Mehta bc85bc8cd3 feat(@desktop/wallet): Include watch only per account
fixes #12305
2023-10-13 12:11:36 +02:00
Khushboo Mehta 7bdec15353 fix(@desktop/wallet): Replaced watched-only with watched address/adresses text 2023-10-06 13:08:08 +02:00
Khushboo Mehta 6c5c36584a feat(@desktop/wallet): Account view - Prefered network
fixes #11578
2023-08-01 09:51:33 +02:00
Anthony Laibe 5a9ff99aad fix(@wallet): overview balance with symbol
fixes #11397
2023-07-06 15:48:02 +02:00
Khushboo Mehta a2dd87c18b feat(@desktop/wallet): Watch only account toggle + persisted
fixes #11221
2023-06-29 10:18:42 +02:00
Lukáš Tinkl fe9bb7d398 chore: Update StatusBaseButton content item layout
- introduce StatusButton storybook page with controls to play around
with the its options and variants
- StatusBaseButton: make the content item horizontally centered by
default
- StatusBaseButton: remove `textAlignment` and fix `textFillWidth` for
the intended usage
- fixup usage of the 2 above options which were introduced merely as a
workaround, mostly in wallet + corresponding storybook pages

Fixes #10903
2023-06-20 14:10:35 +02:00
Anastasiya Semiankevich d9f15ace2b test(@tst_wallet_account_management): add test to verify hide watch-only button 2023-06-13 12:46:09 +03:00
Khushboo Mehta 28654e0187 \chore(@desktop/wallet): Change customisation colours on desktop to match those used on mobile
fixes #10637
2023-06-02 19:48:19 +02:00
Anthony Laibe 8e8f194eb7 feat(@wallet): add all account action 2023-05-15 08:51:19 +02:00
Khushboo Mehta a57c0b414b feat(@desktop/wallet): New Account header
fixes #10330
2023-05-10 16:02:37 +02:00
Stefan 691de11211 fix(Wallet) network selection and unify network implementations
Major changes:

- Don't allow empty network selection. End up using the nim model
  directly instead because of individual row changes issues
  encountered with nim models
- Made the clone model a generic implementation to be used in other
places where we need to clone a model: ReceiveModal,
AddEditSavedAddressPopup
- Use cloned model as alternative to NetworksExtraStoreProxy in
  ReceiveModal
- Added tristate support to our generic checkbox control
- UX improvements as per design
- Fix save address tests naming and zero address issue
- Various fixes

Notes:
- Failed to make NetworkSelectPopup follow ground-truth: show partially
  checked as user intention until the network is selected in the
  source model. Got stuck on nim models not being stable models and
  report wrong entry change when reset. Tried sorting and only updating
  changes without reset but it didn't work.
- Moved grouped property SingleSelectionInfo to its own file from
  an inline component after finding out that it fails to load on Linux
  with error "Cannot assign to property of unknown type: "*".".
  It works on MacOS as expected

Closes: #10119
2023-04-20 19:34:24 +02:00
Anthony Laibe 2a6d00b939 feat(@wallet): add overview module 2023-04-17 13:31:49 +02:00
Anthony Laibe ef4ffce909 fix(@wallet): warnings from wallet
fixes #10086
2023-04-04 14:46:20 +02:00
Khushboo Mehta a6df4566dd fix(@desktop/wallet): checkConnected API doesnt return correct values
fixes #9833
2023-03-31 19:59:49 +02:00
Khushboo Mehta 5b3a115f55 fix(@desktop/wallet): Loading screen after adding account
1. Removing logic for loading to nim
2. Handling error state for asset view also on the nim side

fixes #9648
2023-03-24 17:09:09 +01:00
Khushboo Mehta 072537f61a feat(@desktop/wallet): Implement connection error screens
fixes #9835
2023-03-23 15:26:22 +01:00
Noelia c7f18978de chore(MintingToken): Refactor access to stores in minting components
- Refactored minting components store access, since some panels were accessing stores directly. Now `CommunitySettingsView` is the single place where stores are accessed.
- Renamed store `CommunitesStore` to `CommunityTokensStore` for handling minting / airdrop actions / request models.
- `NetworkFilter` refactored to prevent direct access to store inside the component.

Closes #9663
2023-03-14 16:06:27 +01:00
Khushboo Mehta 169de5b5e1 feat(@desktop/wallet): Add loading State for Assets view and Wallet main navigation page 2023-01-31 07:57:37 +01:00
Dario Gabriel Lipicar a6afdb5266 fix(@desktop): use system locale across the application 2023-01-17 16:39:56 -03:00
Dario Gabriel Lipicar d11017f7b3 feat(@desktop/wallet): implement unified currency formatting in send/bridge modal
Fixes #8934
2023-01-17 16:39:56 -03:00
Dario Gabriel Lipicar 7c4022e4ac feat(@desktop/wallet): implement unified currency formatting
Fixes #8640
2023-01-12 15:21:27 -03:00
Anthony Laibe 9b0d9cf478 feat(@wallet): Display ens name in account view
fixes #8607
2022-12-14 16:04:58 +01:00
Alexandra Betouni fc3daa1451 (StatusSectionLayout): removed big space between header and content
Closes 7312
2022-09-28 15:37:52 +03:00
Jonathan Rainville aba2a42c6f test(@wallet): allow to use ganache with goerli 2022-09-13 11:56:42 +02:00
Stefan 2398b67bc1 fix(wallet): bring back copy wallet address
Depends on StatusQ's StatusAddressPanel generic control

Fixes: #6659
2022-08-05 17:05:02 +02:00
Anthony Laibe 499b9bd09e feat(@test): Add test for watch only account 2022-07-22 09:20:55 +02:00