Commit Graph

130 Commits

Author SHA1 Message Date
Lukáš Tinkl 0f9f5de267 fix: [chat] @mentions no longer working
fixup undefined references which caused the users model to become
empty

Fixes #11005
2023-06-08 16:19:53 -04:00
Lukáš Tinkl 4bf09e2b84 fix(StatusChatInput): handle non standard DND MIME types
- most browsers will pass a standard `text/uri-list` MIME type, however
Chrome uses `text/x-moz-url` so we handle that separately
(`drop.hasUrls` is `false` in this case)
2023-06-08 15:33:46 +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
Jonathan Rainville 3760e5f5a7 chore(StatusChatInput): hide ChatCommands for now
Fixes #10893
2023-06-01 15:18:32 -04:00
Igor Sirotin 7eed470829
fix(StatusScrollView): Change implementation to inherit ScrollView (#10789) 2023-05-31 23:58:23 +03:00
Igor Sirotin 5ff4b5a435
fix(MessageContextMenu): Cleanup. Separate menu for profile. (#10729) 2023-05-19 19:07:50 +03: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 812c0e9705 fix: suggestions list displayed when mentioning, still searches by alias
explicitely leave out searching by the `alias` (3-word name); it's
already enabled as a fallback to `name`

Fixes #9738
2023-04-19 15:28:21 +02:00
Igor Sirotin aefa2b9f48
fix(StatusQ): StatusQ is QML module (#10207)
* StatusQ QML module
* qzxing is static lib again
* updated StatusQ resources
* fixed Emoji lookup
* added display to tests-imports ci
2023-04-14 11:18:56 +03:00
Jonathan Rainville fe64d0eb04 fix(mentions): fix @everyone inserting incorrectly sometimes
Fixes #10212

The problem was that we were detecting that the name was empty string and comparing to another empty string and inserting that, which is incorrect.

There was also a problem with the detection of the name being completely written. onKeyPressed didn't take into account the new letter added, onKeyReleased does.
2023-04-11 09:30:20 -04:00
Lukáš Tinkl 3f66e41929 fix: don't trigger emoji replacement prematurely
... and support all emoji ASCII aliases

- previously we used to trigger the emoji replacement immediately which
led to various bugs like being unable to get the `🍻` emoji ;)
- we now trigger the emoji replacement after typing a certain sequence
followed by a space and then check that word for a possible emoji match
- as a result, we now fully support ASCII aliases, not only those having
a length of 2 (e.g. `:D`) but all the longer ones, like `O_O`, `:-#` or
even `-___-`
2023-04-07 20:40:56 +02:00
Lukáš Tinkl 19e7c42cc2 chore: extract input cursor delegate into StatusCursorDelegate
- unified UI/UX; no code changes, just reduces code duplication
- use the correct OS/platform blink interval with
  `Qt.styleHints.cursorFlashTime`
2023-04-07 20:40:56 +02:00
Lukáš Tinkl 05b28e6f6c fix: unbreak handling "up" key event in multiline text
pressing the "down" key was working fine, the "up" key to move the
cursor to the previous line was broken

don't force the focus if it already has it and let the parent TextEdit
internals handle the event if we are not interested in it
2023-04-07 20:40:56 +02:00
Lukáš Tinkl c8877aaf97 fix: speed up emoji parsing and replacements
extract the invariant/const parts out of the inner loop
(`emojiJSON.emoji_json.filter`); greatly speeds up typing speed
2023-04-07 20:40:56 +02:00
Lukáš Tinkl 5dbc08dca3 chore: speedup channel switching
Correctly clear the chat input

We enable/disable the chat input on various occasions (switching
channels, communities, checking for the person being a contact, etc.).
When we do so, we clear the text of the input which causes all sorts of
internal handlers to get fired, namely the `onTextChanged` part which
parses the text, emojis etc... which is very time consuming. More fixes
here in the followup commits; but by using `clear()` it's much faster,
resets correctly the internal state and also doesn't fire when the input
had been empty already before. Found with QML profiler
2023-04-07 20:40:56 +02:00
Lukáš Tinkl 6385afebaf fix "Unblock" chat button
the `AbstractButton::clicked()` signal has no params; that's a leftover
from previous implementation
2023-04-07 20:40:56 +02:00
Jonathan Rainville e5ff0b4a6a fix(images): fix second pasted image replaces the first one
Fixes #9966

Uses the validate function to paste images so that it concatenates the previous images.
FIxes the validate function to also accept data images.
Moves the size validation function to Utils to reuse the data path prefix constant and fix the possible crash when we try to get the size of a data image.
2023-03-28 13:48:10 -04:00
MishkaRogachev 1f54d96f5f feat(Chat): Disable chat actions for non-contacts 2023-03-28 11:05:07 -04:00
MishkaRogachev ad4838e4f8 feat(Chat): Disable sending messages for non contacts
Close #9899
2023-03-28 11:05:07 -04:00
Alexandra Betouni c31903d281 [StatusChatInput]: fixed focus and reply component lost
- Fixed reply message is gone when adding image
- Fixed pressing up arrow key when editing loses the cursor

Closes #9419
Closes #9139
2023-03-09 16:15:13 +02:00
Alexandra Betouni c560e9b960 fix(StatusChatInput): fixed invisible text when pasting text with emoji
Closes #3291
2023-03-01 15:25:19 +02:00
Alexandra Betouni bb23131f0e fix(statusChatInput): do not replace text with emojis on links
Closes #8478
2023-02-16 13:20:54 +02:00
Michał Cieślak f43c3e2f2b chore(general): Move StatusSyntaxHighlighter to StatusQ, remove mock from Storybook 2023-02-09 12:48:11 +01:00
Michał Cieślak 8f25b93f96 chore(general): Move QClipboardProxy to StatusQ 2023-02-09 12:48:11 +01:00
Alex Jbanca 81a4d70932 chore(Qt5.15): Fix qml warnings after qt 5.15 migration
Fixing QML Connections warnings due to deprecated onFoo handlers. Now we're using function onFoo(params).
Fixing QML compilation error due to js filename format.
Fixing cyclic dependencies between qml components.
2023-01-31 20:39:19 +02:00
Lukáš Tinkl 9cb850f67f fix(StatusChatInput): don't insert control characters
@mentions have a special `onRelease()` key handler that makes sure a
space is inserted around the mention when needed. Fix the `onRelease()`
handler to prevent control or otherwise unprintable characters being
inserted as text.

Fixes: #7685
2023-01-26 13:31:06 +01:00
Lukáš Tinkl 9eb515e3e3 chore(StatusChatInput): fixup indentation 2023-01-26 13:31:06 +01:00
Jonathan Rainville fdc0dce782 chore: remove public chat functionnalities
Fixes #8504

Removes the ability to create public chats, see public chats and even leaves previously active public chats
2023-01-25 10:05:55 -05:00
Alexandra Betouni 7f2563edf4 fix(message): removed extra markup when typing before mention
Closes #8495
2023-01-23 16:17:36 +02:00
Alex Jbanca 4e3e245675 perf(chatScroll): Fix connection warnings 2023-01-19 19:24:18 +02:00
Pascal Precht c26035e245 fix(StatusChatInput): turn off reply mode after replying with gif message
Closes #8638
2023-01-13 09:03:02 +01:00
Alexandra Betouni 985ef830df fix(StatusChatInput): fixed paste action doesn't work
Closes #7600
2023-01-12 11:24:01 +02:00
mprakhov 52d336b5a6 fix(@desktop/chat): allow to send attached image without text input 2023-01-11 18:27:31 +02:00
Lukáš Tinkl 6f1ecb9c8c fix(StatusChatInput): improve code highlighting in code snippet/blocks
- make the bg/fg color follow our current Style/Theme colors

Fixes: #8649
2023-01-10 15:21:45 +01:00
Lukáš Tinkl db97fbf3eb fix(StatusChatInput): return correct mention suggestions
- follow the order of properties that `ProfileUtils.displayName()` uses
elsewhere in the application
- prefer nickname or ensName over displayName if the user has them

Fixes: #8691
2023-01-09 16:41:51 +01:00
Lukáš Tinkl e947f81cd2 fix: Chat input: can't send html text from the clipboard
We always take the plain text from the clipboard but even the plaintext
can contain HTML tags, so escape those and wrap the result in a `<div
style='white-space: pre-wrap'>foo</div>` container. That way we preserve
not only the linebreaks but also any whitespace or tags.

Fixes #8919
2023-01-05 12:32:53 +01:00
mprakhov e378cb4fd9 fix(@desktop/chat): Do not allow send empty message 2022-12-22 16:23:44 -05:00
Pascal Precht f3eb29bfea feat(chat): allow for editing last user message using arrow-up key 2022-12-22 17:31:32 +01:00
Alex Jbanca 6cba8810e0 Fix Mentions in statusChatInput
1. Don't allow mention invalidation by altering mention with mouse or keyboard
2. Don't allow mention duplication on the same position
3. Clean mentions after text with mentions changes
4. Fix mention selection
5. Make sure mention is separated by text with valid separators (we're using only space)
6. Cursor will consider the mention as an object and will jump over it as it would be a single character (placing cursor inside leaves room for mention invalidation)
2022-12-21 12:23:39 +02:00
Tanguy 473da3790b fix(chat-input): Colon detection for foreign keyboard layout 2022-12-16 10:28:24 +01:00
Boris Melnik f35468963c fix(warnings): Rid off warnings
Fixes: #8293
2022-12-15 19:31:18 +03:00
Jonathan Rainville abd992b3ea fix(chat-input): fix sending images from dialog by using right prop
Fixes #8747
2022-12-12 13:48:44 -05:00
Pascal Precht 213924f6e9 feat(chat): support copy & pasting images into chat input
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
2022-11-29 12:31:18 +01:00
Lukáš Tinkl 6b7eea8db9 fix: unbreak suggestions for emojis containing an underscore
- don't consider `_` as a "punct" or invalid character, some emojis like
flags do contain it in their name

Fixes: #8446
2022-11-28 12:11:23 +01:00
alexjba f8293a12f4 StatusChatInput.qml - Fixing emoij suggestion keyNav
Fixing up/down key handler when emojiSuggestions are visible
2022-11-23 16:21:31 +02: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
Lukáš Tinkl bab0fee0ee chore(StatusChatInput): add Esc handler to close reply area
similar to what pressing Esc does when editing a message
2022-11-16 09:58:19 +01:00
Lukáš Tinkl c7efcdd09f fix(StatusChatInput) unbreak upload image shortcut
fixes shortcut Ctrl+U being broken when trying to upload an image
2022-11-16 09:58:19 +01:00
Alexandra Betouni 6fa4553d08 fix(DragnDrop): re-enabled drag and drop
Closes #7484
2022-10-12 10:34:46 -04:00