Commit Graph

6 Commits

Author SHA1 Message Date
Tobias Fella
40358cba85 Fix handling line separators
BUG: 468977
(cherry picked from commit 2b06679be6)
2023-04-29 13:41:43 +00:00
James Graham
566743bc19 Cherrypick Handle stripnewlines for plain text list to 23.04
Handle stripping new lines when the plain text input is a markdown list.


(cherry picked from commit a0ae8b28b2)
2023-03-27 13:30:27 +00:00
James Graham
b7b0749cd8 Cherrypick Handle quotes in plain strings to 23.04
Unescape quotes in plain strings


(cherry picked from commit 925e20ebb8)
2023-03-22 18:12:50 +00:00
James Graham
1ea6ffe416 Handle single quotes for links
Make sure that the text handler can handle links which use single or double quotes for the attributes.


(cherry picked from commit ee254a286d)
2023-03-19 19:11:52 +00:00
James Graham
ecd7a5edff Cherrypick Text Handler Avoid accessing QString out of bounds to 23.04
Add end state to text handler and use to ensure that in nextTokenType to stop an out of bounds access to m_databuffer


(cherry picked from commit 0d6a83b063)
2023-03-16 17:32:58 +00:00
James Graham
da1c664f94 Cherrypick Improve Text Handling to 23.04
Improve the handling of text both when sending and receiving.

The main feature is to fix the linked bug (and a host of others that are unreported but similar) which is caused by the fact that we don't properly clean html. This mr does that as per the matrix spec https://spec.matrix.org/v1.5/client-server-api/#mroommessage-msgtypes. So any disallowed tags or attributes are removed and it does the special handling for certain attributes.

Additionally the functions are also designed to cover any other text formatting required, particularly fro received strings.

The receive side is covered by 2 functions `handleRecieveRichText` and `handleRecievePlainText`. The rich/plain in the function name refers to the output type not the input type (both can take plain and rich input), so `handleRecieveRichText` is called to get a string suitable to go in a rich text control and `handleRecievePlainText` for a plain control.

The functions also handle the following some of which was previously handled by `eventToString` in `NeoChatRoom`:
- Strip and reply from the string
- Format any user mentions
- Linkify links in plain strings
- Handle mxc urls in rich text (uses the new `room->makeMediaUrl` functionality from libQuotient)
- `handleRecievePlainText` also deals with markup making `NeoChatRoom->subtitle` redundant

There is also an extensive test suite which defines the behaviour and the best way to review this is probably to look at the tests and decide whether you agree with the expected output given the inputs and/or if there is any missing behaviour.

The final aim especially with the test suite is to give us a framework to make further updates in the future easier and hopefully prevent a new feature breaking old behaviour with the tests.

BUG: 463932 \
BUG: 466330 \
BUG: 466930


(cherry picked from commit f6ba4f2ecd)
2023-03-13 18:18:17 +00:00