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
Fixes#14479
The problem is our code assumed that we'd have the original message first, but in the case where messages are sent and edited before we open our app, when we fetch, we can't guarantee the order, so we might get the fully edited message directly from status-go.
The solution is simply to treat those messages as new messages.
Re-create the token criteria and include all items whenever the model changes.
The previous perf optimisation fix filtered the items where the criteriaMet doesn't change.
(cherry picked from commit a9a83df301)
fix(UserListPanel): hide the verification icon for yourself
fixes#13619
* split function for reseting trust status and verification+trust status
* rename function to removeTrustVerificationStatus
This is not an issue actually, instead a request was if the Keycard is present to display an
appropriate state based on the Keycard content, which requires the following steps when a user
clicks any flow to run:
- run appropriate keycard flow
- wait for a response from the keycard
- resolving state that needs to be displayed based on the response
- display appropriate state
This commit changes that to the following:
- display keycard reading state immediately after the user clicks any flow to run and then the rest as it was
- run appropriate keycard flow
- wait for a response from the keycard
- resolving state that needs to be displayed based on the response
- display appropriate state
With this change on OS' where communication between the app and keycard is slow it wouldn't look
like a delay in running flow, but instead, a user will be aware immediately that something is ongoing.
Closes#13242
* fix(permissions): fix hang when all channel perm check return
Fixes#14234
The problem was that we updated **all** the models from **all** the channels of a community each time the channel requirement checks returned.
The fix is to first of all, make sure we don't call that check too often. It sometimes got called twice in a row by accident.
The other better fix is to check if anything actually changed before updating. This solves the issue almost entirely. Since the permissions almost never change, the updates now take only a second.
* fix(permisisons): never run permission checks for privileged users
Also fixes#14234 but for admins, TMs and Owners.
Admins+ were still getting the hang, because the permission checks always returned something different than the models, because the models knew that admins have access to everything, but the permission check was running as if it were a normal user (I think, un-tested).
Anyway, the solution is more simple, we never need to run the permission checks on admins+, because they always have access to everything!
* fix(Communities): prevent channels model from emitting unnecessary signals
Closes: #14274
* chore(Communities): improve channels metadata lookup performance
ChannelsSelectionModel is removed, replaced with plain LeftJoinModel.
Transformations of left-side model are done in a single place, not in
every delegate making the join.
* only call update functions when there is something to update + move permission model creation when needed
---------
Co-authored-by: Michał Cieślak <michalcieslak@status.im>
The contract address is not resolved for the community tokens because
of symbol usage to identify assets. The symbol is not resolved by
`getTokenBySymbolByTokensKey`.
This fix changes from using symbol to always using assetKey to identify
the token for all non-native and non-collectibles transfers.
Closes#14074
- implement the eligibility check in C++, returning the highest possible
role the user would be allowed to join under
- enable/disable the "Share" button based on the above permissions check
- remove all the locally placed components, access teh popup only via
Global/Popups
- calculate the `accessType` internally based on the permissions present
- update the eligibility as the async check for permissions is finished
- fix the permissions panel background color
- partially revert the share/finish/cancel buttons behavior; it must be
one button due to StatusStackModal limitations
- fix some other minor UI issues or differences to current Figma designs
- adjust SB, add the possibility to play around with different
permission models
Fixes#14100
* Feat: New showcase models for a contact
* feat(ProfileShowcase): Integrate the new profile showcase backend
* fix(Storybook): Fix ProfileShowcaseModelsPage
* fix: fetch only requested profile showcase data
Support PR for https://github.com/status-im/status-go/pull/4982
* feat: Load and validate profile showcase for a contact in two steps
* fix: fetching criteria for profile showcase collectibles
* fix: review fixes
---------
Co-authored-by: Alex Jbanca <alexjb@status.im>
It seems `%*` operator we use in the `rpc` generics doesn't use the
`serializedFieldName` marker and `type` was serialized as `itemType`
and value the enum name instead of `type` and integer value
Updates: #13971
Add a separation layer for save/load/clear to ManageTokensModel
so that we can save/load from external sources.
The separate layer is composed of JSON as protocol, a set of signals
and slots for interface. The implementation forwards data to current
QSettings for storybook and nim controllers for the app.
Updates #13313, #13312
* (Chat): Display system add/remove messages immediately after update
fixes#9876
* (Chat): Display system "pinned" message immediately after update
fixes#10702
* fix issues from the PR
This commit:
- improves selection of addresses to reveal
- keeps the selection state for the popup lifetime
- brings higher granularity in terms of signed requests by keypairs
- meets new requirements from the latest related Figma
- merges edit shared addresses feature and request to join community features
into a single component, cause the flow is logically the same, with the only
difference that when editing revealed addresses we don't show the community
intro screen
Fixes at least points 3 and 4 from #13988
- take the balance threshold value into account when presenting the
assets in the main wallet view
- additional fix from Emil for storing the threshold value
- storybook fixes to display the correct `currentCurrencyBalance` values
based on the address/wallet filters and mocking the threshold values
using TransactionStore
Fixes: #14017
* feat(@desktop/communities): Hide channels if the user is not permitted to view and hideIfPermissionsNotMet is set
Extend chats model with channel permissions info and hideIfPermissionsNotMet.
Visibility of chat item is based on: member roles, channel permissions, hideIfPermissionsNotMet.
If all channels from category are hidden, category item is also hidden.
If all chats in community are hidden, infomration label is displayed.
Issue #13291
* chore(@desktop): Upgrade status-go
Issue #13291
Nim 2.2 comes with compile-time string formatting that doesn't raise
exceptions if the format string is invalid - instead a compile-time
error is given.
This PR introduces a backport of that feature which improves performance
and reduces the risk that formatting causes the app to crash and will
help migrating the codebase to newer nim versions that track exceptions
more carefully.
There should be no change in runtime behavior (except formatting being a
bit faster)
- Added network prefixes in profile showcase accounts delegate and included them in the searcher.
- Added filter to just display own accounts in profile showcase accounts tab.
Closes#13899
Annotating functions explicitly with `{.raises: [Exception].}` prevents
Nim from performing compile-time exception checking and is almost never
desired - it does have a tendency to spread through the codebase
however, similar to sub-par const correctness in C++.
The reason these annotations might have seemed necessary can be traced
to missing exception specifiers in the go imports bumped in this PR.
See
https://status-im.github.io/nim-style-guide/interop.c.html#functions-and-types
for background on Nim-go interop and
https://status-im.github.io/nim-style-guide/errors.exceptions.html for
more information on how exception tracking can be leveraged to find
missing error handling at compile-time.
This change has no runtime effect - it merely makes compile-time error
messages more informative or avoids them entirely.
* prevent animation if loading not started
* prevent scrolling to verification/contact request messages
* fix ac click behaviour
* remove CURSOR_VALUE_IGNORE. cleanup logs
Switch the activity filter to use the new session-based API that
deliver incremental updates to the current filter.
Drop the old quick win listening for individual change events and
use the unified API instead.
The new transactions (on-top) trigger the old "new transactions" buttons
that trigger reset of the current filter and the top new transacitons
highlighted.
Highlight mixed changes (not new on top) as they come in
Highlight new changes on filter reset
Closes#12120
* feat: Add new simplified model for profile showcase preferences
Close#13688
* feat: Add new api for saving profile showcase preferences
* feat(ProfileShowase): Save action with the new backend
- Created JSON file according to new backend structure when saving.
- Updated `dirty state` to sync writable and movable models when position is changed to have a better internal models sync.
- Reenabled identity fields save.
Closes#13799
* feat(ProfileShowcase): Showcase limit values integration with backend
Updated showcase limits with values coming from backend.
---------
Co-authored-by: Noelia <noelia@status.im>
- introduce `ENABLE_FLEET_SELECTION` desktop config entry to control the
Fleet selection UI availability
- UI can be enabled with envvar `STATUS_RUNTIME_ENABLE_FLEET_SELECTION=1`
Fixes#13848
- extend `isUserAllowedToSendMessage` to also cover
`Constants.chatType.communityChat`
- let `admin` always satisfy the permissions
- hide the add emoji/reaction button instead of disabling it when the
permissions are not met
- adjust the error msg to better reflect the reality (tokens vs.
permissions)
Fixes#13777
- Updated `AddSocialLinkModal` according to new design.
- Modified main social links items according to new design.
- Updated edit modal according to new design.
- Some text validation updates.
Closes#13511
Add new field AmountInWeis to token criteria dto.
Keep strings instead of floats in token_criteria_item.
HoldingSelectionModel keeps amount in wei-like units but they are displayed in permissions as floats (divided by decimals).
Issue #11588
- Created `ProfileShowcaseInfoPopup` component.
- Added storybook support for the new popup component.
- Added new popup into the application flow.
- New property stored in local account settings file.
Closes#13338