Commit Graph

212 Commits

Author SHA1 Message Date
Igor Sirotin 520d34240a
feature: support unfurled Status links (contact/community/channel) (#12303)
* chore: move `LinkPreviewThumbnail` to a separate file
2023-10-13 14:36:07 +01:00
Alex Jbanca 331f27b52a feat: highlight the hovered hyperlink and link preview 2023-10-12 15:46:20 +03:00
Lukáš Tinkl 2abe0358fc feat: Add URL trust options when the user clicks on a link
- add a popup asking the user before clicking on an unfurled link
preview
- add a checkbox for the above popup to remember the trust for such
domain
- use local Settings to persist the "trust domain" locally; for
global persistence across devices, see
https://github.com/status-im/status-go/issues/4132

Closes #12388
2023-10-12 10:57:15 +02:00
Alex Jbanca 7c8436f492 feat: Adding new user profile cards for link previews 2023-09-20 19:56:18 +03:00
Alexandra Betouni ed065a94f9 fix(URLUnfurling): Updated image context menu
Also moved copyToClipboard function in Utils
and updated Chat section to use it from there

Closes #11941
2023-09-12 00:04:08 +03:00
Igor Sirotin 7e34260aef
feat: Unfurl GIFs locally (#11977) 2023-08-22 11:46:26 -04:00
Igor Sirotin 34dba08b7a
fix: Only `scrollToMessage` when it's available in the database (#11784)
* rename `fetchMessageByMessageId` to `getMessageByMessageId`
* move reply clicking logic to `StatusMessageReply`
* make message found animation faster
* `asyncGetMessageById`
2023-08-07 23:52:04 +03:00
Igor Sirotin 4a4e3c5663
fix: Propagate `root.linkPreviewModel` (#11673) 2023-07-26 17:09:36 +03:00
Igor Sirotin cc5f057b3a
Replace link previews with new unfurled data from the message (#11603) 2023-07-22 02:08:44 +03:00
Mikhail Rogachev 1a7532d92c
fix: Fix behaviour issues with CRs and mutual update messages (#11178)
Close #11121
2023-07-13 01:39:56 +04:00
Mikhail Rogachev 010640acd0
feat(Chat): display MutualStateUpdate system messages in 1-to-1 chats (#10847)
* feat(Chat): Display MutualStateUpdate system messages in 1-to-1 chats

* feat(ActivityCenter): Add AC notification when a user get removed by another contact

* fix: crutch fixing segfault on contact removal
2023-06-08 16:52:03 +04:00
Patryk Osmaczko dfbac49302 chore(qml): adapt assets to support mediaserver images 2023-06-08 13:09:59 +02:00
Igor Sirotin bc4492b53a
fix: Create only one instance of `StatusChatInput` (#10928)
* Chat input area preserved properties
* Fix emoji/gif/stickers popups open/close logic
2023-06-07 16:18:29 +03:00
Patryk Osmaczko 35a2dd5244 [Popups]: added destroy() function in all popups by default
Also switched StatusModal to derive from StatusDialog instead
of Popup type

Closes #10149
2023-06-02 14:28:39 +03:00
Igor Sirotin 5ff4b5a435
fix(MessageContextMenu): Cleanup. Separate menu for profile. (#10729) 2023-05-19 19:07:50 +03:00
Boris Melnik ae2e495a50 fix(replies): Blocks `jumpToMessage` for deleted and unknown messages
Fixes: #10614
2023-05-16 10:39:12 +03:00
Igor Sirotin 68065f1c6c fix(MessageView): Show header when prev message is system PinnedMessage 2023-05-15 09:49:38 -04:00
Igor Sirotin ad8f749289 fix(MessageView): Show correct name of who pinned the message 2023-05-15 09:49:29 -04:00
Mikhail Rogachev 3a030102fe
Fix(Contacts): fix weird behaviour in some contacts flows edge cases (#10613)
* fix(Chat): Fix displaying CR messages in the chat

* fix(Contacts): Relay on actual status-go state during contact state manipulation

Close #10500
2023-05-15 15:22:04 +04:00
Mikhail Rogachev 890e0aa2bd
fix(Chat): Reuse chat root store connections and fix chat quick actions when blocked (#10577)
Close #10570
2023-05-09 14:31:50 +04:00
Alex Jbanca a674ec57a8 fix(blockChat): Disable chat input when minimal conditions are not met 2023-05-05 19:44:39 +03:00
Igor Sirotin c6f378b968 fix(MessageView): Explicit type check for `messageComponent` 2023-05-02 17:00:54 -04:00
Igor Sirotin 13bd813d52 Added PinnedMessage simple implementation 2023-05-02 17:00:54 -04:00
Igor Sirotin 98d8a70572 fix: Added `SystemMessagePinnedMessage` contentType 2023-05-02 17:00:54 -04:00
Boris Melnik df88984b45 feat(image-album): Display album of images in replies
Fixes: #9957
2023-05-02 11:24:48 +03:00
Lukáš Tinkl 038ab08765 fix: do not display ENS name when not ENS verified
- 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
2023-04-21 00:24:32 +02:00
Boris Melnik cbdc3e61b5 fix(images): Display image placeholder when image from album not loaded
Fixes: #9990
2023-04-07 15:42:12 +03:00
Jonathan Rainville 0424715810 fix(edit): fix edit message not sending mentions correctly
Fixes #10074
2023-03-30 15:51:23 -04:00
MishkaRogachev 8eba843a5e fix(Chat): Fix pin popup and actions for communities and group chats 2023-03-28 11:05:07 -04:00
MishkaRogachev 4d4ec22ba6 feat(Chat): Disable unpin action for PinnedMessagesPopup 2023-03-28 11:05:07 -04:00
MishkaRogachev 1f54d96f5f feat(Chat): Disable chat actions for non-contacts 2023-03-28 11:05:07 -04:00
Boris Melnik 30b4d9eb5c fix(chat): Sent images with text correctly
Fixes: #9564 #6374
2023-03-24 14:33:17 +03:00
mprakhov 494ab84fe1 fix(@desktop/chats): Always show message header in the private group chats after sestem message 2023-03-16 14:46:18 +01:00
Boris Melnik 3a737f97a7 fix(messaging): Sync with status-go content type enum
Fixes: #9655
2023-03-16 16:42:02 +03:00
Lukáš Tinkl 31be818e0e fix: Pinning messages - tweaks to UI and interactions
... 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
2023-02-17 11:22:21 +01:00
Alex Jbanca ed9e782262 fix(MessageView): Show message when there is one img preview and extra text 2023-02-16 09:14:34 +02:00
Alex Jbanca f9f860a215 fix(LinksMessageView): Refactor LinksMessageView to remove business logic from qml
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.
2023-02-14 08:55:24 +02:00
Lukáš Tinkl f5d6c538c2 chore: consolidate & refactor popup handling
- 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)
2023-02-09 15:01:57 +01:00
Alexandra Betouni 1793844cdb fix(StatusMessage): stickers were not aligned correctly 2023-02-02 19:29:59 +02:00
Alexandra Betouni 8bb9da6fcc Revert "fix(StatusMessage): stickers were not aligned correctly"
This reverts commit 0fb954b640.
2023-01-27 09:50:16 -05:00
Lukáš Tinkl 8569ea5b41 chore: Optimize StatusMessageReply using more Loaders
also fix the sender display name to respect ensName/nickname

Fixes: #9016
2023-01-25 19:58:19 +01:00
Lukáš Tinkl a55a207bb2 fix: user display name discrepancies
restore taking local nickname into account in various places
2023-01-25 19:58:19 +01:00
Alexandra Betouni 0fb954b640 fix(StatusMessage): stickers were not aligned correctly
Closes #8944
2023-01-25 11:42:19 -05:00
Alex Jbanca 27bb6bf665 perf(chatScroll): Optimize StatusTextMessage size and hover binding for the delegate 2023-01-19 19:24:18 +02:00
Alex Jbanca bf1d59c0ad perf(chatScroll): Avoid calling the backend on delegate creation/binding
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
2023-01-19 19:24:18 +02:00
Lukáš Tinkl b2328d6643 chore: Consolidate date/time formatting
- simplify locale settings
- extract/fix datetime related functions into LocaleUtils
- port code to the new LocaleUtils

Closes #7230
2023-01-17 16:42:34 +01:00
Pascal Precht bf7148efd6 fix: make avatar info in replies of imported messages work again
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)
2023-01-17 12:48:56 +01:00
Alex Jbanca b591254782 fix(MessageView): Fixing Add reaction popup regressions
The popup parent was being destroyed after popup creation.
2023-01-17 09:13:41 +02:00
Alex Jbanca d07136481c perf(chatScroll): Adding signals for chat settings in MessageStore
perf(chatScroll): Fix comment
2023-01-16 10:26:53 -05:00
Igor Sirotin 93c90b8436 Terminal fix(MessageView): Fix calculating `isExpired` value 2023-01-13 19:57:26 +03:00
Alex Jbanca 8cb4420d49 perf(chatScroll): Create message quick context items only when message row is hovered 2023-01-13 11:13:42 +02:00
Jonathan Rainville af0c9767d1 feat(context-menu): add Copy message action in message context menu
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.
2023-01-12 16:15:17 -05:00
Jonathan Rainville c3945f33c0 feat(replies): add deleted to QuotedMessage to change msg displayed
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 [...]"
2023-01-12 15:18:03 -05:00
Jonathan Rainville 91c2e6d257 feat: use QuotedMessage object for replies to better show the replies
Fixes #7754
ok
2023-01-12 15:18:03 -05:00
Lukáš Tinkl 9e396f7344 chore: refactor/improve/optimize StatusMessage & friends
- drop dead code
- reduce number of direct bindings
- use Loaders whenever possible

Fixes #8744
2023-01-10 10:55:53 +01:00
Jonathan Rainville 29450d34a7 feat(admin): enable admins to delete messages from other users
Fixes #8869
2023-01-04 11:12:47 -05:00
Alex Jbanca 94b911a986 fix(messagesView): Increase spacing between chat messages
Added padding between messages as specified in Figma:
topPadding - 8 if the current message has header, 2 otherwise
bottomPadding - 8 if both current and next message have header, 2 otherwise
2022-12-23 16:46:33 +02:00
Igor Sirotin 784b9acd4f fix(MessageView): Ignore message editing with no actual changes 2022-12-22 15:00:48 +03:00
Patryk Osmaczko 87674064d0 feat(chat/messages): implement new messages marker
closes: #8572
iterates: #7488
2022-12-16 19:12:12 +01:00
Igor Sirotin 50427390dd ens: Fix ens name inconsistency across app 2022-12-14 23:46:50 +03:00
Boris Melnik 5d19667f2d fix(warnings): Fix warnings raised from settings
Fixes: #8293
2022-12-14 14:33:13 +03:00
Jonathan Rainville 194e3048bc fix(messages): fix Resend btn not working and add Sending visual state
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.
2022-12-12 11:56:21 -05:00
Lukáš Tinkl 9559789030 chore: reduce the number of (verification) RPC calls
- 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
2022-12-01 16:50:23 +01:00
Boris Melnik bff6b22fc4 fix(replies): Get original message from status-go for replies
Fixes: #7248
2022-11-30 14:07:49 +01:00
Lukáš Tinkl 3d4cb12d0c fix: some notification UI fixes
This aims at bringing the notifcation display closer to what regular
messages look like, namely:

- show compressed chat keys
- don't show identicon rings for ENS names
- fix timestamps and their tooltips (`notification` isn't part of StatusMessage!)
- unbreak clicking outside of the whole popup overlay (`activityCenter`
is undefined)
- fix blurry checkmark icon for marking notification as read
2022-11-30 11:05:58 +01:00
mprakhov e8e2c022ca fix(@desktop/chat): Hide quick actions panel in non-joined chats 2022-11-29 19:56:04 +02:00
MishkaRogachev 726ae26128 hotfix(ActivityCenter): Fix AC timestamps and binding loop for previousMessageIndex
Close #8434
2022-11-29 16:49:36 +04:00
Lukáš Tinkl 8e4d9be779 fix: disable quick actions when editting a message
also move the top/bottom margins one level up so that the message editor
gets the same margins as well

Fixes: #8185
2022-11-21 20:55:08 +01:00
Jonathan Rainville 312dd72955 fix(windows): fix windows chat list empty because of popup overflow
Fixes #7906
2022-11-16 15:41:32 -05:00
Alexandra Betouni 7c88f462ec fix(StatusMessage): Updated component to QQC2 Control and as per desing
Fixes #7318
2022-11-14 18:13:40 +02:00
Igor Sirotin a69b3b5928 fix(StatusMessageReply): Fixed reply text styling and behavior 2022-11-11 13:31:06 +01:00
Boris Melnik b10b6617cf fix(edit-message): Add content-type to edit message request
Closes: #7879
2022-11-11 14:01:16 +03:00
Richard Ramos ae7a16f27e fix: display "Resend" for expired messages 2022-11-10 11:49:42 -04:00
Lukáš Tinkl 80d211f521 fix(MessageView): fix opening URL links
Fixes: #8123
2022-11-07 11:03:39 +01:00
Lukáš Tinkl f122607ada fix: consecutive discord messages should be grouped like status messages
- 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
2022-10-27 22:44:00 +02:00
Lukáš Tinkl 16a51f2f72 fix(MessageView): unbreak showing identity ring in replies
use the correct way to get the original message's content type and
compare it with the correct Constant type
2022-10-27 10:01:59 +02:00
Lukáš Tinkl 2c2337a45d fix(MessageView): unbreak message reply update and found animation
due to the refactor, StatusMessage is no longer the toplevel item inside
the delegate, so adjust the functions

some minor cleanups and dead code removals; striving for keeping the
number of properties and bindings inside a ListView delegate at a minimum
2022-10-26 12:50:39 +02:00
Michal Iskierko 6d2a2e6e03 fix(@desktop/general): Fix clicking deep links in chat
Clicking any deep-link in chat: /u, /c, /cc does not open browser but executes instantly

Fix: #6302
2022-10-25 08:26:16 -04:00
Igor Sirotin 5ff2976e80 fix(MessageView): Changed visual borders of message 2022-10-21 00:44:19 +02:00
Lukáš Tinkl 38b6bdbfd3 chore: split English TS files
- qml_base.ts is created as a reference point for translators
- qml_en.ts is a minimal overlay translation, providing just the needed
  plural forms
- adjust the script to generate the above TS files
- fixup some leftover qsTrId() calls and the qmake file
2022-10-19 10:48:08 +02:00
Michał Cieślak f0e238dce6 chore(general): Remove profile pictures visibility options
From now on, if the image is available it should be displayed
uncoditionally.

Closes: #7609
2022-10-13 07:51:55 -04:00
Boris Melnik 4cfa4e5451 fix(replies): Fire dataChanged when contact changed in reply
Closes: #7687
2022-10-12 10:54:24 -04:00
Boris Melnik 6a11a89ff3 fix(Reply): Add check if responsed message was deleted and add `<deleted>` to reply message
Closes: #7372
2022-10-12 15:43:48 +03:00
Michal Iskierko 95c0721578 fix(@desktop/chat): Fix channel link in chat
Clicking on a #link will open link channel in community

Fix #7636
2022-10-10 11:27:16 +02:00
Pascal Precht 5c3517ee6f fix(Chat): ensure profile image with base64 sources are working
This broke with the introduction of discord messages because we were
setting the `assetSettings.isImage = true` when `isDiscordMessage`.

This has overriden the default config for all non discord messages which
check for whether the asset source includes `("data")`.
2022-10-06 22:18:36 +02:00
Pascal Precht d9acab566f perf(chat): only perform verification requests on scroll if necessary
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
2022-10-06 11:39:24 +02:00
Pascal Precht bf14b06d55 feat(CreateCommunityPopup): add discord import progress panel and discord message handling
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
2022-10-06 09:13:57 +02:00
Igor Sirotin b65023bf45 fix(PinnedMessagesPopup): Fixed reply messages displaying 2022-10-04 14:09:19 +03:00
Lukáš Tinkl a209d39881 fix: ENS name issues
- 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: #7319
Fixes: #7515
2022-09-26 22:38:02 +02:00
Lukáš Tinkl 54c73b0be7 chore: cleanup, fix warning, remove dead code 2022-09-26 22:38:02 +02:00
MishkaRogachev b9ca8654a8 feat(ActivityCenter): Fix messages and AC notifications height
Close #7497
2022-09-26 15:49:46 +03:00
Michał Cieślak be5de27513 feat(MessageView): hide image url in the message when image is unfurled
The url is hidden when there is only one url in the message with no
additional text and the image is shown (unfurled).

Closes: #7321
2022-09-21 10:33:15 +02:00
Lukáš Tinkl 9addf1221b fix(PinnedMessagesPopup): “Jump to” button doesn’t work pinned messages popup
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
2022-09-19 16:34:07 +02:00
Michal Iskierko 62c2b56fc8 fix(@desktop/chat): Improving displaying user names in chat
1. Rename contactDetails.displayName -> defaultDisplayName
2. Add contactDetails.optionalName (filled in contact service)
3. Set in message_model defaultDisplayName and optionalName values
4. Adjust UI

Issue #7241
2022-09-19 11:24:35 +02:00
Lukáš Tinkl 2dca7904b8 fix(PinnedMessagesPopup): pinned messages modal design issues
- 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 #7316
Fixes #7315
2022-09-15 10:55:56 +02:00
Lukáš Tinkl d0b8af9e86 fix(MessageView): missing popup from when pin limit is reached
Can not use `root.messageStore.getNumberOfPinnedMessages()` directly in a
binding, as it's not a property and won't reevaluate on change

Closes #7314
2022-09-13 09:05:15 +02:00
Stefan d81b6ca518 fix(Chat): improve gif confirmation popup and fix preview whitelisting
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
2022-09-05 12:41:48 +02:00
Alexandra Betouni e1c548696f feat(Desktop)!: Updating desktop app due to IconSettings refactor
As part of https://github.com/status-im/StatusQ/issues/781
2022-09-02 18:41:21 +03:00
Michal Iskierko d6a061a517 feat(@desktop/chat): Add setting image in group chat
Image and cropping information are sent to status-go.

Issue #6466
2022-09-01 12:25:53 +02:00
Igor Sirotin 41910c9a8a fix(tests): Fixed message reply test 2022-08-30 17:03:36 +03:00