- hide the market and other stuff that can't be used while offline
- recent stickers and already installed packs can still be used; they
will be sent when we return online
- when we return online, reload the views instead of closing the popup
- fix an evil NIM typo that prevented reloading the already installed
sticker packs
- remove the NIM parts that haven't been ported to the async nature; just
`loadStickers()` on the QMl side does the trick
* fix(ActivityCenter): Move ActivityCenterNotificationTypeCommunityKicked to the right place
Close#9811
* fix(ActivityCenter): fix accepting community request to join
- index was not returned properly because of case sensitive address comparison
- delete account was not done properly for keycard accounts
- after login the app was asking for store to keychain even it was a test environment
Fix balance in loading state to use loading component instead of 0
Fix width of some components in loading state.
Remove property modelDataValid in favor of existing isModelDataValid.
Fix loading items not always properly removed before adding new
transactions.
Fixes#9617
Fixes#10108
We were sending SIGNAL_NEW_MESSAGE_RECEIVED and SIGNAL_MESSAGE_EDITED, but the former is not needed, because the message editing is all done with the latter.
The new message signal was sending the OS notification, which is not wanted, plus it did some useless processing, like trying to re-edit the message model, when it was already done.
Fixes#10058
We were calling `updateParentBadgeNotifications` with wrong values, so we basically removed the badge all the time by accident.
Now, we calculate the unread messages and messages from the service's cache.
Also, we still called `updateParentBadgeNotifications` when a contact is updated, as if the contact requests still went in the old contact request popup.
- `AddAccountStore` moved to `AddAccountPopup`
- watch only address' placeholder text updated
- emoji popup button added to the right side of the account name input field
- `validateMnemonic` proc from accounts service updated
Fixes#9973
The buttons didn't work because we weren't using the right model + the section model didn't expose the PendingMemberRequestsModel.
I also fixed the service to update the community correctly and send the event. It should feel snappy-er to approve someone now.
There's a bug that all requests to join a community require the user to
authenticate themselves. This should only be needed for community that
are token permissioned.
This commit fixes it by only performing auth when requesting from the
tokengated community view.
Fixes#10010
Fixes#9949
Only calls `setTenorAPIKey` once we need it (when doing a search or getting trending).
Also caches the trending gifs so that they are only fetched once.
Makes the search and trending calls async by create an async tenor query async task.
Users that request access to community that are token permissioned
need to authenticate and enter their password, so they can reveal
their wallet addresses
This is necessary because with community token permissions, when owners
manually accept a request, we a) don't want to block the UI when the
users funds are check on chain and b) in case of insufficient funds,
we'll react with a modal that tells the owner that the user can't be
accepted.
All of that is done in this commit.
Fixes#9859
getMessageById was called way too often, because each time a contact was updated, we called it on every message that contained a mention. Now we only call it on messages that contain a mention from that specific user.
Also, we called emojiReactionsByChatIDMessageID as part of that service call, but only the pinned message used it, so I removed it from the service function. This means that the pinned messages will no longer have the emoji reactions. I could add them back if we really want, but IMO, it's not really necessary. You can just click on the message and see it in the chat instead.
I removed the call to `getMessageById` in the activity center as well, since we can get the replied message info from the MessageDto directly now.
I also removed some dead code in the messages module.
Also add handlers to JoinCommunityView for requesting and cancelling
requests. These will be extended in follow up commits to included
authentication modals
TLDR;
- all links visible in settings/popup
- persistent order of items
- drag'n'drop to reorder
- editing/deleting in a new popup
- several links of the same type
Needs changes in nimqml (to expose QAIM::begin/endMoveRows), in
DOtherSide (to expose those to NIM), in status-go (to preserve the links
order and fully save them to DB)
Fixes#9777
Introduce TokenItem struct.
TokenModel keeps TokenItems.
TokenItem keeps CommunityTokenDto and chain details.
Chain details are taken from networks service.
Fix#9867
- Added local pairing signals
- Remove slash ending from keystorePath
- Implemented localPairingState. Fixed sync new device workflow.
- Error message view design update
- Moved local pairing status to devices service
- ConnectionString automatic validation
- Async inputConnectionString
- Added all installation properties to model. Minor renaming.
- Removed emoji and color customization
- Show display name, colorhash and color in device being synced
- Add timeout to pairing server
- Add device type
Fix `DeviceSyncingView` sizing. Fix `inputConnectionString` async task slot.
This does a few things:
- It integrates with the latest `CommunityTokensMetadata` to access
community specific ERC721 token
- It changes `ChatLayout` such that it conditionally loads either
`ChatView` or `JoinCommunityView`. `JoinCommunityView` has been
specifically designed for token-gated communities
Here's what works (in terms of token permissions):
1. If a community has token permissions and the the current users is not
a member of that community, we show `JoinCommunityView` instead of
`ChatView`
2. Any community token permissions of type "Become member" are listed in
the `JoinCommunityView`
3. There are different types of token critera a permission can have:
ERC20 token, ERC721 token, or ENS (which is also ERC721 but we have
a type for that nonetheless)
Only ERC20 token balances are checked for the known wallet accounts.
This happens every time the known token list has been updated (every
10 min atm).
We still need to add balance checks for any ERC721 tokens and ENS.
4. If token permissions are created, updated or deleted by the community
owner, the `JoinCommunityView` will update in real-time.
You'll also notice that the `Reveal my address and request access`
button will be enabled if any of the token permissions are fulfilled
(only ERC20 at the time being). Clicking that button will not yet send
a request.
This will be done in the next step as part of https://github.com/status-im/status-desktop/issues/9761
This is a continuation of the effort to improve out app's startup time.
With these changes, installed stickers are only loaded when the sticker
popup is opened.
They are also loaded asynchronously to not block the main thread.
Closes#9435
This postpones the loading of recently used stickers to the point
when a) the stickers popup is opened and the recent stickers tab was the
last visited one or b) when the sticker popup is open and one switches
to the recent stickers tab.
Partially closes#9435
Instead of loading recent gifs right on startup eagerly,
we postpone the task to when it's actually needed (when the gif popup is
opened and the recent gifs tab is activated), and on top of that
we also load the data asynchronously to keep the amount of work
that needs to be done in a single tick as short as possible.
This needs: status-im/status-go#3170
Closes#9437
- missed space added in account already exists popup
- disable close button for shared keycard popup flows identified separately
- crash if built tokens from some other action (like enabling wallet) are received late while
keycard flow is setting up and keypair for processing is not prepared yet
- 3 words name was displayed on login for a keycard user
This commit is the first of implementing community permissions.
**It is not implementing the complete feature**, rather does it
introduce the first pieces, such that we can get code reviewed and
merged before it grows too big.
To review these features, please make sure to
1. Enable wallet (Settings -> Advanced -> Wallet toggle)
2. Enable community permissions (Settings -> Advanced -> Community
Permissions toggle)
You'll have to restart the app after doing so.
The commit introduces the following:
**UI, API calls and view models to CRUD community permissions**
After creating a community, the user can go to the community
settings and create new token permissions. The user can also update
and delete existing permissions.
**Asset and collectible view models**
To create community token permissions, users have to select
the token criteria. This commit introduces the `assetsModel` for ERC20
tokens and `collectiblesModel` for `ERC721` tokens.
The latter only supports custom minted community tokens at this point.
**This commit requires:** https://github.com/status-im/status-go/pull/3207
When a community link is shared with a user and that user visits that community, it turns out that the chat objects for that community have not been created yet.
This results in chat data being malformed/non-existent until another message signal is processed that updates the chats in memory. This update can someimes occur earlier, sometimes later, which is why the issue isn't always reproducible.
This commit ensures we're loading chats from status-go again upon spectating, to ensure they exist in memory when we try to access the data in the UI.
Closes#8361
AppController executes status-go Logout function when it's being deleted, and that will stop all status-go services and kill pending mailserver requests. If StatusFoundation is deleted before the AppController, it's possible for some tasks to freeze the app on logout
As of #9596, task-runner is no longer used.
Due to how the build system works, task-runner was providing nim-stew,
nim-bearssl and nim-chronos to the project, even though these are also
top-level dependencies - effectively this means there were multiple
versions of these libraries in the source tree and it is not entirely
intuitive which is actually used - adding to the confusion, the
submodule was pinning different versions.
This PR removes task-runner and resets the other dependencies to the
versions in task-runner thus minimising collateral changes.
A duplicate copy of bearssl is also removed.
- fix add-account-modal custom derivation checkbox blocking all workflows
- fix, improve and enable wallet tests
- wait_for_text_matching alternative, to is_text_matching, to check also for content as squish driver API
- add objectName based lookup for in some places where user-text was used
- add workaround to retry for 10 seconds add watch due to flakiness
- rename SquishDriver.type to type.text not to conflict with python's type
- add optional timeout to some APIs
- ignore error for extra step in reaching onboarding seedphrase in linux
Updates: #9576
This commit resolves a crash happened due to connection to
`SIGNAL_WALLET_ACCOUNT_TOKENS_REBUILT` when keycard sync
flow was run in the background.
Also updated the keycard synchronization process with the current state of
the application and is the first step of many which leads towards completion
of entire syncing feature.
Model with community tokens was moved to section_item - every section has its own model.
Every deployed smart contract is saved to database with "In Progress" state.
The app listenes to deployed transaction and updates contract state in database to "Failed" or "Deployed".
Corresponding model is updated.
Issue #9233
Fixes#9508
The issue was caused by some calls that try to update the activeSection's item, but during chat loading, the activeSection had the possibility of being empty, thus causing a crash.
The fix here is to create a LoadingItem and set it as active during the time the chats load (if the last active section was a community or chat). Then, the updates go to that Item and do nothing, but that's normal.
as we're dealing with local file URLs only here, we don't want to turn
the plus signs (`+`) into spaces (leads to failing to open the file,
emits an exception, crashes later on in our JS code)
Fixes#9538
Closing #9470
Adding Did You Know Splash Screen that will be shown when AppMain is completed.
The SplashScreen runs for 30 seconds and will randomly iterate through `fun messages` every 5 seconds.
- Bump status-go head that include the required specific changes
- fetch token balance (native or ERC20) and cache historical token quantity data
- fetch FIAT currency
- Extend presentation layer (NIM and QML) to account for API changes
- Remove timed request and other optimizations from the time of fetching
balance history every time instead of querying cache
- Add C++ integration debugging tests and update network chain configuration (outdated)
Closes: #8175
LinksMessageView component will receive the urls from nim as string and it will only forward the string to getLinkPreviewData slot implemented in nim together with some settings (supported img extensions and unfurling preferences)
On nim side the urls will be parsed and validated using the settings received from qml.
Images are now validated before sending them to the UI using the HEAD request.
Add Community Tokens testing UI with minting button, enabled by a Advanced Settings toggle.
Add minting module,view and needed models.
Add community_tokens service to call collectibles smart contract functions.
Issue #8921
Check box added to warn user if they want to add a path out of the
default Status' wallet derivation path. In case they do that, they are
not able to migrate such keypair to a Keycard.
Closes: #9118
- fix chat category/section height not being (re)set to 0 properly and
hidden
- restore the chat category header highlighting when it contains new
messages/mentions after the new flattened chat model refactoring
Fixes#9493
- make the `href` point to `#` to prevent Qt from resolving the empty URL
as if it were a relative link
- prepend the at sign (`@`) to the mention tag, just like Discord and
`@everyone` else :)
Fixes#9364
Due to changes done in https://github.com/status-im/status-go/pull/3133
we had to update procedure for adding migration keypair (which includes
local keystor files deletion for the accounts being migrated) and procedure
for account deletion, cause in order to delete local keystore file for the
acount which is being deleted, we have to provide a password now (states
only for non keycard accounts, keycard accounts use empty password).
For these source/dev builds:
- display "git master SHA" as the version number
- disable the "Check for updates" button
- use APP_VERSION in nim
Rationale: instead of updating git master VERSION text file manually each
time an official version is released, we will now mark source/dev builds
with the corresponding git commit hash and display that in the
Settings/About section
connect to the correct signal
the store node (aka mailserver) is no longer a dialog that would let the
user select a new available mailserver; we care about a working and
_active_ mailserver here
Fixes#9358
This adjust the front-end for the import tool by handling new
properties that have been added to the discord import progress signals.
Namely, the import is now done in chunks, so the progress signal
contains information about how many chunks have been processed.
This needs: https://github.com/status-im/status-go/pull/3134Closes#9262#9261
Fixes#9210
Adds the `TEST_ENVIRONMENT` that stops banners from showing and touch id to be activated (needs to be tested by someone on Mac).
Also improves the waiting time on verifying screens. Will undo that change if it becomes flaky.
To make sure your local tests still work well and hide the banner as well, make sure to put `TEST_ENVIRONMENT=1` in the suite settings' env vars
Happens occasionally that the app crashes during the profile keypair migration flow.
It happens cause during that flow in one moment the app gets locked, cause encryption
gets changed, but some parts of the app may still try to get some data from the db (as an
action for some async event or so). That action results as the app crash. In such cases
an exception will be thrown, but it needs to be handled in functions which are doing a call.
`fetchAccounts` is guarded in this commit, cause crash was initiated there, cause it didn't
handle a call appropriately using try/catch block.
A custom `IS_MACOS` constant introduced which represents os defined
macosx, cause for devs working on macos is easier to change a single constant
in a single place to simulate some how the app would behave in some cases on
other platforms.
For example if the dev is working on macos, it's not possible to simulate linux only or
win only features that way, but it's definitely possible to check if mac only features are
not visible on other platforms.
Old `state_factory` logic is splitted in three more files. Now it represents only
an interface, but implementation logic is placed in the following three files:
- `state_factory_general_implementation.nim`
- `state_factory_state_onboarding_implementation.nim`
- `state_factory_state_login_implementation.nim`
Because the context menu relied on `unparsedTex` it was unable to preserve the pubkey<->displayName conversion when
copying messages to the clipboard.
This commit fixes it by introducing a new `replacePubKeysWithMentions` utility
which is used when message items are initialized, resulting in `unparsedText`
to keep th`@`mentions around.
Closes#9168