Commit Graph

174 Commits

Author SHA1 Message Date
Alex Jbanca 00fb1ff60a
fix(WC): Refactor dapps service to work with multiple SDKs
This PR is refactoring the dapps service to avoid code duplication between SDKs and also to avoid overlapping requests/responses.
It brings Browser Connect inline with Wallet Connect in terms of session management and sign transactions.

New architecture:

WalletConnectService becomes DAppsService. Its responsibility is to provide dapp access to the app. This is the component currently used by the UI
What does it do:
1. Provide dapp APIs line connect, disconnect, session requests etc
2. Spawn app notifications on dapp events
3. Timeout requests if the dapp does not respons

DAppsRequestHandler becomes DAppsModule. This component is consumed by the DAppService. Its responsibility is to aggregate all the building blocks for the dapps, but does not control any of the dapp features or consume the SDKs requests.
What does it do:
1. Aggregate all the building blocks for dapps (currently known as plugins)

DAppConnectionsPlugin - This component provides the session management features line connect, disconnect and provide a model with the connected dapps.
SignRequestPlugin - This component provides the sign request management. It receives the sign request from the dapp, translates it to what Status understands and manages the lifecycle of the request.
2024-11-09 00:38:52 +02:00
Alex Jbanca 4636f80260
feat(WC): Enable Wallet Connect feature by default
+ Update the dialog where the user choses the connection to enable or disable the connection option based on flags
+ Separating the walletConnect flag and browserConnect flag usage so that either one can be disabled without affecting the other feature
+ Update qml test
2024-11-07 21:06:11 +02:00
Alex Jbanca 705d595bdb
fix(WC): Adding tests for ChainsAvailabilityWatchdog and ChainsSupervisorPlugin
+ move other tests from the wrong folder
2024-11-07 21:06:11 +02:00
Alex Jbanca adf760e81c
feat(WC): Handle unavailable chains or internet connection
This commits implements the `connect` `disconnect` session events for WC and also disables primary buttons for WC whenever there is no connection to internet or chains.

