Commit Graph

1150 Commits

Author SHA1 Message Date
Alex Jbanca 684d0b4d63 fix: DAppsWorkflow flaky test 2024-10-15 13:40:48 +03:00
Khushboo Mehta 3f55e6c9c5 feat(@desktop/wallet): Remove preferred chains from wallet accounts all over the app 2024-10-11 18:48:37 +02:00
Khushboo Mehta 7003ba73e2 feat(@desktop/wallet): Remove network prefixes in saved addresses and ReceiveModal 2024-10-11 18:48:37 +02:00
Khushboo Mehta 95369bca11 feat(@desktop/wallet): Remove network prefixes from main wallet accounts list 2024-10-11 18:48:37 +02:00
Khushboo Mehta 16a403e3e5 feat(@desktop/wallet): Remove network prefixes in Profile, Profile showcase and Profile preview 2024-10-11 18:48:37 +02:00
Alex Jbanca e99f817ccc chore: Migrate to the new WC packages
Migrate from `Web3Wallet` to `WalletKit`.
More details in the WC docs https://docs.reown.com/walletkit/upgrade/from-web3wallet-web
2024-10-10 23:32:50 +03:00
Alex Jbanca fd99b96cb5 feat(WalletConnect): Handle sign request expiration
Implementing the user-story for sign request expiry and add qml tests
+ other minor fixes

## Acceptance Criteria

```
//Always show the expiration
Given the sign/transaction request dialog is shown
When request has an expiration date
Then the user sees a 1 minute countdown in the dialog
```

```
// Show 1 minute timer
Given the sign/transaction request dialog is shown
When the request has 1 minute or less before expiring
Then the user sees a 1 second countdown in the dialog
```

```
Given the sign/transaction dialog is open
When the request expires
Then the Accept button is removed
And the only option for the user is to close the dialog
```

```
Given the sign/transaction request dialog is open
When the request expired
Then the `Sign` and `Reject` buttons are removed
And the `Close` button is visible
```

```
Given the sign/transaction request expired
Then a toast message is showing
And it contains the "<dapp domain> sign request timed out" message
```

```
Given the sign/transaction request dialog is open
When the request expired
Then the sign/transaction request dialog is still visible
```

