Also
- don't report error in case of status-go returning nil instead
of an empty array.
- fix misleading alias to AmountsArithmetic
- minor improvements requested in previous discussions
Updates: #15707
Adding local setting: metrics_popup_seen
Small refactoring: showing popup from main.qml
Showing popup: 1. on welcome screen, 2. in Settings/Privacy page and 3. after login when the popup has not been shown yet
Issue #15628
With the help of build flags this commit we sleep for 0.7 seconds before we make calls to the following status-go functions that crash on intel MacOS.
- `keycard_go.keycardInitFlow`
- `keycard_go.keycardCancelFlow`
- `status_go.initializeApplication`
As per my investigations this crash happens due to a race condition and was not consistently reproducible. Sometimes it would happen and other times it would not.
I know for sure it used to happen in these places and adding a tiny sleep before calling them made sure that the crashes weren't reproducible for me.
I think a 2.1 second delay during onboarding would be acceptable vs the existing condition of the desktop app straight up crashing.
Fixes#15507
Makes sure to enable the network where the owner token was minted before minting or airdroping a token.
This makes sure that the account selector shows the right balance and there is no ETH error before doing the transation
fix#15179 that triggers connection request from client
- Setup the initial architecture for connecting Status-go and UI
screens
- Implement the request Connection popup for Accept or Rejecting
connection
Replace missing methods calls of chart after it was replaced with a different
component.
Update chart on networks change.
Fix data for all chains requested - both test and real networks.
Fix some unrelated qml errors
Compute max fees for transaction related requests and display the
results to user.
Also:
- Add helper to convert from hex (backend) to decimal (frontend) values.
- Add helper to convert from float gwei to hex wei
- Update tests to accommodate for the new dependencies.
Sourcing of account balances is not included therefore the transaction is
allowed to go through even if the account balance is insufficient. An error
will be generated by the backend in this case.
Updates: #15192
Fixes#15526
Fixes the import popup showing the wrong state. That was because a param was removed from the function, but not from the call to that function, so `true` was passed in `invitationPending` when it shouldn't have.
I also added a call to `spectateCommunity` before the community intro popup so that the community spectated beforee sending the request
Fixes#15382
So there is no easy way from the models and data we currently have in the client to know which account minted the owner token. So the easiest way to help the user is just to catch the error and show a better message.
* feat(icon): show a red dot when we have unread notifications
* feat(windows-icon): update windows icon to have a white border
Fixes#14788Fixes#14855
Adds a red dot on the tray icon if there is an unread message in an unmuted channel or in the activity center
Implemented using the fees from the transaction data sent
by the dApp.
Also fixed the nim status go wrapper to send proper formatted
string as expected on the other side.
Updates: #15192
- Created data transformation file called `WalletAccountsAdaptor` for `SendModal`. Now it contains the owned wallet accounts model data transformations.
- Added common formatting method for short chain ids to some utils and partially removed backend dependency.
Extend support for legacy `eth_sign` and `eth_signTypedData`
methods.
Keep the `eth_sign` using the legacy method for compatibility
Use the newly added status-go apis for a safer implementation
of signing typed data by providing chain validation.
Closes: #15361
The app is crashing when the QVariant set as module context property gets collected. Not sure why it happens more often in the onboarding flow and on windows.
- 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
- Added `reloadAccountTokens` method to `Controller`, `AccessInterface`, and `Module` in `wallet_section` to trigger wallet reload.
- Updated `view` in `wallet_section` to handle new properties `isAccountTokensReloading` and `lastReloadTimestamp`.
- Emitted `SIGNAL_WALLET_ACCOUNT_TOKENS_REBUILT` with a timestamp in `service_token`.
- Implemented `restartWalletReloadTimer` RPC in `backend`.
resolves: #13652
Fixes#11093
When unmuting a channel, reevaluate the section badge so that it appears if there were unread messages in that channel
Also fixes an issue where the chat muted property was not set correctly in the cache after muting or unmuting
* refactor getters for chainIds and enabledChainIds
* simplify community chainIds getter
* simplify usage of network dto objects
* remove duplicated roles from send area
* rename network model in send module to network route model
Uses status-go's endpoints:
- `wallet_buildTransactions` to format the transaction
- `wallet_signMessage` to sign the transaction
- `wallet_buildRawTransaction` to format the final signed transaction
Updates #15126
The new account selector expects a generic account model. It will display all the account data if provided, including preferred chains, balance or asset balance. Otherwise it will display only the available data.
The account selector can receive an initial selection based on account address and will provide the current selected address and the current selected model item.
- Unify the account selector between communities and wallet
- Update the account selector to work with addresses instead of model indexes
- Adapt all components using the account selector or the account selection
- Move/reuse qml components involved in the account selector UI
- Remove nim logic used to handle index based account selection.
- Adding storybook page
This PR slightly simplifies the way tasks are passed between threads,
removing some unnecessary boilerplate while improving type safety by
removing casts.
This approach works because `nimcall` turns a `proc` into a simple
pointer which just like `cstring` is safe to pass between threads.
Further simplification is possible, but left for a future PR.
Implement infrastructure and integration with status-go to support
general session requests
Supported methods:
- personal_sign
- eth_signTypedData_v4
depends on status-go change that exposes the signing methods
Also
- support hex or utf8 encoding for personal_sign
- format the typed data for display in the modal
Tests are disabled for now, as they are crashing on CI
Close: #14927
Adding a new users_model instance holding all contacts. The users_model is adapted to contain all the user details.
This model is temporary until the full refactoring is done.
Trigger authentication with identity of the request
Track the authentication using the identity and allow only once
Add tests for the new functionality
Minor improvements around the code
Closes#15018
- no emojihash and identicon ring displayed in for keycard onboarding flow
- can't restore account (windows and linux), issue #15101
- can't create new account with keycard (linux, windows), issue #15055
- illegal storage access issue when hitting Start using status button (which actually was a crash after pressing the button), issue #15035
* refactor: rely on canPost and canView instead of checking permissions
Fixes#14983
* chore: remove all Light permission checks that are no longer needed
Things done here:
Integrate basic functionality for wallet connect in status-go
Update the list of dapps from the SDK
Retrieve the persistence dapps list from the backend as a fallback
if there is no connection and SDK can't be initialized
Provide a basic simple view of dapps in the wallet connect popup
Closes: #14557
Spent too much time figuring out the puzzle of
service->module->view->QML just to call a
status-go function.
Keeping this attempt for later while moving to a
simplified Controller/Provider approach. I will
come back to the abstraction when we add tests
to use it.
Updates: #14615
* chore: switch wakuv2 fleet to waku
See status-im/infra-nim-waku#91 for details
Mostly done automatically. Some parts manually.
* chode: drop eth.staging fleet
Signed-off-by: Jakub Sokołowski <jakub@status.im>
---------
Signed-off-by: Jakub Sokołowski <jakub@status.im>
Co-authored-by: Jakub Sokołowski <jakub@status.im>
Part of #14886
The problem was that the ChatDto doesn't have a categoryID, so we need to use the CommunityChat.
I think before, the channel groups had the full chat info, but not we can't rely on that.
The CommunityChat/Chat alignment refactor will simplify all of that https://github.com/status-im/status-desktop/issues/14219
Part of https://github.com/status-im/status-desktop/issues/14886
The problem was that we converted `collapsed` to `opened` way too early and with a logic error.
By using collapsed until the module, it's way easier to understand and also fixes the logic mistakes.
I also renamed a couple of functions and variables so that the mistake doesn't happen again.
Fixes#14844
The problem was that links to status.app that are not shared links were still considered shared urls, because our util function can only check if it contains `status.app`.
The solution is two fold:
1. If there are Link Previews, I ask the link preview for the type of Link. If it's a normal link, I just open it.
2. If there are no Link Preview for that link, we call `parseSharedUrl` as before, but now we handle the failure by opening in the browser because we can assume that it's a normal link.
- Some NIM's models define additional (not part of the
QAbstractModelItem API) method rowData to allow access to model's data
on UI side
- The same job can be done relying fully on public QAbstractModelItem
API using ModelUtils utility. It gives full transparency if we need
nim's model or other like ListModel replacement in tests/storybook
- propagate `tokensStore` to unbreak the Browser's wallet menu
Fixes#14805
Light functions are used first in order to reduce the number of calls to blockchain.
If the permission is not met (user is not a member of community/channel member list),
then normal permissions-check function is used.
Issue #14220
Fixes#14816
The muted property on the community was never checked anywhere. I don't know how it ever worked, but oh well.
I also made it so that when the mute property on the community changes, the badge gets re-evaluated.
- introduce a new boolean property `checkingPermissionToJoinInProgress`
and use it to enable/disable the Join (share addresses) button when
joining a community
- we don't have to wait for both join and channels permissions check to
finish, as the former is much faster
- renamed `joinPermissionsCheckSuccessful` to
`joinPermissionsCheckCompletedWithoutErrors` to avoid confusion
Fixes#14680
* Remove importCommunity from QML and Nim code
Handling issue 14310. Removed functions associated with the API.
* Updated pr for suggested changes.
* Updated module.nim
---------
Co-authored-by: Eliza <elsorber@gmail.com>
Nim part is only responsible for catching the signal about handled transaction and update UI.
Added CommunityTokenTransactionStatusChangedSignal.
Issue #4351
Handling for recovering Status profile for Linux updated since we don't use biometrics for Linux
and that requires slightly different flow.
Closes: #14673
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
Problem:
There were no difference between the fact that the avatar is not changed and the avatar is deleted. The same for bio and displayName
On NIM, this state was simply rewritten
Solution
(The problem was discovered due to the fact that if the picture does not change, then Nim receives a base64 encoded source - instead of the path to the new Avatar. Which Status go could not parse as a file.)
On the QML side, if we see that there have been changes, we add changes to changesMap Json, if there are no changes, then do not add. (This is the way to implement Option).
On the NIM Side - convert to saveData
On the Module side - distinguish Nil from an empty string
fixes#14464
- make it conditionally available for testing via
Settings/Advanced/Enable translations
- display a tooltip and infobox explaining the current and future
situation
- upon app start, force the language to "en" if the translations are not
enabled; and suggest app restart when they get disabled
Fixes#14527