+ update tests
2024-11-07 21:06:11 +02:00
Alex Jbanca 9d64cc1a57
feat(WC): Implementing SIWE flows
to squash.- implementing siwe flows
2024-11-07 21:06:08 +02:00
Alex Jbanca a398d348a4
fix(WC): Fix property names collisions
to squash - property names collisions
2024-11-07 21:06:04 +02:00
Dario Gabriel Lipicar ea94065c57 fix(swap): invalidate old uuid and route when a new route request is made
Fixes #16574
2024-10-31 12:12:28 -03:00
Jonathan Rainville d511c25d2e
remove old code about ID verification and fix trustStatus bug (#16548)
* chore: remove old code about ID verification

* refactor(trust): remove untrustowrthy and isVerified from items and use trustStatus

* chore(status-go): up status-go to get fix for trustStatus reseting

Fixes #16392

* chore: remove verified/trusted profile showcase category
2024-10-29 14:08:12 -04:00
Sale Djenic f6055946d4 chore: usage of goerli removed 2024-10-29 15:46:09 +01:00
Lukáš Tinkl d9d6d90dc9 [Style] remove legacy Style and its themes
- legacy Style and ThemePalette removed
- moved and deduplicated font definitions into `Theme` (unrelated to a
color palette)
- `Style.current.foo` -> `Theme.foo`
- `Style.current.fooColor` -> `Theme.palette.fooColor`
- upgrade the imports to 5.15
- removed some mode dead components

Fixes #16514
2024-10-22 15:54:31 +02:00
Anastasiya Semenkevich 05f8005336 chore(@storybook): skip flaky test 2024-10-18 20:14:28 +03:00
Sale Djenic fe5c135486 chore: sign the flow only once if approval and transaction need to be placed once after another (swap flow)
Closes #16337
2024-10-16 09:52:46 +02:00
Alex Jbanca 684d0b4d63 fix: DAppsWorkflow flaky test 2024-10-15 13:40:48 +03:00
Michał Cieślak 03db15529e Cleanup after #16497 workaround 2024-10-11 23:37:50 +02:00
Michał Cieślak f75e4e0c47 Introduce ability of calling StatusQ methods from nim
Closes: #16496
2024-10-11 23:37:50 +02: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
Michał Cieślak 417ad03ce1 StatusQ: Redundant TextUtils removed 2024-10-11 12:14:53 +02:00
Michał Cieślak 9f9dcefcf8 chore: using StringUtils.plainText consistently
There were two version of plainText - one exposed from the backend,
another, backend-independent in StringUtils. The latter one is now
used in all cases.
2024-10-11 12:14:53 +02: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
Lukáš Tinkl bf666c20f5 fix(chat): chat input accepts DnD for blocked users
- do not allow DND when the StatusChatInput is disabled
- remove `Global.dragArea` variable from the Global singleton
- move the `DropAreaPanel` into `StatusChatInput` and handle its
enabling from there

Fixes #16451
2024-10-10 10:33:13 +03:00
Alex Jbanca c9549079b9 chore: update WC qml tests with the new DAppsWorkflow API 2024-10-09 13:32:53 +03:00
Michał Cieślak 9acf8d8709 stores: remove isWalletEnabled from shared/RootStore
Closes: #16254
2024-10-02 13:38:22 +02:00
Michał Cieślak 502c8df411 shared/RootStore: make the SB stub empty
Closes: #16252
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
Michał 730fcef6de
StatusQ: Introduce LazyStackLayout - stack layout with deferred instantiation (#16417)
Closes: #16416
2024-09-26 14:16:30 -04:00
Lukáš Tinkl 655918a279 fix(SlippageSelector): cant do Swap with 100% slippage
- set the max custom limit to < 100%
- add a regression test

Fixes #16394
2024-09-25 16:16:33 +02: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 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 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
Khushboo Mehta 5771a33eaa feat(@desktop/wallet): Added feature flag FLAG_SEND_VIA_PERSONAL_CHAT_ENABLED for the send via personal chat feature
Also added logic in order to detect and highlight an address/ens name in the chat
2024-09-23 11:20:56 +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 894a5f19c9 feat(SendModal): add a spinner when resolving an ENS name
- update the SB page with the toggle too

Fixes #16355
2024-09-20 12:10:26 +02:00
Sale Djenic 8dc067e0c4 feat: fees update integration after calculating the initial route 2024-09-12 19:52:32 +02:00
Lukáš Tinkl c5598d9ff9 chore(StatusMemberListItem): refactor to use ItemDelegate
- simpler, standard property based API
- much lighter than deriving from the heavy StatusListItem
- should reduce RAM usage significantly, esp. with large communities

Iterates #11059
2024-09-12 15:04:22 +02:00
Sale Djenic c515a963e3 chore: remove old router logic
Closes #16201
2024-09-11 14:43:19 +02:00
Michał Cieślak 77fd4e78eb GifStore excluded from shared root store, StatusChatInput made indepedent from singeton stores
Closes: #16253
2024-09-11 11:26:30 +02:00
Michał Cieślak 9f94940a70 getSelectedTextWithFormationChars moved from store to utils and deduplicated 2024-09-11 11:26:30 +02:00
Lukáš Tinkl 0a1ebb69bd fix(StatusSeedPhraseInput): accept a common prefix suggestion
- fix for a corner case prob when there was a valid seedphrase word
(e.g. cat) that is at the same type a prefix for other valid suggestions
(e.g. category, catalog, ...); it was imposible to select it using Enter
key or mouse click from the suggestions popup at the last field
- add a QML regression test for this issue
- use standard subcomponents (StatusDropdown, StatusListView) reducing
code duplication and unifying UI/UX

Fixes #16291
2024-09-10 16:00:40 +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
Lukáš Tinkl 5cf4592c3b fix: Slippage Selector Issues
- add various error/warning messages according to Figma (where it makes
sense)
- letters or more than 2 decimals are caught by the internal validator
so those combinations are impossible to enter
- fix marking the custom value as (in)valid
- fix selecting "Use default" after typing a custom value
- fix resetting to predefined value after typing a custom value that
matches one of the predefined ones
- reject typing thousands separator
- add regression QML tests for the above fixes

Fixes #15017
2024-09-03 17:36:48 +02:00
Khushboo Mehta b8f41e35c4 feat(@desktop/wallet): Buy Mercuryo flow - Improvements
fixes #16041
2024-09-02 16:51:16 +02:00
Michał Cieślak 9c3b8fc34b Use ClipboardUtils.text instead of backend-dependent getFromClipboard 2024-08-29 15:46:17 +02:00
Michał Cieślak 7757f4e615 QClipboardProxy QML type renamed to ClipboardUtils
Additionally, copyTextToClipboard is renamed to setText, mimicking
QClipboard naming.
2024-08-29 15:46:17 +02:00
Cuteivist 658fe2a5b4
fix(wallet): Update collectibles media management (#16080) 2024-08-28 15:58:33 +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
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