- CommunitiesPortalLayout was the last piece still unconditionally loaded
on startup -> fixed
- extract the `communitiesStore` into AppMain to be able to reuse it from
other components
- move the import/create community dialogs to `Popups` (reusability)
- cleanup and remove some dead code, fix warnings
Iterates #6204
Also:
test(suite_communities): Fixed community related tests
- A new intermediate popup is now displayed when user clicks on `Create New Community` button from `Community Portal`.
- Reformulated `tst_communityPermissions` since now it is a default option without the need of activating it from experimental feature's section.
Closes#10115
for everything that's not a user interface element, esp. for static/big
images or chat/message elements which get served from locally anyway from
status-go
Iterates #10339
- move the add/edit FAB icon to the topright corner as designed
- prepare UI changes for being able to delete banner/logo (missing impl
in status-go)
Fixes: #9680
- expose "isEnsVerified" as model role
- fix returning "ensName" when the user is not ensVerified
- react to nickname updates correctly
- fix sorting in the user/member list view
the contact details are fetched imperatively in these popups (not via
model updates), so we need to setup a signal to be able to react to those
changes
- 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
the button to (un)install would be either greyed out or result in a crash:
- we were passing the popup a wrong store (w/o networkConnectionStore)
- the condition to `greyedOut` was inverted
fixes the currently selected sticker pack not being highlighted in the
popup footer
The strict equality operator would no longer yield true here:
```
property int selectedPackId
...
selected: stickerPackListView.selectedPackId === packId
```
Implementation of rounded corner line has been changed from Canvas to
plain Rectangle, fixing problem with Canvas not repainting when
dependent properties are changed.
Closes: #9668
Implement the UI part of Profile/Settings/Showcase:
- Communities/Accounts/Collectibles/Assets tabs
- drag and drop of items between "hidden" and "in showcase" sections
- ability to set individual items' visibility
- persistency (showcase saved across restarts), not exposed yet due to
missing backend API
Closes#9936
Fixes#10212
The problem was that we were detecting that the name was empty string and comparing to another empty string and inserting that, which is incorrect.
There was also a problem with the detection of the name being completely written. onKeyPressed didn't take into account the new letter added, onKeyReleased does.
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
... and support all emoji ASCII aliases
- previously we used to trigger the emoji replacement immediately which
led to various bugs like being unable to get the `🍻` emoji ;)
- we now trigger the emoji replacement after typing a certain sequence
followed by a space and then check that word for a possible emoji match
- as a result, we now fully support ASCII aliases, not only those having
a length of 2 (e.g. `:D`) but all the longer ones, like `O_O`, `:-#` or
even `-___-`
pressing the "down" key was working fine, the "up" key to move the
cursor to the previous line was broken
don't force the focus if it already has it and let the parent TextEdit
internals handle the event if we are not interested in it
Correctly clear the chat input
We enable/disable the chat input on various occasions (switching
channels, communities, checking for the person being a contact, etc.).
When we do so, we clear the text of the input which causes all sorts of
internal handlers to get fired, namely the `onTextChanged` part which
parses the text, emojis etc... which is very time consuming. More fixes
here in the followup commits; but by using `clear()` it's much faster,
resets correctly the internal state and also doesn't fire when the input
had been empty already before. Found with QML profiler
Fixes#9966
Uses the validate function to paste images so that it concatenates the previous images.
FIxes the validate function to also accept data images.
Moves the size validation function to Utils to reuse the data path prefix constant and fix the possible crash when we try to get the size of a data image.
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.
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.
Closing #9967
When Holdings dropdown is open, activate focus to searcher in assets and collectibles. Changes focus to ENS input in case ENS tab is active.
In Holdings dropdown, when ENS tab is active and Add button is enabled, pressing enter key should behave same than clicking on the button itself.
In Holdings dropdown, when one asset or collectible has been selected, activate focus in the amount input, then when Add button is enabled, pressing enter key should behave same than clicking on the button itself.
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
- 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 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