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
- the goal of this PR is to get some bsais UI building blocks done for
the followup PRs
- the order of showcase tabs now is:
Communities/Accounts/Collectibles/Assets
- there will be further changes to accomodate for different types of
backend models as those get developed (for other users' profiles)
Fixes#9664
- 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
- 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
new saved addresses UI implementation
- Fixed StatusInput and StatusBaseInput to respect rich text.
- Fixed AddressInput's height that breaks the layout when inside
of QtQuick Layout.
- Added support for icon clicks in StatusListItem.
- Fixed broken right alignment in ContactsListAndSearch.
Fixes#8599
- import needed for LocaleUtils
- do not access raw backend objects; hard to mock/abstract in Storyboook
- fixed missing `isToken` value, leading to semi-broken model roles
... to help align with original design intent
- dropped date breaks before msg groups
- show full date/timestamp in the msg header
- floating "Unpin" button on mouse hover
- no padding/spacing between messages
- some smaller code cleanups and dead code removals
Fixes#9396
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
Make it dynamic based on the recipient address
Also fix autHideCopyIcon StatusAddressPanel property working independently
of showCopy property
fixes#9331
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.
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 high level mixed and broken sizing due to missing a consistent
layouting strategy
- fix first selection. The floating header was covering and tried to
force StatusListView to account for it but nothing I tried worked
- moved header outside the StatisListView (a good example of control
want to to be doing too many things)
- fixed background color of the TokenListView
- fix tags occluding selection of token
Closes: #9282
- all remaining global popup components moved into a separate Popups
entity
- removed some static objects from the Global singleton (appMain,
pinnedMessagesPopup, communityProfilePopup, sounds); rationale:
singletons should not contain any state
- fixed support for popups in storybook
- fixed some warnings (most of them broke the popups in one way or the other)
Fixing QML Connections warnings due to deprecated onFoo handlers. Now we're using function onFoo(params).
Fixing QML compilation error due to js filename format.
Fixing cyclic dependencies between qml components.
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
@mentions have a special `onRelease()` key handler that makes sure a
space is inserted around the mention when needed. Fix the `onRelease()`
handler to prevent control or otherwise unprintable characters being
inserted as text.
Fixes: #7685
The date parsing is time consuming and it needs to be used with care in the delegate
perf(chatScroll): Fix StatusDateGroupLabel comment - standaloneMonthName
perf(chatScroll): fix comments on Optimise timestamps
perf(chatScroll): Optimise timestamps - bring back comment
perf(chatScroll): fix activity notification
Provide the needed data from the nim model directly to the delegate. This way whenever a delegate needs to display the data it doesn't need to reach the backend.
perf(chatScroll): Fix comments on Avoid calling the backend on delegate creation/binding
perf(chatScroll): Avoid calling the backend on delegate creation/binding - add TODO comment on senderColorHash default
perf(chatScroll): merge quotedMessageAuthor details
perf(chatScroll): Fix nim tests
perf(chatScroll): Fix merge error - messages_model.nim
Because we've switched to `QuotedMessage` as an attached payload to
messages to make message replies data more reliable, we lost some of
the author information in imported messages, that was available prior
to that move.
This commit introduces `quotedMessageAuthorDisplayName` and
`quotedMessageAuthorAvatar` to our model so it can be set in case
we can't retrieve contact details for a given message (which is always
the case for imported messages)
Adds the action to copy the right-clicked message's text.
It copies the unparsed text (no html).
For that, I had to add it in the MessageItem and expose it in the model.
I also fixed the copy MessageId action that didn't show + didn't work even if it would have shown.
Plus some small cleanups.
Adds `deleted` to the QuotedMessage object so that on the frontend, we can show "Delete message" only when we know the message was deleted.
Otherwise, when we don't know the quoted message, we show "Unknown message [...]"
Exposed new properties in `SettingsDirtyToastMessage` to customise buttons texts.
Exposed new properties in `SettingsPageLayout` to customise dirty toast buttons texts.
Fixes#9046
- follow the order of properties that `ProfileUtils.displayName()` uses
elsewhere in the application
- prefer nickname or ensName over displayName if the user has them
Fixes: #8691
- make the left/right padding and internal spacing consistent with the
Figma design
- the padding itself got broken by a behavior-incompatible change introduced in
17aaec2d53 (diff-451194c72ab50ea2586b6f1d6521b81d9a93206069788117326788be28b638fd);
this change is however correct but we can no longer rely on the
implementation detail that used to "reset" the left/right padding to its
default value when we set `leftPadding: 0`
Fixes#8910
We always take the plain text from the clipboard but even the plaintext
can contain HTML tags, so escape those and wrap the result in a `<div
style='white-space: pre-wrap'>foo</div>` container. That way we preserve
not only the linebreaks but also any whitespace or tags.
Fixes#8919
Added padding between messages as specified in Figma:
topPadding - 8 if the current message has header, 2 otherwise
bottomPadding - 8 if both current and next message have header, 2 otherwise
- Changed `StatusListItemTag` API. Now it is based on `Control` component.
- Updated needed qml files to fit with the new `StatusListItemTag` API.
- Added `elide` property in `Text` component to better visualise the content when a specific width is forced.
1. Don't allow mention invalidation by altering mention with mouse or keyboard
2. Don't allow mention duplication on the same position
3. Clean mentions after text with mentions changes
4. Fix mention selection
5. Make sure mention is separated by text with valid separators (we're using only space)
6. Cursor will consider the mention as an object and will jump over it as it would be a single character (placing cursor inside leaves room for mention invalidation)
- Fixed test scenarios broken due to new user profile design.
- Added new verifications in social links: github, youtube, discord and telegram.
- Scenario statements reorganization.
Fixes#8281
Fixes#7643
This adds the backend to resend. It then hooks the button to it.
This also adds a visual state for when we are sending. This gives a good indication that a message was sent.
Fix a bunch of problems with handling sound/notifications related options
coming from the backend:
- `volume` and `notificationSoundsEnabled` live in a different settings
object; adjust the stores for that
- unbreak loading the actual wav/mp3 files (was never working on Linux
outside of AppImage!) -> use "qrc:/", same as the NIM backend does
- fix the volume scaling (backend has [1,100], QML is [0, 1])
- simplify our Audio QML item interface; no need for an extra property
and resolving the URL twice (which results in broken scenarios mentioned
above); we know which sounds we want to load
Closes#8668
Status allows for importing communities via their private keys.
There's a requested feature that users should be able to import a community via
its public key as well.
This will behave differently as private keys won't give users ownership
of the communities. When importing via a (compressed) public key, Status
will try to fetch information about the community from the network. If it
finds such information, it'll load it into the app and create
a communitiy view from which users can then request access.
If it can't find a community or community information in the network,
the user will get a dedicated error message.
This commit also refactors the `ImportCommunityPopup` such that it uses
`StatusDialog` and updates the copy accordingly since importing via
public key is now possible as well.
Closes#8339
- rework the way social links are displayed/editted; we now only allow to
enter a so called "handle" and then substitute that in the final URL
template
- move the "icon" model role to NIM backend
This has several advantages:
- we display only the "handle" and don't have to elide some long URL
- we won't let users enter random URLs into their profile and spoof the
viewing part into clicking it
Additionally, make the social link "button" clickable -> navigate to the
target URL, and make the tooltip behave as "usual" (on mouse hover).
- 01: Keycard settings menu labelling - fixed in this commit
- 02: Modal title renaming - not developed yet
- 03: Additional decision diamond and flow - not developed yet
- 04: Modal title renaming - not developed yet
- 05: Modal title renaming - done in issue #7035
- 06: Copy change - fixed in this commit
Fixes: #8458
- when calling `Utils.getColorHashAsJson()` we don't actually need to
issue ID verification requests at all and there might be situations when
we know beforehand that we don't need the ENS verification either
- change these helper functions' syntax and do early returns in that case
- in MessageContextMenuView, the "contact details" were duplicated, so
remove one
- remove dead code, fix some warnings
This aims at bringing the notifcation display closer to what regular
messages look like, namely:
- show compressed chat keys
- don't show identicon rings for ENS names
- fix timestamps and their tooltips (`notification` isn't part of StatusMessage!)
- unbreak clicking outside of the whole popup overlay (`activityCenter`
is undefined)
- fix blurry checkmark icon for marking notification as read
This adds support for receiving copied images from the clipboard
and pasting it into the chat input.
After pasting, chat input will recognize the image and render a preview
similar to how it would do it when selecting images via the file dialog.
**Also important to note**:
At the time of this PR, it seems that desktop only supports sending
jpegs to status-go. I'm not sure if this was deliberately done this way
because the protocol says it supports jpg, png, webp and gif.
Because of this, pasting for example pngs will work, however
transparency will be lost (which is also most likely the cause of #8820)
This PR operates on that assumption. So while it adds support for
copy/pasting images, it does not address the lack of file type support.
Closes#3395
For some reason stickers are not loaded for the first time. User has now
the ability to retry the loading procedure. Retry action loads stickers
successfully in most cases.
fixes: #7995
Quick integration of fetching balance in the current chart view.
The proper implementation requires refactoring the QML views to separate
price chart, that depends only on the token and chain, from balance that
depends on token, chain and address.
Closes: #7662
- do not restrict NicknamePopup's regexp to ASCII characters
- a similar thing could be done to the user's DisplayName but currently
that's blocked on status-go side
- uses RXValidator from dotherside
Needs status-im/dotherside/pull/74
Fixes#8115
Since tertiary action for the keycard popup module is always used to cancel/invalidate
the current flow, it's renamed now to cancel action (avoids confusion this way and it
seems more intuitive. It doesn't set any state. It should be defined if it's possible to cancel
the flow from the current state.
- fill the senderId just like other messages
- add some checks in Utils since the "publicKey" (ID) coming Discord
isn't in the format we'd normally expect
Closes#6678
due to the refactor, StatusMessage is no longer the toplevel item inside
the delegate, so adjust the functions
some minor cleanups and dead code removals; striving for keeping the
number of properties and bindings inside a ListView delegate at a minimum
This adds the ProfileDialogView to storybook pages
For now, there's just one control to switch between own profile and
another profile; more to come in later PRs.
The mocked global objects (mainModuleInst and globalUtilsInst) are
injected via QML
Fixes: #7820
- wrap everything we can in AppMain with a (async) Loader
- do not access globals w/o a proper store
- drop some dead code
Although I wasn't able to completely fix the bug, the ~50% improvement in
startup time is still worth trying imho. On my machine, the startup time
went down from ~7s to under 4s.
Related: #7292
- qml_base.ts is created as a reference point for translators
- qml_en.ts is a minimal overlay translation, providing just the needed
plural forms
- adjust the script to generate the above TS files
- fixup some leftover qsTrId() calls and the qmake file