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.
Added property `previousPageName` into `SettingsPageLayout`.
Added needed slots in `CommunitySettingsView` to get `previousPageName` property changes and display the correct string.
Renamed `updateState` method to `navigateBack` to have a better accurate name.
Fixes#8455
- Created page and added editor for specific page.
- Created needed mocked models.
- Added background in permission related pages to ensure correct dark mode visualization.
- Added `CommunityPermissionsSettingsPanel`.
- Created panel item editor and basic panel editor layout for `CommunityPermissionsSettingsPanelPage`. Still not linked to a model.
- Added mocked data for collectibles and tokens.
- Created `ChannelsModel` mocked data.
- Added edit / duplicate / remove signals logs.
- Created `CommunityPermissionsView` and integrated into the flow.
- Created `PermissionItem` component.
- Added `holdingsListModel`, `permissionsObjectModel` and `channelsListModel` flows with mocked data.
- Added `isPrivate` permission property.
- Added button header in `SettingsPageLayout`
- Added signals/methods for edit/duplicate/remove permissions
- Created new file `OperatorsUtils.qml` specific for `Operators`
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 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
Enabling the community archive protocol could fail when another app is
using the same port that is specified as torrent client port.
This would cause the app to crash.
With these changes we:
1. No longer crash the app but output an error in the logs
2. We popup a dialog telling the user that the specified pord is in use
Closes#7328
similar to the profile dialog, we need to add an opacity mask in front of
the contentItem to ensure the rounded corners at the bottom are preserved
when we have no margins/padding inside the popup
Fixes#7759
- Added specific `bdd_hooks.py` for `tst_passwordStrength`.
- Updated `tst_passwordStrength` screenshots (now taken when input is focused).
- Restored `tst_statusLoginPassword` scenarios.
- `tst_statusSignUp` will only contain positive signup test case.
- Created new test case tst_signUpSeedPhraseNegativeCases`.
- Created new test case `tst_signUpNegativeCases` with specific `bdd_hooks.py`.
Closes#8013
The profile fetching view is part of the onboarding process. This view should be displayed on existing user onboarding flow, while the profile is being fetched in the backend.
It has 3 states:
1. Fetching in progress
2. Fetching completed
3. Fetching error
Adds a networks proxy model to be used with the original source model
for visualization and independent selection of isEnabled (as isActive) for a custom
purpose.
Use the proxy in the receive modal dialog for selection of networks
to be included in the address. This way the view follows the original
model but allows independent selection of networks.
Closes: #8180
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
Applied the following solution agreed with design team: When a user types their message, hitting enter, or pressing send, should automatically create the chat and send the message, removing the 'To' input field and Confirm/Reject buttons (that means, directly navigating to the new created chat).
Fixes#7706
When typing at non-end position (in channel name filed) cursor
is no longer jumping to the end. Additionally binding loop
on "contentWidth" is fixed.
Closes: #7805
There was a requested design change where no longer wanted to have
checkboxes to decide which files will be included for a discord import,
but rather have an "X" button that enables users to remove items.
This commit implements this refactor.
In addition, it ensures that the already loaded discord categories and
channels that have been extracted from validation, are kept in sync as
well.
Meaning, if a user removes a file from the file list, the corresponding
channel will be removed as well.
If there's not channel in a given category, the category will be removed
as well.
Closes#8125#8126
- Created `bdd_hooks` that contain the sing up steps just only once in the feature start and the needed start steps depending on the test case.
- Updated feature files removing sign up steps and given/when/then reorganization.
Closes#8026
An issue with adding wallet account was happening only for a new user,
the reason for that was incorrectly set keystore path and keystore file couldn't
be found on the statusgo side because of that.
Property bindings were added for showMessageLinksSwitch in order for it to change the checked state whenever previewableSites model has any item checked or displayChatImages setting is true.
There are two main changes in the model -> view relationship:
1. The model coming from the store becomes the only source of truth and the UI will only change when the model changes. This means that when another UI component from settings menu wants to change some setting it needs to update the model, not UI components directly.
2. When the store will provide a new model we will update only rows that are different in the current model.
chore(@storybook): add language & currency settings view to storybook
chore(@storybook): add language & currency settings view to storybook
fix storybook menu
remove qsTr
Prior to this commit we would reset the file list (and categories and
channels) whenever the `CreateCommunityPopup` was closed.
This made sense because at that point we could assume that the user has
decided to somehow stop the process of an import, so the next time the
modal is opened again, we want that data to be reset.
However, it turned out that this introduced a bug in the scenario where
and import is running, and while it's running, when the user decides to
hide the progress modal, it would reset the warnings count, resulting in
the progress banner to show an invalid state until the next progress
signal was emitted.
We don't want to reset this data every time we close the modal. We only
want to reset it when we know there's no import in progress.
Fixes#7787
- 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
Remove the workaround, to the approach of using the complete last word event,
for three letters seed-words. The three letters condition introduced
another side effect when completing the "sentence" and made the
_internal.mnemonicInput contain an extra duplicate word.
Unify the event `doneInsertingWord` generation for the internal purpose
with the external. This will trigger a secondary for some usage but
I see no problem with even in other usages.
Fix corner case when user enters a correct seed word that is not singular
and uses the mouse to jump. In that case the doneInsertingWord is not triggered
Fixes: #7715
Keycard settings view - UI - developed in a way that list of keycards is displayed
if there is at least one keycard set up. If the a keycard is locked or gets locked it
will be correctly marked in red. Selecting keycard from the list, its details may be
seen and additional flows may be run for it (so far only unlock flow is developed).
Fixes: #7025
Updated `Create` and `Confirm` password views according to new design decisions taken to give consistency to the onboarding screens (related to font-size).
Updated related squish test cases: Screenshots updated with new font-size and refactored some objectNames and objects that where using `text` property instead of `objectName`.
Updated `Input` components to `StatusPasswordInput` ones.
Fixes#7447
This workflow doesn't save the keystore files which are required in order
to create new wallet accounts. It is not yet clear how to proceed with
saving the keystore files without an accountId.
See `setupAccountKeycard` which is missing `storeAccount*` calls vs
working workflow done in `setupAccount`
Closes: #7867
Enabled restart info popup after language is changed --> Workaround to temporary resolve the crash we have when language is changed (`startupModule` is null and some qml bindings are still calling this dead pointer) so, change language will not retranslate and instead, also on mac and win, the app will need a restart to apply the new language.
Disabled retranslations for all os on the corresponding service.
Will temporary fix#7709
- user is able to see community without being a member
- invitation bubble always display "Go to Community"
- join community buttons are displayed in community view
main part of: #7072
- 'Settings' title removed and it is shown instead the Community name and number of members
- Overview icon updated according to the design
- Icon of members size updated according to the design
- The spaces between edges of the Secondary Nav tab and items updated according to the design
Fixes#6785
This adds the UI plus all necessary models and signal handling to render
discord import progress in the desktop application.
It also introduces message handling for discord chat message types.
Requires status-im/status-go#2826 to function
Co-authored with @caybro
- remove the extra spinner (ok'ed by John and Benj)
- use the more modern StatusIcon, w/o the unconditional ColorOverlay
- some minor cleanup
Closes: #7645
Direct binding was causing problems with height calculation in some
environments (qt 5.15) and lack of binding in other (5.14). This is
a solution which seems to work in both cases.
Closes: #7703
The create a group chat related objects have been updated according to new qml changes.
Now these tests are working (if they don't work it is bc of mailserver reliability).
Additionally:
- communities grid made scrollable
- filtering done using SortFilterProxyModel
- various adjustments to the design
- clear input button added to the search input
Closes: #6360
Actually this is not a signing transaction, but rather authenticating logged in
user when he wants to send a transaction. An authentication is done by entering
password(regular user) or pin(keycard user).
A real signing transaction feature will be (hopefully) added in a near future where
we're going to sign a transaction on a keycard which corresponds to a certain
account, a user wants to send a transaction from.
To sum up... this change just removes password from the send modal and introduces
`Authenticate` flow instead.
Fixes: #7510
The RootStore was calling checkRecentHistory on the wallet section View
instead of the transaction View.
Still the workflow is broken due to the 20 minutes timer that calls
the checkRecentHistory and hangs the the main thread (UI) for a long time
Fixes: #7266
- don't display identicon rings for contacts with an ENS name
- prefer the at-form (@foo-user) whenever possible, and don't display their
username or pubkey unless they are locally given a nickname
- show compressed keys everywhere instead of the regular ones
Fixes: #7319Fixes: #7515
This was never implemented, eventhough a similar approach is used with
the global AppSearch. Expose the method `scrollToMessage(messageId)` so
that it can be called from QML directly.
Fixes#7375
The gif test was manually activating the unfurling, which is no longer
necessary. Now check that enabling gifs will enable tenor unfurling
Also add a test for image unfurling and validate the unfurling image
links components and preview settings.
- fix spacing/padding/margins
- remove MouseAreas, they block hovering the buttons (not needed any
longer thanks to our new QQC2 buttons)
- some minor cleanups
Fixes#7366
- align the dialog to design
- fix radio button logic (it was possible to uncheck a mutually exclusive
checked button eventhough it's inside the button group, leaving the Unpin
button in an undefined state)
- port to StatusDialog and layouts, dropping a lot of needless code
- remove dead code for passing around the `property Component
pinnedMessagesListPopupComponent`; the popup is being invoked via
`Global.openPopup()`
Fixes#7316Fixes#7315
- Added `Authenticate` flow
- `Setup a new Keycard with an existing account` updated so it includes `Authenticate` flow
from the point where is needed (when migrating a profile keypair)
- We are missing `Unlock Keycard` flow for this one, will be added once it is developed
Also
- fix the other saved addresses that were relying on the order of
buttons and fail after adding the favourite button
- improve the rest of the tests
- improve debug buttons
- extend driver with helper functions
Closes: #6898
Depends on statug-go favourite flag extension and merging of `favourites`
with `saved_address` tables and API
Additional changes:
- Remove duplicate name instead of ESN
Closes: #6546
- `Setup a new Keycard with an existing account` flow improved
- code review comments applied
- Qml part updated due to the latest `StatusListItem` changes in `StatusQ`
Changes done within this commit were required by the latest keycard
library change, where we gave up of sending few signals when we're
running/resuming flow, which were sent before (those were signal notifying
about unplugged reader, card not inserted and card inserted, they are sent
by the keycard lib now only if that is really needed).
- Added flow which covers `Setup a new Keycard with an existing account` from
the keycard settings part (though two sub-flows there are missing, `Unlock Keycard`
and `Authentication` cause we don't have them yet).
- Updated factory reset flow (part of shared module) that it can read and display metadata
from a keycard if they are set, with this update this flow is almost complete, we are missing
`Unlock Keycard` flow for it as well.
- pull in required StatusQ changes (see status-im/StatusQ#882)
- simplify the radio buttons handling, no need for a ButtonGroup as they
share the same parent
- the radio buttons have the desired font size as a result ;)
Enable preview for gifs after enabling the gif functionality
Disable gif functionality if the preview was disabled
Addition fixes
- The gifs weren't checked if all images weren't enabled
- The subdomain wasn't checked for whitelisting if the main domain wasn't enabled
- Image clicking
- Dismiss asking for unfurling was not updating the state
Considerations
- Looked into having the "gif enabled" - "tenor unfurling" relation
embedded in the controller but it would require extensive refactoring
by implementing a data-model for unfurling whitelisted domains
Closes: #6829
- export a non-blurry browsers image from Figma
- bring the whole UI closer to the design
- sllight refactor to user StatusDialog and layouts
Fixes#7169
Replace Contact component with StatusMemberListItem.
Add missing Nim functions to fill models with onlineStatus.
Adjust components paddings to match design.
Fixes#6985
This adds a feature flag for the discord import tool so we can start
landing individual pieces of the feature without it being fully
implemented.
It also introduces the modal chooser for creating new communities but
it doesn't do anything more than that, as of this commit
Closes#6843
Remove ValidationMode.Always for StatusInputs because by default they
are invalid and validate input when dirty
Remove condition from errorMessage of BackupSeedStepBase as not needed.
Fixes#6825
Requires https://github.com/status-im/StatusQ/pull/858
BREAKING CHANGE: StatusInputs are invalid by default and validate when
dirty.
`tst_languageSettings`:
- Feature and basic scenarios definition: Change language by selection and change language by search.
- Added `StatusLanguageScreen` class and related methods to change and validate language.
`SquishDriver`:
- Added support to scroll at a specific list view index.
- Added support to directly type into a focused element.
`settings_names.py`:
- Added support for object names related to `side bar` options.
- Unified some nomenclature related to settings objects.
`LanguageView`:
- Updated to allow registering the change on Linux before the restart popup is shown so the language test can work.
Closes#6903
Note: interaction between clients is not tested here to avoid dependency
on mailserver. When mailserver is mocked more comprehensive tests should
be provided, that is: verify if identity properties are propagated
and read correctly between two different clients.
closes: #6950
`tst_chatFlow`:
- Commented out bc of `mailserver` issues and then weak.
- Added basic test scenario for sending a mention in a public chat with needed validations.
- Added basic test scenario to check a mention cannot be done if it is a non existing user.
`StatusChatScreen` updates:
- Updated join room method to validate the chat is loaded.
- Added methods for doing and verifying a mention.
`SquishDriver` updates:
- Added support in `SquishDriver` to click into a link in a text or label component.
- Minor function renames.
Closes#6879
- Added functionality as experimental advanced view button
feat(CommunitySettings / Permissions): Added welcome page
- Enabled new permissions tab.
- Created welcome page layout.
- Added permissions welcome image.
- Fixed top margin content in `SettingsPanelLayout` to fit designs.
Closes#6036
feat(CommunitySettings/Permissions): Created `new permission` page
- Added `new permission` page.
- Created first card layout.
- Added navigation between `welcome` and `newPermission` views.
- Improvements in base community settings layout pages.
Closes#6037
feat(CommunitySettings/Permissions): `Who holds` tokens dropdown component creation and integration
- Tokens dropdown component creation: main view, operators view and extended view.
- Logic to add new token and change operator.
Part of #6038
This partially covers factory reset flow. The part where user is able to select which accounts
wants to remove/keep from/on a keycard will be added later once we add the keycard settings part
for storing those data to a keycard.
Fixes: #6790
Use new status-go function to update group chat details.
Changes in RenameGroupPopup to handle choosing colors and images.
Changes in EditCroppedImagePanel to handle background component.
Issue #5982
Keycard implementation affected onboarding/login flows.
- new user - first run - new keys into keycard
- new user - first run - import seed phrase into keycard
- old user - first run - login importing from keycard
- login the app using keycard
Fixes: #5972
- fix initial input focus
- fix texts according to design
- fix TAB keys between the input fields
- fix input fields text and placeholders alignment
- make the community options checkboxes clickable
- adjust margins/spacing according to design
Closes: #6724
- Created new test case with basic create group chat scenario.
- Added specific data folder for `tst_groupChat`.
- Removed deprecated data folder.
- Added dynamic login (depending on the account).
- Added global account information in `suite_status/data` folder.
- Added new group chat validations, title, history texts, members added and send chat message.
- Replaced some ids by objectNames.
- Some improvements in `names.py`.
- Onboarding objects refactor.
Fixes#6444
Fixes#6609
The menu was lost because it used to be set as part of the ScrollView background, but it got changed to a Flickable as part of the fix to the scrolls being not smooth.
Anyway, background doesn't exist on Flickables, so I removed it and moved the MouseArea to the CommunityColumnView instead.
- fix system appearance preview being cut off
- bring the panel close to UI design (I haven't changed the common
stuff like headline fonts, overall margins, etc)
Closes: #6623
Users model has to be sorted by online status first, otherwise
`UserListPanel` sections will be duplicated. That's because:
> Note: Adding sections to a ListView does not automatically re-order
the list items by the section criteria. If the model is not ordered by
section, then it is possible that the sections created will not be
unique; each boundary between differing sections will result in a
section header being created even if that section exists elsewhere.
fixes: #6563
Currently there is no need in the app for creating a pass via `CreatePasswordModal`
removed that support from the modal to avoid confusion about its usage.
- startup, login and onboarding modules merged into the single one
- `State` class introduced which is the base class for all states, every state
determines what is the next state in each of 3 possible actions, and what
is the previous state, if it has previous state
- `StateWrapper` class is introduced as a convenient way to expose
`State`'s props and deal with them on the qml side
- startup module maintains states as a linked list and there are few convenient
methods to move through the list `onBackActionClicked`, `onNextPrimaryActionClicked`
`onNextSecondaryActionClicked`, `onNextTertiaryActionClicked`
- redundant code removed
Fixes: #6473
Closes#6483: all networks button should match design
Closes#6487: networks button should display number of selected networks
Closes#6488: network tags should display icons and look like designs
Align the Wallet left section navigation bar to the design
Fixes#6479Fixes#6480
- simplify using layouts
- fix margins/spacing
- fix font sizes and weights
Fixes#6411
- fix the order of buttons and the Skip button transparent background
- don't let the subHeaderItem eat vertical space when it's not visible
- layout/margins/spacing/linespacing fixes
Fixes#6387
TLDR; since this is a GridView, it needs a width/height set and then
centered on top of the parent component (as opposed to `anchors.fill`)
Also added a scroll indicator in case the window height is not tall
enough and fixed some small warnings
Closes#6343 and #6344
- basically switch over to a column + row layout(s), bringing consistent
margins and paddings, scratches a lot of redundant code
- fix the icon colors
- fixed another bug when opening the create chat panel, and then clicking
on an existing channel in the list, doesn't close this create panel
- remove unused signals and connections
Fixes#6220
Fixes the issue with the mutual contact icon showing when just added.
It also does a huge cleanup of the codebase to remove isContact and replace it with either isAdded, when we care only about if we added, or isMutualContact if we want the contact to be mutual
Also fixes an issue with the MessageContextMenu not reflecting the added state correctly.
We no longer send community invites to users, instead we just share the
community and let users request access.
That request will either be automatically or manually accepted by the owner/admin.
Depends on https://github.com/status-im/status-go/pull/2682Closes#5115
- hide the TagSelector's `listLabel` and disable the `textEdit` when the
contacts model is empty
- add forgotten `qsTr()`
- remove some no-op positioniers/anchors/width/height bindings (these are
handled automatically for QQC2 Control's header and contentItem)
The warning to back up the seedphrase should disappear after either
dismissing the message, or in fact backing up the seed phrase.
The latter was not happening because the banner didn't take that
information into account. This commit fixes this by ensuring we let the
banner know whether the seed phrase was already backed up.
Notice that we don't want to render the banner when the seed phrase has
*not* been backed up yet, but was dismissed by the user.
Fixes#6255
Fixes#6306
- update the StatusQ components to the latest commit which includes
the StatusIcon fixes
- switch the LanguageStore and CurrenciesStore to use SVG icons for flags
and money icons instead of PNGs