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
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
- 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
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
An explanation why we keep track of `timestamp` and `localTimestamp` here,
introduction of those two actually fixes the following issues:
- https://github.com/status-im/status-desktop/issues/6004
- https://github.com/status-im/status-desktop/issues/7058
We should always refer to `whisperTimestamp` as it is set for a message by the network
in order they are sent (that solves the issue #6004), but another issue #7058 is happening
cause `whisperTimestamp` has one second accuracy (which is a very big timeframe for messages).
That further means that all messsages sent by user A within 1000ms will be received with the
same `whisperTimestamp` value on the side of user B, in that case to differ the order of
those message we're using localy set `timestamp` on the sender side which is received unchanged
on the receiver side.
Now a question why don't we use only locally set `timestamp` may araise... the answer is...
because of issue #6004, cause it can be that users A and B send a message in almost the same
time in that case message sent by user A will be immediatelly added to the message list, while
message sent by user B will arrive like a less then a second later and in that case user A may
see user B message before or after his message and the same for user B, depends on local time
of those 2 users which is set for `timestamp` time in the moment they sent a message.
If we anyhow find a way to have here accutacy higher than 1 second, then we can go on only
with `whisperTimestamp`
3f987cc565/protocol/messenger.go (L3726)Fixes: #7058
- `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.
New procs added:
- accounts service `createAccountFromMnemonic`
- accounts service `convertToKeycardAccount`
- accounts service `verifyPassword`
- wallet service `fetchBalanceForAddress`
Keycard library from this commit brings new changes in terms of
signals being sent by the lib in case of reader is not plugged in,
card is not inserted, card is inserted, that means the following
signals are sent only when it's really needed:
`"{\"type\":\"keycard.flow-result\",\"event\":{\"error\":\"connection-error\"}}"`
`"{\"type\":\"keycard.action.insert-card\",\"event\":{\"error\":\"connection-error\"}}"`
`"{\"type\":\"keycard.action.card-inserted\",\"event\":{}}"`
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
This fix skips biometric screen for the following flow on other than mac os platforms:
`first run - new user - import a seed phrase into a new Keycard`
- 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
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
- 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
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
Close#6254
- since Qt 5.xy, hover is not enabled by default for QQC2, so enable it
unconditionally as we are a desktop app anyway
- this fixes several hover effects being broken, mostly for builtin
components like MenuItem and some buttons (eg. the leftmost NavBar)
where we haven't enabled those with `hoverEnabled: true` explicitely
- 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
Removed code that removed messages marked as `repliedTo` in the corresponding service `handleMessagesUpdate` method.
It solves the following use case:
- New account, join public channel, replay massages shown there.
Fixes#6138
When histories are cleared on a paired devices, that clearance should be
synced and reflected in other paired devices as well.
This commit ensures desktop calls the correct API to clear histories,
which will then cause an implicit sync.
Partially addresses #5201
There are a bunch of settings which are synced an not handled by
desktop, one of them being the `profile-pictures-show-to` setting.
This commit introduces a new `SettingsFieldDto` so we can react to
message signals that include individual setting fields that originate
from syncing.
The first setting hanlded is the one mentioned above, so a new
application signal is introduced to inform the app that there was an
update in that particular setting, so it can re-render the view.
Partially addresses #5201
Bookmarks were only synced when devices were synced, but not when
bookmarks were added/removed/updated.
To account for this, there's are new messenger APIs in status-go
proposed here: https://github.com/status-im/status-go/pull/2709
Based on those APIs, desktop can now add/remove/update bookmarks and the
changes are automatically synced to other devices in real-time.
This commit also ensures that changes from other devices with regards to
bookmarks are handled and updated on the current device.
Partially addresses #5201
This fixes a bug where the new user status set by the logged in user
would not be broadcast because the corresponding setting would prevent
status-go from doing so.
The fix is done by always enabling broadcasting the user status, then
disabling it again right after setting, in case it was set to "offline".
This commit also ensures that, when current user status updates are
broadcast, the updates are handled across paired devices in real-time.
Partially addresses #5201
This is first iteration. Models have been restructured and qml adapted
to the changes.
What is left to be done:
- populate new models with appropriate data (some fields were left
default)
- use new fields in qml, use StatusMemberItem where possible
- fix all #FIXMEs introduced by this commit
iterates: #5951
We've introduced a regression in
9f633f0fcc
where model data for navbar buttons are malformed, which results in them being rendered
incorrectly (as letter identicons, instead of icon buttons)
The reason this was happening was because the model data for the
navbar buttons was not properly initialized due to a mixed usage of
positioned and named arguments of the `initItem()` APIs in `SectionItem`
models.
Fixes#5949
Added new option add / remove contacts in dropdown and created navigation to modify the loaded component in the toolbar.
Enabled addition of new members into a group chat by the admin.
Enabled removal of members of a group chat by the admin.
Added into `ChatContentView` components related to chat toolbar:
- `StatusTagSelector` and its corresponding logic
- Moved `StatusChatInfoButton` from toolbar to content view.
Added `esc` key event to leave the group chat add / remove panel.
Updated `StatusQ` link.
Closes#5522
- A crash was happening because of emitting signal from the Q_PROPERTY slot,
fixed now.
- Checks added to `addChat` methods that only 1:1 and group chats participate
in notifications setting exemptions.
This makes Status Desktop aware of the `mailserver.not.working` signal.
When emitted by status-go, desktop will show a popup that informs the
user about the connection failure.
Furthermore, users can then decide to either retry (same as just closing
the popup as retrying already happens by default), or pick another
pinned mailserver, for which they'll get redirected to the messaging
settings panel.
Closes#5166
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
The issue is that, after an account accepts a contact request, the
sender of the request receives a message signal where the
chat's name in the response is the first 8 characters of the chat's
public key. This is because status-go doesn't actually try to keep
the chat's `name` up-to-date if it's a one on one chat.
This results in chat details being updated with a name that is
incorrect. This commit ensures we only update the name of the chat
details if we indeed don't deal with a 1-on-1 chat.
Fixes#5738
- 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
overwritten
When communities are edited, status-go sends a signal with the community
description, to ensure the network is updated to the latest changes.
However, that community description doesn't include `communitySettings`.
When we then compose the `CommunityDto` object from that signal, it will have
a default certain settings to `false` which might actually be `true`.
The result is that data in memory is incorrect.
To ensure we don't run into this issue, we check whether the attached
settings have an id, if they don't, we know the settings do not
originate from the signal data, meaning we can use the settings we
already have.
This introduces the new signal types related to the community archive
protocol and makes Status Desktop listen to the download event which is
emitted by status-go every time history archives were downloaded.
If the downloaded archive covers data within the recent 7 days, it
causes Status Desktop to reload the corresponding chats.
Introduce new signal in message service: SIGNAL_MENTIONED_IN_EDITED_MESSAGE.
Keeping mentioned users public keys in message item/model.
When message is edited, message module sends request to message service to
check if the current user is mentioned and emit SIGNAL_MENTIONED_IN_EDITED_MESSAGE.
Fixes#4475
Logs are named app_yyyyMMdd_HHmmss.log
Version, commit and start date information are displayed in logs at the begining.
Injecting commit version from Makefile.
Moving DESKTOP_VERSION const to constants.nim
Fix#3611
Use new `PrivacyStore` method getPasswordStrengthScore and link it to the new password strength bar value.
Used backend/general to call to `status-go` method and services/general to define the common `GetPasswordStrengthScore` service.
Added onboarding chain to get password strength score information from `OnboardingStore` to `status-go` call.
Closes#5096
Don't show members in public chat
Show members in communities by default
Enable Gif Widget by default and remove settings entry
Enable Online users by default and remove settings entry
fixes#4906
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.