Messages are parsed to transform markdown to something that can be
rendered in a formatted way.
When this happens, the parsed text is applied to a message's `text`
property inside desktop.
There was no formatted message support for imported discord messages,
so we were relying purely on `discordMessage.content`.
However, now formatting support is pending in status-go here: https://github.com/status-im/status-go/pull/2933
This means, once this lands, we can simply rely on `messsageItem.text`.
I'm adding this guard here such that this will continue to work without
the feature in status-go, but once the feature in status-go lands,
desktop will automatically adapt.
Closes#8086
- 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
Cleanups in deep links - removing not needed links handlers
Improve `open community` and `open channel` deep links - spectate community if not a member
Fix#7892
New community that appears through community update signal can also
be the community we are already members of, in that case we need
to emit SIGNAL_COMMUNITY_JOINED, so that it appears on the side bar.
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
This includes a fix in message signals that would otherwise break Desktop's
signal encoding.
See: https://github.com/status-im/status-desktop/pull/7888
Hence, it reverts the now unnecessary fix introduced in:
Revert "fix(signals_manager): ensure `savedAddresses` event has `JNull` check"
This reverts commit 013e226c66.
There's something off with the `savedAddresses` signal data, which
causes it to be `JNull` instead of an empty array (`JArray`) and breaks
signal decoding.
Ultimately this should be fixed in status-go, but this unblocks Desktop.
Main changes:
- Bump status-go to include the sync saved addresses implementation
- Use saved addresses modifier API from messaging instead of wallet
in order to have incremental sync
- Update saved addresses model on sync changes for saved addresses
Closes#7229
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
There was an issue where imported messages from third-party services
would cause super laggy scroll behaviour in the chat view.
The reason for that is that on scroll, the app keeps calling
`getVerificationRequestFrom()` on the chatkey of the community.
Typically the results of these requests are cached so that it should
perform the call only once, but because there's no actual verification
request/contact for the community chat key (all third-party messages are
signed by the community), the call keeps on happening over and over.
This commit adds a flag to `getContactDetailsAsJson` and `isEnsVerified`
to control whether or not the call to `getVerificationRequestFrom`
should in fact be made (which should not be the case for imported
messages).
The result of this is a smoother scrolling experience.
Fixes#7767
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
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
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