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
"the user lands on the signed in app" step incorporates the following verifications (main screen is ready):
- Splash screen animation is loaded and ended.
- Banners that appear in the main screen are closed before starting other actions (secure seed phrase, connection information and update app information banners).
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
- 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
User should see `pending` state after he `join`s the community, even if
that community does not require explicit admin approval. That's because
currently, each member has to be accepted by admin, either automatically
or manually. That means, if admin is gone, no one will be ever joined to
community, even if this community states it does not require request to
join.
InvitationBubbleView.qml:
- rework view to use layouts properly
- add missing community identicon
Backend:
- remove local community requests on community join
- propagate SIGNAL_COMMUNITY_MY_REQUEST_ADDED to UI
fixes: #7139
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.
A new rule introduced which should provide easier tracking/maintainig
later. The rule says:
- popup contains up to 3 action buttons and one back button (optional)
- if 3 buttons are displayed in the popup then the most left button, but
not back button, always triggers tertiary action, middle button always
triggers secondary action and the most right button always triggers primary
action
- if 2 buttons are displayed, then:
- if one of them is "Cancel" (left button) it should trigger tertiary action
and the other one (right button) should trigger primary action
- if non of them is "Cancel" then the left button triggers secondary action
and the right button triggers primary action
- if single button is displayed, then:
- if it's "Cancel" it triggers tertiary action
- if it is not "Cancel" it triggers primary action
- tertiary action always reffers to the cancel action until otherwise set
- tertiary action will be always triggered by closing popup via keybord
(esc key) or clicking on top right `x` button on the popup
- 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`
- 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.
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
the "Recent emojis" was always empty until the user has clicked
additional emoji
loading the recent emojis in `Global.onSettingsLoaded` is too late; it's
executed long before the popup is opened; instead do it at the end of
parsing the categories
- 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
strip the URL from any HTML tags before trying to open it; Qt sometimes
likes to leave some HTML tags there and that breaks the URL validity
checks further on
Fixes: #7170
Replace Contact component with StatusMemberListItem.
Add missing Nim functions to fill models with onlineStatus.
Adjust components paddings to match design.
Fixes#6985
The test network was toggled twice. The banner was impeding with the wallet setting click. The asset list item was missing the objectName and also checking the balance was not resilient
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_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
Images are updated the way they are the same as those we're using for the light
theme, but now without white background. All in all it does the job till we get
a better images from the design team, specialized for the dark theme.
Fixes: #6823
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
drop a defunct MouseArea that was being used for a context menu which got
removed in the meantime; it breaks clicking inside the TextField
Closes: #5167
Fixes#6251
Adds the "Respond to Contact Request" and "Contact Request Pending" options to the MessageContextMenu
Also fixes some small issues with contact verification where the state of the incoming request was not correct
- 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
- 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
- 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
- add the (Un)Mark as Untrustworthy action to the menu
- fix the placement and visuals of the (Un)Block menu item
- add a missing separator above these
- store the blocked and trust details in `d.contactDetails` and properly
refresh it upon opening the menu
- some other smaller UI fixes to align the menu to the design
Closes#6538: Stranger's (untrustworthy) menu doesn't match the Design
Closes#6535: The stranger's card doesn't match the Design
previously, the context menu would be randomly placed; now the image gets
access to its context menu and allows for placing it precisely, just like
it's done in UsernameLabel
the role name exported by the model has (likely) changed :/
`qrc:/imports/shared/views/chat/MessageView.qml:212: Error: Cannot assign [undefined] to QString`
`StatusButton` is now used correctly. There are 3 different button variations with preset heights/widths and paddings. The consumer cannot change the height without altering the expected behaviour and display of the button.
Button height is now consistent with chat input.
Fixes#6298
Fixes#6396Fixes#6398
- fix displaying the chatkey and the copy button next to it using layouts
- hide the mutual contact and verified contact icons in case of My
profile
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
Linux dockerized build and AppDir generation for compilation errors
Also added AppImage TODOs, basic setup for MacOS and Windows but they
still need work to have at least validation running
Temporary disable CPP windows/mac until limitations are
addressed in a follow up commit
Extra: add build configuration fixes for rest of the platforms
closes: #5998
Considerations
- Use versioned files. Versioned Qt CMake APIs are disabled to force explicit calls and say that we don't support older `QT`s
- Don't use blobbing. Use `target_sources` and `qt_target_qml_sources`
- Distribute `CMake` definitions closer to the context: main folders with their own `CMakeLists.txt`
- Everything in libraries under `Status` namespace for cleaner code.
- Includes are exposed with Module folder externally and without prefix internally
- File/Folders name matches definitions they contain for uniformity that leads to cleaner code
- All source files (cpp, qml, js ...) have to be added to one of the CMakeLists.txt files to be tracked by CMake build system.
- Use BUILD_DEBUG, BUILD_RELEASE and BUILD_DEVELOPMENT variables from Helpers library
- Avoid Include directories. Not needed anymore CMake `target_*` APIs handles this through `INTERFACE`, `PUBLIC` and `PRIVATE` scope identifiers
- `StatusQ` is meant to be compiled as an external library, therefore StatusQ tests are kept inside its own directory
- Forced CMake version to `3.21` for the latest features and fixes. It is desired to be kept as recent as possible due to its backward compatibility. Following Qt's shipped version might be an option
- Depends on status-go changes to allow forcing of arm for apple silicon
Found limitations to CMake Qt API with Qt 6.3
- Having `0` as major version when using `qt_add_qml_module` doesn't work. Qml engine reports loading the `qmldir` but won't load the plugin library and no error is reported outside that exposed types are not found.
- `qt_target_qml_sources` doesn't work now, it generate a double copy error when deploying qml files in bin-directory. For now we stick with adding files using `qt_add_qml_module` central place
- Need to add `OUTPUT_DIRECTORY` to `qt_add_qml_module` to use the workaround
- If `MACOSX_BUNDLE` target property is set breaks importing of QML files. Disabled until fixed or workaround found
- For an unknown reason application executable tries to include the `QML_ELEMENT` include files, therefore for now I include all the C++ qml elements in INTERFACE
- Removed 'Communities Portal' toggle from the advanced settings and enable it by default.
- Removed dropdown menu. The button opens directly the join public chat modal.
- In the portal, "Import community" button is now clickable and opens the import community modal.
- In the portal, "Create community" button is now clickable and opens the create community modal.
- Enabled navigation to the clicked community.
Closes#6099
In case of a public key, the loader was always visible and an ephemeral
notification was display but it should not
Also, the show not found is disabled if there is no contact list being
displayed
- Channel is blank on first time joining - fixes: #6131
- Contacts list is empty when trying to invite/share community - fixes: #6139
- The same name is shown for all invited contacts - fixes: #6105
- The names and avatars of contacts are empty in the Contact requests - fixes: #6084
- 'Invite friends' dialog doesn't look good in the minimized app mode - fixes: #6106
This adds a checkbox to configure whether or not community members are
allowed to pin any message of a community channel, based on the newly
introduced `CommunityAdminSettings` that are introduced in https://github.com/status-im/status-go/pull/2668Closes#5662
- signal for adding notification to the Activity Center introduced
and emitted, but that part is not handled within this commit since
there are some details needed to be discussed in the PR#5334
- signal for displaying ephemeral app notification is introduced
and emitted, but that part is not handled within this commit since
we don't have yet ephemeral notificaiton in place.
Fixes#4902
Added Date & Time selectors in `Language & Currency" screen.
Added new properties in `local_app_settings` to set the date and time format.
Created all the chain from view to service to update date and time format.
Added date and time format functions in `Utils`.
Updated `FetchMoreMessagesButton`, `ChatTimePanel`, `AppSearch`, `TransactionBubbleView` and `TransactionDelegate` date and time text depending on the selected format.
Closes#5386
Following changes are done in `ConfirmPasswordView`, `CreatePasswordView` and `ChangePasswordModal`:
- Pressing enter in forms should submit the form if view is ready to submit.
- Pressing tab in inputs should jump to next one.
Fixes#5626
It has been changed footer layout from Item to row.
The colour of the Add button has been changed to match the rest of the style.
The recent tab control has been changed to be consistent with other popups like gifts or emojis and the used component directly controls the different themes.
Fixes#5458
Renamed setting section "Language" to "Language & Currency".
Updated link to StatusQ - Needed new `StatusListPicker` component.
Added language model in `LanguageStore` and created first view approach for `Language` setting.
Added temporal confirmation dialog for Linux OS (since it is currently needed to restart the app to apply changes).
Removed no longer used files.
Closes#5384
The issue was happening because adding gif to the recently used gifs model
was initiated after `gifSelected` action was fired and that action actually removed
the context within `addToRecentsGif` ought to be called and the app crashed.
That's fixed now updating the order of those two calls.
Fixes#5263
Add "supersampling" option to the ProfileHeader. Enabilng the option
will draw the emojis at double the resolution and downasmple them
by scaling down the text control by half to compensate for the
resolution increase
fixes: #5109
Emojis are parsed in a message to transform from special emojis characters
in qml image links. After this transformation, an XSS filter was applied
that "fixes" all the image URLs introduced by the previous stage.
Reversing the order of these opperations fixed the issue.
fixes#4899
Removed instances of VisualIdentityService as it was stateless.
Removed (emoji/color)Hash models as they were reduntant, hashes are
obtained only from global utility now.
- Added SplashScreen as initial screen before
onboard as per new designs.
- Also moved all onboarding related code from
main to onboarding section and switched to
import this and all other sections as
qml modules, exposing this way only
necessary files.
- Cleaned up unecessary qmldir files and
imports.
Closes#4954
Fixes#4904
Moves drag zone to the AppMain so that we can check if the current chat accepts the images
Also disables the Input Connection if the channel is not active
Async methods for send transaction is not impolemented yet and this is a fix until the proper flow is implemented.
Also resolves the same issue observed in chat section.
fixes#4821
Changed cursor behavior to jump over text when it
reaches a mention, either on left or right side.
Also made mention to behave as link when hovered
with mouse so that it cannot be clicked and place
cursor inside it.
Also fixed keyboard focus to navigate only in the
suggestions list when this is opened.
Closes#4423
- broken "jump to a section/chat/message" feature fixed
- added loading indicator while searching is in progress
- animation when we point to the searched message is in place again
Fixes#4577
Closes#4419
profileStore property has been added based in MyProfileView.qml.
Share profile information has been updated using the new store.
It also fixes another issue related to Contact/ViewProfile/ShareProfileURL. It was also showing incorrect info.
A reason why this issue was happening is that prev and next message
were set in a wrong way. An important thing is that list of messages is set
in descending order in terms of `timestamp` of a message, that means a
message with the most recent time is added at index 0.
That further means that getting an index of the previous message from the
current one is defined as `currentIndex + 1` and getting an index of the next
one is defined as `currentIndex - 1`.
Fixes#4417
- various issues on app start in console
- various issues when logging out in console
- `node_section` module delete method error
- SyntaxError: JSON.parse: Parse error from the MessageStore
Within this commit apart of `ChatContextMenuView` and `MessageContextMenuView`
some other things are fixed:
- pinned messages model (`asyncFetchChatMessagesTask`), which was corrupted most
likely by resolving conflicts
- `pinned by` part of the pinned messages
- set/remove local nickname for a contact
- contacts in a message list and pinned by name, contact in a pinned message list
and pinned by name, one to one chat details and chat tool bar are updated in a way
that they are responsive to the contact's updates
- pinned messages updated received from remote (from the `status-go`) is handled
Fixes#4366
- admin flag exposed to qml for chat/channel
- `CreateChannelPopup` updated
- `createPopup` function added to the `Global` singleton
- `PinnedMessagesPopup` component moved to `AppMain` and shared
among components beneath
We've recently removed timeline related code from the application.
It seems that either a) new changes have been introduced related to timeline
despite it being removed from the application, or b) a few more changes
where left out as part of the new architecture.
This causes the app to misbehave when selecting sections in the application
nav bar.
This commit fixes this by removing leftover timeline related code.
- `NormalMessageView` component is removed since we work with `CompactMessageView`
and it's the only and default message component in the app.
- `useCompactMode` property removed from local settings since it's not in use as
well and corresponding code is updated accordingly
- `chatType` added to `Constants` to group chat type related values
- `messageContentType` added to `Constants` to group message content type related
values
- `MessageStore` maintained per message list now
- added new `ChatContentView` component used to display chat/channel content
- components updated to display messages from the new backend
- `StatusChatToolBar` appropriately updated
- mute/unmute feature added to chat/channel list as well as to `StatusChatToolBar`
The openPopup function was declared in AppMain
and used via dynamic scoping in many places in the
application. Moved function to Global component
and updated all places to call it via Global instead.
Closes#4267
Removed all dynamic scoping parts in wallet section plus
- Renamed Config to Global and added more functions there
- Moved changeAppSectionBySectionType function to Global
and updated all places where is used to call it from
Global instead
- Moved openLink function to Global and updated all places
where is used to call it from Global instead
- Moved errorSound to Global, introduced playErrorSound
function and updated all places where is used to call
this function from Global instead
Closes#4245
Changes done on the backend side related to the new chat/channel/categories model
are applied here. Necessary changes done on the `statusq` may be seen in PR-486.
Parts of the code which are not refactored yet are commented out.
Displayed chats/categories/channels since now are using refactored backend.
Apart of all properties we have, now we have 3 new added props which will be used
almost always when we need the following details about logged in user:
- `name` - this will return an ens name in a pretty form or an alias if ens name
was not set (verified). Apart of this there are still `username` and `ensName`
properties for fetching them when it's needed.
- `icon` - this will return a thumbnail image if it's set, otherwise it will
return identicon. Apart of this there are still `identicon` and `thumbnailImage`
properties for fetching them when it's needed.
- `isIdenticon` - this will return `false` if a thumbnail image is set, otherwise
it will return `true`
- Selecting `currentIndex` based on the children placed in the `StackLayout`
component with id `appView` is sorted out since we were referring to the wrong
indexes there in case of walletv2, node and community sections.
- Places which call `Utils.getAppSectionIndex` are updated since we don't have
that method any more.
- Some parts which are not refactored yet are commented.
Download an image to a local folder was not working as
clickMessage function was called from root. and root has
no such function. Switched to use clickMessage via dynamic
scoping.
TODO: remove dynamic scoping
Closes#4143
This broke when we removed timeline support. Most likely because `profileImage`
is undefined, the entire expression fails, leaving `anchors.left` `undefined`,
causing the text area to be slammed to the right.
Since the timeline was removed, this introduced a little hiccup in
the application section selection.
This commit ensures navigation tab buttons match the correct section.