```
Given the sign/transaction request expires
Then a console message is shown
And it contains 'WC WalletConnectSDK.onSessionRequestExpire; id: ${id}`'
```
2024-10-10 12:49:15 +03:00
Sale Djenic 46f34ec8fc fix: optimizes send modal flow for ens usernames 2024-10-09 13:10:14 +02:00
Alex Jbanca c9549079b9 chore: update WC qml tests with the new DAppsWorkflow API 2024-10-09 13:32:53 +03:00
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
Lukáš Tinkl 63fb79abd6 fix(CurrencyStore): fix passing the CurrencyStore around
- now that we no longer have them as singletons, just pass the one and
only instance down from AppMain
2024-10-07 12:09:23 +02:00
Anastasiya Semenkevich ffc5da3805 tests: add better condition when waiting for status change 2024-10-04 12:07:40 +03:00
Michał Cieślak 2af0d6668b stores: access shared/RootStore via explicit property instead of singleton 2024-10-03 20:08:32 +02:00
Michał Cieślak 1b3a4cf955 stores: walletSection usages moved from shared/RootStore to wallet/RootStore 2024-10-02 13:38:22 +02:00
Michał Cieślak 3c6ea3be43 HistoryView: wallet root store taken as an explicit dependency 2024-10-02 13:38:22 +02:00
Michał Cieślak 26b588cc40 shared/RootStore: token related content moved to TokensStore 2024-10-02 13:38:22 +02:00
Michał Cieślak 47f75c1ae2 TransactionDetailView: RootStore and CurrenciesStore decoupled 2024-10-02 00:08:20 +02:00
Michał Cieślak afe1cd59c0 shared/RootStore: remove duplicated methods of CurrenciesStore 2024-10-02 00:08:20 +02:00
Michał Cieślak 0686552bc3 TransactionDetailView: refactored to take root store as a dependency 2024-10-02 00:08:20 +02:00
Michał Cieślak c3a234908d CurrenciesStore: static model removed from store 2024-10-02 00:08:20 +02:00
Sale Djenic ad7e2df78a chore: improvements of the sending route generated by the router process
Closes #14636
2024-10-01 17:21:26 +02:00
Cuteivist 83d7c03585
feat(wallet): Add metrics for Send / Bridge / Swap (#16400) 2024-09-30 10:34:28 +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
Lukáš Tinkl d09448e406 fix(AddEditSavedAddressPopup): fix validating account
- `contactsModuleInst` was undefined due to a different RootStore
2024-09-29 11:01:35 +02:00
Lukáš Tinkl a0112f063e fix(TransactionDelegate): fix `transactionType`
- the `addressesEqual` was forgotten in the TransactionDelegate but it's
referenced by `transactionType` function inside the store
2024-09-29 11:01:35 +02:00
Lukáš Tinkl fed6f79a66 fix(SwapModal): Max slippage value remains as set even the custom field is erased
- if the slippage value is invalid, display a "N/A" text in the footer
instead of a partial value

Fixes #16395
2024-09-25 14:03:16 +02:00
Anastasiya Semenkevich a7eb8d9c77 chore: fix test for sending transaction 2024-09-24 15:15:38 +03:00
Michał Cieślak 00fe754c0d Token/Asset selectors fixes
- clear search on close (AssetSelectorCompact)
- sectionProperty removed
- highlighting fixed in TokenSelectorPanel
- setCustom renamed to setSelection
- test data moved into Component object
2024-09-23 12:30:50 +02:00
Michał Cieślak 249e1ae042 TokenSelectorPanel: tabs layout/sizing simplified 2024-09-23 12:30:50 +02:00
Michał Cieślak 6a935d098c TokenSelectorPanel tabs selection depending on set models fixed 2024-09-23 12:30:50 +02:00
Michał Cieślak 25164cc45a TokenSelectorNew renamed to TokenSelector 2024-09-23 12:30:50 +02:00
Michał Cieślak 9f40251588 Old version of TokenSelector removed 2024-09-23 12:30:50 +02:00
Michał Cieślak c8b8d1ee9d AssetSelector covered with unit tests 2024-09-23 12:30:50 +02:00
Michał Cieślak 8c2d2115b0 TokenSelectorAssetDelegate simplified
Moreover:
- reset search box for AssetSelector on close
- fix highlight when Asset/Token selector reset
- storybook pages/tests adjusted
2024-09-23 12:30:50 +02:00
Michał Cieślak 1d46673775 Bump SFPM version fixing model roles initialization issue
Closes: #16310
2024-09-23 12:30:50 +02:00
Michał Cieślak 79fe79884b SwapInputPanel using AssetSelector instead of TokenSelector
Closes: #16220
Closes: #16025
2024-09-23 12:30:50 +02:00
Michał Cieślak 8785e5fd08 BuyCryptoModal refactored to use AssetSelectorCompact 2024-09-23 12:30:50 +02:00
Michał Cieślak 125946a60a AssetSelectorCompact added 2024-09-23 12:30:50 +02:00
Michał Cieślak 2b4c3afd57 TokenSelector: TokenSelectorSectionDelegate excluded to separate component 2024-09-23 12:30:50 +02:00
Sale Djenic fa410434ad fix: browser connect - send transaction command
Fixes #16063
2024-09-20 20:57:02 +02:00
Alex Jbanca c769e42212 fix(WalletConnect): Fixing crashes
1. In some cases it was crashing on JSON.stringify for the model item
2. Avoid storing model objects
3. Fixing storybook
2024-09-20 20:51:20 +03:00
Lukáš Tinkl 6a2b3faeb0 feat: add countdown pill to sign dialogs and make them unclosable
- show countdown until which the sign (WalletConnect and Swap) dialogs
expire
- after expiration, hide the Reject/Sign buttons and display a plain
Close button
- make the dialogs non-closable by clicking outside or pressing Esc; the
user has to explicitely click some of the footer buttons

Fixes #16327
Fixes #16314
2024-09-20 09:47:10 +02:00
Sale Djenic ea8827ec97 fix: wallet connect - sake.lido.fi dApp - staking transaction gets stuck
Fixes #16096
2024-09-17 19:39:32 +02:00
Anastasiya Semenkevich 8bbe17b613 chore: search box for searchable collectibles panel 2024-09-13 17:44:49 +03:00
Cuteivist 69605f5965
fix: Use prefixes for address copy (#16230) 2024-09-13 14:19:26 +02:00
Sale Djenic 8dc067e0c4 feat: fees update integration after calculating the initial route 2024-09-12 19:52:32 +02:00
Anastasiya Semenkevich 9050459ee8 chore: add object name for collectibles delegates 2024-09-12 09:53:42 +03:00
Sale Djenic c4363be418 feat: fees update integration after calculating the initial route 2024-09-11 14:43:19 +02:00
Sale Djenic c515a963e3 chore: remove old router logic
Closes #16201
2024-09-11 14:43:19 +02:00
Cuteivist ff9f272295
fix: Apply custom asset / collectible order (#16227) 2024-09-11 14:00:25 +02:00
Lukáš Tinkl d37341caee fix(DAppSignRequestModal): correct wallet account color
- we are getting a colorId, so convert it

Fixes #16094
2024-09-06 16:19:59 +02:00
Lukáš Tinkl e58ae2c213 feat: Add external link to download extension plugin
- add a local popup with selection between "Status Connector" (external
link to Chrome Store) or "Wallet Connect" (the old flow involving
inputting the WC URI)
- simplify DAppsListPopup to use StatusDropdown to reduce code
duplication
- adjust SB and QML tests

Fixes #16111
2024-09-05 11:22:52 +02:00
Michał Cieślak b8fbeb157f CollectiblesSelectionAdaptor: use default token icon as a fallback 2024-09-05 08:55:15 +02:00
Michał Cieślak 204d72cd40 TokenSelectorNew: workaround for QTBUG-62411, minor sizing fixes 2024-09-05 08:55:15 +02:00
Michał Cieślak d82499fd7b AssetSelector added
This component is simpler version of TokenSelector, composed of the same
basic componets, useful when only assets are subject of selection.

Closes: #16234
2024-09-05 08:55:15 +02:00
Michał Cieślak 01a24e1b19 TokenSelectorNew decomposed into smaller, reusable subcomponents 2024-09-05 08:55:15 +02:00
Michał Cieślak afd16d6f6c TokenSelectorButton excluded from TokensSelector, sizing issues fixed 2024-09-05 08:55:15 +02:00
Anastasiya Semenkevich 9598e9a44c qml: new object names for token selector panel 2024-09-04 16:16:10 +03:00
Cuteivist 186b5f8798
fix: Update account only when networks did change (#16229) 2024-09-04 06:32:07 +02:00
Cuteivist f1904d9ef8
fix: Reset collectible details after exiting details page (#16231) 2024-09-04 06:29:31 +02:00
Cuteivist 70421a0454
fix: Correctly display manage tokens icons (#16228) 2024-09-03 06:07:03 +02:00
Michał Cieślak 7c24d19241 Usages of SubmodelProxyModel migrated to ObjectProxyModel 2024-09-02 20:20:10 +02:00
Khushboo Mehta b8f41e35c4 feat(@desktop/wallet): Buy Mercuryo flow - Improvements
fixes #16041
2024-09-02 16:51:16 +02:00
Cuteivist ee770257c5
chore: Disable clicking on Betatag (#16207) 2024-08-30 12:19:42 +02:00
Michał Cieślak a8940a71f5 Using ClipboardUtils.setText instead of nim's copyToClipboard 2024-08-29 15:46:17 +02:00
Dario Gabriel Lipicar 4257294c60 feat(wallet): upgrade paraswap api to v6.2
Closes #15755
2024-08-28 13:43:07 -03:00
Cuteivist 658fe2a5b4
fix(wallet): Update collectibles media management (#16080) 2024-08-28 15:58:33 +02:00
Sale Djenic 3cf6614082 chore: new router error `no positive balance` added 2024-08-28 11:26:23 +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
Anastasiya Semenkevich ea31d1115f qml: change object name for account actions 2024-08-26 11:52:39 +02:00
Alex Jbanca 736075b817 fix(WalletConnect): Fixing sign for uniswap and paraswap
There are two fixes needed here.
1. Status-go fix for unknown primitive when signing the message
2. Fix for Paraswap pairing failure due to required namespaces mismatch

Needs: https://github.com/status-im/status-go/pull/5755
2024-08-26 11:41:27 +03:00
Cuteivist 67cf522f0a
fix(wallet): Fill bridge tx type (#16162) 2024-08-21 14:49:12 +02:00
Lukáš Tinkl f59ce285a9 fix(StatusBaseButton): correct radius and icon size for `isRoundIcon` mode
- this fixes 2 small regressions, namely in how we calculate the
background corner radius and icon size when in the mode of `isRoundIcon`
- the "Saved addresses" button in wallet's left view is very special on
its own; overall we have only 2 instances of this "round" icon buttons
in the whole app

Fixes #16156
2024-08-20 22:08:19 +02:00
Cuteivist 224dd5e58d
fix(wallet): Filter collectibles filter options (#16125) 2024-08-20 06:02:14 +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 7c10b16b67 chore(AmountToSend): AmountToSendNew is dead, long live AmountToSend 2024-08-17 09:39:42 +02:00
Lukáš Tinkl 114abc7015 chore(swap): port SwapInputPanel to AmountToSendNew
- adjust the API calls
- fixup the tests
2024-08-17 09:39:42 +02:00
Alex Jbanca de916507e9 fix(WalletConnect): Reject session request when the authentication fails
TODO: Analyse recovery options
2024-08-13 23:23:23 +03:00
Alex Jbanca 4d963031e9 fix(WalletConnect): Store web cookies and cache to a dedicated folder for each account
WalletConnect cannot operate on shared cookies in between accounts. This commit will split the cookies and cache in different folders with the user public key as folder name.
2024-08-13 23:23:23 +03:00
Alex Jbanca f00d7f3ec4 fix(WalletConnect): Fixing crash on authentication screen when the app resumes from a few minutes of inactivity
The root cause in this case was the usage of js stored QObjects coming from the model.

(cherry picked from commit 24a386d078)
2024-08-13 11:35:04 +03:00
Alex Jbanca 8d78f0fab2 fix(WalletConnect): dApp connection state presented in the UI is out-of sync
1. The DAppsListProvider needs to receive all the user accounts so that it can process all dapps the user is connected to (the dapps filtering based on selected account is an internal impl. detail)
2. Call `revokeSession` on disconnect only if the dapp cannot be found in the WC active sessions. There is some overlapping between Browser connector and Wallet connect because both operate on the same data stored in the DB. If Browser connector controller removes WC data, the WC disconnect flows cannot be successfully completed.
3. Reuse the same notification flow for Browser connector as it's used for WC
4. Fix dapp filtering when processing the dapps that will be displayed in the UI.

(cherry picked from commit 21227893c2)
2024-08-13 11:35:04 +03: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
Sale Djenic 20f30a52fd fix: keycard signing integration into wallet connect flows
Fixes: #15957
2024-08-12 19:52:04 +02:00
Khushboo Mehta 03e75e9532 fix(@desktop/wallet): Creating the UI flow needed to select params for making a purchase via Mercuryo 2024-08-12 11:25:00 -03:00
Sale Djenic b8ffa65113 chore: display generic error returned from the router 2024-08-12 12:53:58 +02:00
Cuteivist 86e054a328
fix(wallet): Don't reset wallet view after filter change (#15997) 2024-08-09 15:04:15 +02:00
Valentina Novgorodtceva b4ef71142e test: share wallet address test and default account values in send/receive/bridge 2024-08-09 11:14:54 +03:00
Khushboo Mehta ada348486e feat(@desktop/wallet): Swap:: Added text that links to Paraswaps terms and conditions page 2024-08-08 18:34:43 +02:00
Michał Cieślak a0a688c3e4 Wallet: swap/bridge buttons visibility adjusted
Closes: #15952
Closes: #15931
2024-08-08 17:29:29 +02:00
Michał Cieślak 8f21c71f69 fix(CollectiblesView): Workaround for crash when hiding collectibles
In some rare cases hiding collectibles was causing segfault, related to
checking if all timestamps are available. Combination of 2 SFPMs with
the same source and Aggregator working on those models. Additionally
filters/sorters were depending on the Aggregator value. The minimal
crashing sample has been isolated to be investigated in a separate
ticket. In this commit aggregator's value is applied in a deferred way
via Qt.callLater, fixing the issue.

Closes: #15775
2024-08-08 17:20:28 +02:00
Michał Cieślak bb05c068fa fix(Wallet/SendModal): Using community assets in SendModal unblocked
Closes: #15766
2024-08-08 15:40:18 +02:00
Anthony Laibe b4e08493ee fix(@wallet): enable eth bridging
fixes #16018
2024-08-08 10:56:47 +02:00
Sale Djenic 77ca8761a6 feat: some limits for wallet section
Added limitations:
- allowed adding of max 20 accounts
- allowed adding of max 3 watch only accounts
- allowed adding of max 5 key pairs (including the profile key pair)
- allowed adding of max 20 saved addresses per mode

Closes #15934
2024-08-08 10:28:30 +02:00
Alex Jbanca effd676a16 fix(WalletConnect): Fixing fees parsing when provided by the dApp
(cherry picked from commit f73356e2e8)
2024-08-08 10:52:37 +03:00
Lukáš Tinkl 96824dbb91 feat(Wallet): Display the "Buy" button everywhere
- display the "Buy" button in every context in the wallet footer except
when viewing a collectible's details

Fixes #15813
2024-08-08 09:30:49 +02:00
Alex Jbanca 833848188c fix(WalletConnect): Fixing disconnect notifications
The disconnect notifications were operating on `WalletConnectService.currentSessionProposal`. This object stores the current session object on connect, but it's not necessarily the same session the user wants to disconnect.
To fix this I'm getting the active sessions from status-go when the disconnect request is received (from Status or dapp). If the topic matches to any connection topic owned by the users accounts we'll show a notification.

(cherry picked from commit fea4e8ed76)
2024-08-08 09:47:20 +03:00
Dario Gabriel Lipicar c0e5111fe5 feat(@desktop/wallet): handle Paraswap price impact error
Fixes #15542
2024-08-07 23:14:22 -03:00
Alex Jbanca 6a7b0c0289 fix: Remove possibility to add watch accounts on release
(cherry picked from commit 566a954935)
2024-08-07 19:17:16 +03:00
Godfrain Jacques bef66612c5
feature(connector)_: Add model join to handle connected dApps (#15954)
* feature(connector)_: Add model join to handle connected dApps

* Fix review comments

* chore: bump status-go
2024-08-06 13:20:08 -07: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