Fixes#12719
The problem was that we had two event handlers that did the same thing and if the main module's event processed first, the second event would basically reset the active item, causing the UI to try to fetch an empty chat content.
If you comment out the main module event handler, it doesn't work correctly, because it's the one doing the actual section switching.
Removing the chat section event handling is ok, because the main module already calls its child's (chat section) same functions.
* feat(ActivityCenter): Use signal for delivery of AC notifications from other services
Close#9349
* feat(ActivityCenter): Sync messages read state with AC notifications
Bump status-go that brings the sign APIs support for send transaction
and personal sign
Extend SDK
- simple SDK event handling in QML
- support session request response APIs
- pairing management
Closes#12637
Implement Controller to forward requests between status-go and SDK
implementation in QML.
Other changes:
- Source Wallet Connect projectId from env vars
- Mock controller in storybook
Updates #12551
Add GO helper to:
- loads WalletConnect SDK bundle
- bootstraps status-go user session
- provides a way to call status-go API from webview
- forwards status-go signals to webview
Updates: #12551
This is a first step to globalize how toasts are treated in the qml layer:
- Created `ToastsManager.qml` class to deal with all app toasts generation.
- Started moving community transfer ownership related toasts to the new manager class.
- Some small cleanup in `AppMain.qml`
Nim backend:
- Created new api method to deal with extended / action toasts.
- Updated needed model / item with new needed roles.
Closes of #12175
Setting signer logic and computing fees.
AC messages for different transfer ownership states.
Declining ownership logic.
Added `CommunityTokensStore.qml` stub.
Removed deprecated property.
Issue #11964
* feat: live received status link previews
* link preview cards: active members count
* update `requestCommunityInfo` to new backend. Add `requiredTimeSinceLastRequest` arg
Signing flow can be run globally (similar as authentication flow is run) emitting
`SIGNAL_SHARED_KEYCARD_MODULE_SIGN_DATA` from any part of the app
and listening for a signal `SIGNAL_SHARED_KEYCARD_MODULE_DATA_SIGNED`
to get corresponding result.
* feat(Profile): simplified approach to reuse existing models with profile
* feat(Profile): adapt nim models for view actions (move and change visibility)
* feat(Profile): save profile showcasse model changes to the db
* feat(Profile): update profile showcase models on changes from status-go
* feat(Profile): Various bug fixes for profile showcase
* fix(Profile): Fixes storing profile order and review fixes
* chore(Profile): Rename and minimise signals for updating base model filters
Implement a prototype of integrating [WalletConnect Web SDK]()
- integrate WalletConnect Web SDK using Node.js and packing it using
[webpack](https://webpack.js.org/guides/getting-started/)
- this way, we achieve the same versioning strategy for the SDK
- add WalletConnectSDK view
- it is used to load the web SDK via a WebView (validated working on
Mac and Windows)
- add new app dependency of WebView QT
- also update vendor packages `Dotherside` and `nimqml` to add
required WebView::initialize API used to initialize the WebView
integration at the app start
- add WalletConnectPage to Storybook for quick prototyping
- Also add dependency for WebView Qt lib
- index.js is the wrapper used to provide a simple stateful interface
with the WC SDK
- Entry in ui/generate-rcc.go ensures the node_modules cache is excluded
from the resource file
Notes:
- Added `com.apple.security.cs.allow-jit` entitlement when signing the
app package. This allows Execution of JIT-compiled Code Entitlement
required by the fast-path of the JavaScriptCore framework on MacOS
platforms.
- Keep some debugging entries expected to help debugging Linux package
- Removed outdated `DerivationPathInputRegressionTests` qml test
Closes#12301
Fixes#12550
The problem was that we used the pairing event saying "Finished" to show the Login button, however, when that even is received, the Node hasn't started fully yet, so we might try to login when the accounts are still empty in the cache.
The solution is to use the return from the async task, since that one returns at the very end when the process is over and the node is ready. Obviously, if tat returns an error, we still use the error instead.
* refactor service `parseSharedUrl` functino
* drop unused RootStore functions
* refactor Utils shared urls functions
* fix(MembersSeectprView): ignore shared url data
* drop `openContactRequestPopupWithContactData`
* fix loading of data to popup
The link preview model can be filtered, but the hyperlink detection needs an unfiltered model to properly highlight all URLs. This brought in the need to separate the urls model and the link previews model.
Changes:
1. Update privacy controller to react to external unfurling settings change
2. Add handler to input controller and react to external unfurling settings change
3. Small other fixes
- Necessary env variables to build the app:
STATUS_BUILD_INFURA_TOKEN
STATUS_BUILD_INFURA_TOKEN_SECRET
STATUS_BUILD_POKT_TOKEN
STATUS_BUILD_OPENSEA_API_KEY
STATUS_BUILD_ALCHEMY_ETHEREUM_MAINNET_TOKEN
STATUS_BUILD_ALCHEMY_ETHEREUM_GOERLI_TOKEN
STATUS_BUILD_ALCHEMY_ARBITRUM_MAINNET_TOKEN
STATUS_BUILD_ALCHEMY_ARBITRUM_GOERLI_TOKEN
STATUS_BUILD_ALCHEMY_OPTIMISM_MAINNET_TOKEN
STATUS_BUILD_ALCHEMY_OPTIMISM_GOERLI_TOKEN
- The list of available env variables as well as CL arguments can be seen running
the app providing `--help` argument. All env vars are prefixed with `STATUS_RUNTIME_`.
Changes:
1. StatusToastMessage now supports dynamic content height
2. Add new StatusToastMessage type: Danger
3. Update StatusToastMessage to support RichText content
4. Fix StatusQ sanboxapp compilation
5. Add the new StatusToastMessage content to sandbox
Env vars were read correctly and evaluated during the runtime, but then
assigned to a const evaluated during the compile time and that const was
used in the code, leading to ignoring a real env value.
Because the environment variable name is far too generic and barely
means anything. It needs to clearly indicate that it's supposed to be
used at runtime and it changes how the Status app behaves.
Signed-off-by: Jakub Sokołowski <jakub@status.im>
This commit adds the link preview settings card in the chat input area and connects the settings to the controller.
Not included in this commit: Backend for the preserving the settings, syncing the settings and enforcing the settings on the backend side.
Whenever an url is detected in the chat input area, the link preview settings card is presented. This card enables the user to choose one of the following options:
1. `Show for this message` - All the link previews in the current message will be loaded without asking again. The current message can be defined as the message currently typed/pasted in the chat input. Deleting or sending the current content is resetting this setting and the link preview settings card will be presented again when a new url is detected.
2. `Always show previews` - All the link previews will be loaded automatically. The link preview settings card will not be presented again (in the current state, this settings is enabled for the lifetime of the controller. This will change once the settings are preserved and synced)
3. `Never show previews` - No link preview will be loaded. Same as the `Always show previews` option, this will be preserved for the lifetime of the controller for now.
4. Dismiss (x button) - The link preview settings card will be dismissed. It will be loaded again when a new link preview is detected
The same options can be loaded as a context menu on the link preview card.
Changes:
1. Adding `LinkPreviewSettingsCard`
2. Adding the settings context menu to `LinkPreviewSettingsCard` and `LinkPreviewMiniCard`
3. Connect settings events to the nim controller
4. Adding the controller logic for settings change
5. Adding the link preview dismiss settings flag to the preserverd properties and use it as a condition to load the settings.
6. Adding/Updating corresponding storybook pages
1. Updating the link preview model to allow remove URL data. This will discard the link preview data and mark the item as immutable. When an item is immutable it won't accept further updates.
2. Remove reset model when the model urls is changing. Use insert/update/remove rows to avoid any unnecessary UI updates and visual artefacts.
2. Add reload link API. It will request again the link preview
- add a popup asking the user before clicking on an unfurled link
preview
- add a checkbox for the above popup to remember the trust for such
domain
- use local Settings to persist the "trust domain" locally; for
global persistence across devices, see
https://github.com/status-im/status-go/issues/4132Closes#12388
Allow the balances to be nil in the BalanceDTO.
It seems in some corner-cases the balances are returned with rawBalance
as "<nil>" which can't be parsed as a valid Int256; see change cbf56fec.
"<nil>" is not a valid json value, so this is still a workaround.
Closes: #12330
* feat(Communities): Introduce pending states for kick, ban and unban actions
Close#11795
* feat(Communities): Show bannedMembers pending states on the UI
* feat(Communities:) make kick, ban and unban methods async
* feat(Communities): add signal about community membership status change
* fix(Communities): move membership managment to to the appropriate model
* chore: review fixes
Fixes#11808
The problem was that when creating and editing communities, we got the community tokens and all the details about it.
The thing is, those fetches were all done sync, and half of them needed to go to status-go for it.
I fixed it by making those operations async.
Enable user action to repeat a Send transaction from the activity view
(HistoryView) and details view (TransactionDetailView).
Extend AppMain send modal entry and SendModal API to allow for selecting
all the required parameters for repeating a transaction.
Optimize update of start timestamp for activity filter only when user
attempts to open the filter panel.
Closes#12122
- Updated default value for `communityPrivilegesLevel` to `2 = Community`.
- Added `communityId` checker in `CollectiblesView`, `CollectibleDetailView` and `WalletLayout`.
Closes#12283
It's fixing a crash on dataChanged when SortFilterProxyModel is used in qml on top of nim models. The model index is destroyed too early and the SFPM will use a deleted index.
(cherry picked from commit 8032cf7244)
When calling `QAIM.dataChanged(index, index, [roles])`, passing nothing
(ie omitting the paramater altogether), an empty array `[]`, or an empty
sequence `@[]` means "all roles", just like the C++ counterpart in
https://doc.qt.io/qt-5/qabstractitemmodel.html#dataChangedFixes#11830
* feat(Communities): Refactor token holder list item to separate file
Close#11858
* feat(Communities): Use contact details for community member info
* feat(Communities): reuse StatusMemberListItem for member token holder
* Review fixes
Co-authored-by: Michał Iskierko <61889657+endulab@users.noreply.github.com>
---------
Co-authored-by: Michał Iskierko <61889657+endulab@users.noreply.github.com>
Fixes: #11480
* hook up join popup to permission model
* fix chats not being put in the permission model
* make it work with channel permissions as well
---------
Co-authored-by: Jonathan Rainville <rainville.jonathan@gmail.com>
* feat(CommunityTokens): proposal of CommunityCollectibleOwner
Close#11143
* feat(Communities): implement viewProfile from token holders list
* fix: re-request community token owners after a contact get removed from a community
Fixes#11817
Instead of getting revealed accounts from the community description (it's no longer available), uses the new `getRevealedAccountsForAllMembers` API. Uses it async so that we do not slow the start process. The model is updated correctly when we finish loading them.
* rename `fetchMessageByMessageId` to `getMessageByMessageId`
* move reply clicking logic to `StatusMessageReply`
* make message found animation faster
* `asyncGetMessageById`
This commit includes the following changes:
1. Request from backend the messages count in a specific interval as opposed to all messages timestamps in that interval.
2. Update the chart end date before refreshing the data
3. Fix metrics type parsing in community service
4. Fix a bug where the new incoming data was not processed by ChartJs without a hover event on the chart. The fix here is to manually request paint() on model changes.d
Issues found and not handled here:
1. On large communities the backend request can take 3 minutes to complete
2. CPU usage can easily go to 100% when switching chart tabs on large communities. All the requests are processed by the backend.
Fixes#10770
There were two issues, the first one was that categories were included in the search model because the categories are now part of the chat_model.
Also, since it used the chat_model, some chats were not part of the search model at start, because they weren't loaded yet.
I fixed by using the chats from the service directly instead.
* feat(Community): Community messaging statistics chart
Close 11152
- Use se `collectCommunityMessageMetrics` for messaging statistics chart
in community overview
* feat(Community): Transfer community metrics with dto objects
* feat: impl simple string-based model for community metrics
* fix(Community): Review fixes and fix for changing community when chat is open
* Update src/app/modules/main/chat_section/controller.nim
Co-authored-by: Jonathan Rainville <rainville.jonathan@gmail.com>
---------
Co-authored-by: Jonathan Rainville <rainville.jonathan@gmail.com>
Bump Status GO to support session based activity requests
Transaction module was replaced by activity module,
this change removes the old code.
Details:
- Remove transaction.Item and use the DTO directly
- Replace the still using missing functionality
- Remove old way of fetching transactions in response to the history event
- Use activity filter to provide history for "recents" in Send.
Closes#11339
Also: refactor(communities), moved request to join funcs to communities module
This is needed because we can now request to join from the Import popup
Closes#11242
1. Fix an issue where importing a community using private key triggers the import finished event without updating the community data if the community is already imported with public key
2. Show toast messages on importCommunity and privateKeyRemoved events
3. Group community import toast messages handlers and move them from ContactsColumnView to AppMain. IMO these toast messages handlers should not be dependent on ContactsColumnView.
- Settings/About now displays the `status-go` version, read from its
`VERSION` file
- use the actual app icon, to differentiate between prod/dev version
- make the version numbers clickable, taking the user to either the
release notes (prod) or the GH commit browser (dev)
- add "Is production" switch to the About page in storybook
Closes#11424
This partially addresses #11186 as it implements the delete
functionality for community tokens.
If a deployment failed, users have the ability to delete the added
community token from the list.
The retry functionality will be implemented in a follow up commit.
Needs: https://github.com/status-im/status-go/pull/3794
We've been using this signal whenever a user has sent a transaction that
attemps to deploy a smart contract onchain.
However, at this point it's not yet known if the transaction will
actually go through. So to reflect what's actually happening, this
commits renames a few things:
- `SIGNAL_COMMUNITY_TOKEN_DEPLOYED` becomes
`SIGNAL_COMMUNITY_TOKEN_DEPLOYMENT_STARTED`
- `CommunityTokenDeployedArgs` becomes `CommunityTokenDeploymentArgs`
- `onCommunityTokenDeployed` becomes `onCommunityTokenDeploymentStarted`
This should remove any confusion around whether or not deployment is
indeed finished.
As discussed in https://github.com/status-im/status-go/pull/3798, there
was a need to separate the logic in `AddCommunityToken()` into two API.
This commit adjust the client to these changes such that:
1. After community token deployment tx was sent, we create
a `CommunityToken` and add it to the database for tracking purposes
2. Once the tx is mined or dropped, we add the community token to the
community description and publish it, or we update the deployment
state in the database
Needs: https://github.com/status-im/status-go/pull/3798
This change corrects legacy naming that was causing confusion.
Community invites are no longer sent to users. Instead, the community is
just shared. If a user is interested in joining this shared commmunity,
they must submit a request to join.
Adding the export control node popup. The popup is behind an authentication wall.
1. Create ExportControlNodePopup qml
2. Add the popup in storybook
3. Create authentication flow with qml callback to open the popup after authentication
4. Add the popup open action in Global.qml
Fixes#11153
Adds `editSharedAddressesWithAuthentication` in the chat_section view to be called from QML.
Also adds the `communityEditSharedAddressesSucceeded` and `communityEditSharedAddressesFailed` signals in the communities module to be used by QML to know if it worked.
- labels changed in Figma, updated in the app
- `Show encrypted QR of keypairs on device` is displayed only if needed now,
for this I had to add account/keypair `operability` feature, so far it handles only
displaying a context menu option, later in a separate issue a proper functionality
will be added
- wallet related toast notifications moved to the proper place (`AppMain.qml`, where
actually all notifications should be handled), not in the place where they occurs, we
need to review other notifications as well and move them there
Fixes#11514
The problem was that we were not handling the error from request to join correctly.
Then I added an event that sends a signal to the QML to show a toast about an error. I don't show the actual error to the user because usually it's not super helpful. It will be in the logs.
The status-go change makes it so that we don't save the request to join if the permission check failed.
Fixes#11273
Enables passing a private key as well as a public key to `RequestCommunityInfoFromMailserver`.
Also fixes a small issue in the error handling in the service