Commit Graph

2735 Commits

Author SHA1 Message Date
Aleix Pol
df9a7292b9 Fixes a null pointer call
It seems like the case is possible as we already are treating the case
in isUserBanned. Doesn't seem ideal as it shows "" where the username
should be but it's better than a crash.
2025-05-03 16:17:35 +00:00
Kai Uwe Broulik
85f3d3b633 RoomList: Change room on drag enter
With a delay. Allows to drag a file to NeoChat and switch rooms.

In the future we might want to allow dropping a file onto a
room to send it.
2025-04-30 10:57:48 +00:00
Joshua Goins
ccb162cfed Set CppOwnership for managed QObjects returned by Q_INVOKABLES
I'm 99% sure of the recent crashes we've been seeing are double-frees,
the QCache one me and Duha encountered must be one. The QCache is in
charge of the one in ContentProvider, so it will sometimes try to delete
or access something already destroyed by the QML engine.

While I'm at it, I also made sure to check every other Q_INVOKABLE to
ensure we don't hit this elsewhere.

CCBUG: 502747
2025-04-26 11:36:39 -04:00
Akseli Lahtinen
62da98af94 ChatBar: set chatBarSizeHelper for compactLayout to root.width
In chatBarSizeHelper, if user is in compact mode and resizes the window,
maxWidth would be -1 and that caused something to go wrong with the
padding calculations.

Instead, just set it to root.width with some padding, so it always is
the width of the ChatBar.
2025-04-20 18:46:32 +03:00
Akseli Lahtinen
0cc14f710d MessageModel: Handle stickers in ContentModelRole
We were ignoring stickers completely when handling them previously, as
it was handled as event and not one with id.

BUG: 501553
2025-04-20 15:49:20 +03:00
Tobias Fella
bb864cac5b Fix crash during logout 2025-04-19 10:26:41 +02:00
James Graham
b6791485c4 Move remaining code to app module
There's still some stuff that could potentially go elsewhere but I think it's enough for now.
2025-04-18 09:26:17 +00:00
James Graham
d81478ac97 Move webshortcut model to timeline 2025-04-17 16:53:36 +01:00
James Graham
f57004601d Move more stuff to settings module 2025-04-17 16:41:59 +01:00
Joshua Goins
c104c0b7d0 Remove some action text that explicitly says "to clipboard"
For example, "Copy Address to Clipboard" is redundant - almost every
Copy action on your computer does it to the clipboard. The same is done
for the space action too.
2025-04-17 09:28:52 +00:00
Joshua Goins
50ceddaa7e Improve the "Friends" space notification and tooltip text
If you're a first-time user, the different states on this button may be
a bit confusing. Instead of showing a "plus" sign (meaning an invite) it
will add it to the total notification count. The tooltip text is also
changed to reflect this.
2025-04-17 09:25:17 +00:00
Tobias Fella
23803223bf Remove duplicate mxid regex 2025-04-17 10:15:00 +02:00
Tobias Fella
438d4ca3fd Make mxid regex compatible with localhost mxids
Required for tests
2025-04-17 10:14:59 +02:00
Tobias Fella
d668d2f2de Improve DevtoolsPage
Notably, port away from StackLayout, as it doesn't work well when the individual components have different heights
2025-04-17 10:09:03 +02:00
Tobias Fella
9b8cfafa04 Show a placeholder when permissions are loading 2025-04-16 21:27:00 +02:00
James Graham
195e175186 More qml files to go in timeline module 2025-04-16 19:48:19 +01:00
James Graham
2d5d2c6c06 Move relevant models to devtools 2025-04-16 19:38:13 +01:00
James Graham
e787eaabcd Create a space module 2025-04-16 19:28:54 +01:00
James Graham
4aec891b1f Fix clearing edit ID when an attachment is added
Fix clearing edit ID when an attachment is added. You can reply with an attachment but not edit and attachment simultaneously
2025-04-16 18:28:33 +00:00
Carl Schwan
cee9c90f55 Use list of breeze icons from Kirigami Addons 2025-04-15 22:38:12 +02:00
Simon Quigley
2ca744c960 Remove TapHandler for CodeMaximizeComponent
This specific TapHandler proves to be a bit trigger-happy; when trying to copy
text, select or de-select text, or generally do more than stare at it without
touching your mouse, it is too easy to minimize the fullscreen component. This
fixes the issue entirely; when tapping on the message in the timeline, it
still shows a maximized message. This only applies to the maximized message.
2025-04-15 20:36:52 +00:00
Tobias Fella
854aa34e52 Don't offer stickers for reactions 2025-04-15 10:53:53 +02:00
James Graham
0380de698c Create new rooms module 2025-04-14 19:17:42 +01:00
Tobias Fella
380a52d981 Update copyright year 2025-04-14 17:06:15 +02:00
James Graham
bffd7fb13d Move ChatDocumentHandler and related includes to LibNeoChat 2025-04-13 16:24:12 +01:00
James Graham
4fe9c76d90 Move location models to LibNeoChat 2025-04-13 15:52:01 +01:00
James Graham
866fee2ea3 Move login and registration to login
To make this work `AccountManager` is split off from controller taking all the code around `AccountRegister` and is added to LibNeoChat as it makes sense to have this functionality there.
2025-04-13 11:23:17 +00:00
James Graham
b9ffe12154 Move locationhelper, linemodel and mediasizehelper to Timeline 2025-04-13 10:11:54 +00:00
James Graham
09cb2bd261 Move the threepid stuff to settings 2025-04-13 10:46:54 +01:00
James Graham
3a4bc18d45 Move more stuff to settings 2025-04-13 10:27:22 +01:00
Joshua Goins
5ef4ab0756 Fix two (edited) strings appearing in edited quotes
This is because we only check if the last message component != Text,
because that handles it's own edit strings. Quote components do that
too, so if we don't exclude it there ends up being two (edited) strings
in one message.
2025-04-12 16:59:49 -04:00
Joshua Goins
704505958e Fix multi-line quotes being cut off
This was a mistake in the code that was designed to remove the outside
paragraphs, which seems to be to make way for the quotation marks we
add around the text. Instead of doing that (which turns out, is very
brittle and breaks on multiple paragraphs) insert the quotation marks
*inside* of the paragraph tags.

A test case is added for this as well.
2025-04-10 20:53:00 +00:00
James Graham
b230641600 Move ColorSchemer to settings module 2025-04-10 19:29:30 +01:00
James Graham
3f457774dc Move all timeline relevant models and classes to the module 2025-04-10 18:25:45 +00:00
l10n daemon script
324a8ee2e1 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2025-04-08 01:30:10 +00:00
James Graham
aef4f75c33 Move NeoChatConnection and NeoChatRoom to LibNeoChat
Move `NeoChatConnection` and `NeoChatRoom` to `LibNeoChat` along with any required dependencies.
2025-04-07 18:52:15 +00:00
James Graham
8327b4369e Rework so that ActionsModel no longer depends on NeoChatConfig or RoomManager 2025-04-07 14:07:01 +00:00
James Graham
0403ecbd70 Remove the dependency on NeoChatConfig from EventHandler 2025-04-07 12:27:53 +00:00
James Graham
9f60a8957b Migrate forgotten instance of NeoChatRoom::poll() to ContentProvider::handlerForPoll() 2025-04-06 10:47:15 +01:00
James Graham
8af0ae6263 Move the update mentions function to ChatDocumentHandler
Move the update mentions function to `ChatDocumentHandler`, this means `ChatbarCache` no longer needs to depend on `ChatDocumentHandler`
2025-04-05 20:01:07 +00:00
James Graham
c56054a05a Move pollhandler to ContentProvider
Move `PollHandler` to `ContentProvider`, this also breaks the dependency on `PollHandler` for `NeoChatRoom`
2025-04-05 10:08:44 +00:00
James Graham
d9b8b1c8ef Rework NeoChatConnection to remove the dependency on NeoChatConfig
Title
2025-04-05 07:53:26 +00:00
James Graham
02e11e8008 Remove the relationEventContentModel function from ChatBarCache
Remove the relationEventContentModel function from ChatBarCache as ContentProvider makes it unneeded. This means turning ContentProvider into a QML singleton.
2025-04-04 12:13:44 +00:00
James Graham
22b3641a07 Cleanup NeoChatRoom includes 2025-04-04 10:36:13 +01:00
James Graham
913b4ea923 Make lastEvent() take a filter function
Make `lastEvent()` take a filter function so we can remove any dependence on `NeochatConfig` from `NeoChatRoom`.
2025-04-04 09:27:04 +00:00
James Graham
88eb2223c5 Create a content provider instance to get message content models from
This means that all content models will now come from the same source to remove duplication across multiple models and `chatbarcaches`.

It also handily breaks the dependency on needing `MessageContentModel` for `NeochatRoom`
2025-04-04 08:42:34 +00:00
Ritchie Frodomar
7a078b2d34 Add "Read Text Aloud" context menu action for messages
This merge request adds a simple "Read Text Aloud" menu action to the context menu for chat messages. When clicked, the message text will be read aloud using text-to-speech.

The intention behind this change is to make it easier for myself and other low-vision users to use Matrix, without needing to use a system-wide screen reader, in cases where the user still has enough sight left to navigate a computer faster without a screen reader.

I'd eventually like to have it read " said ," so that the message sender gets read aloud as well, but for now it just reads the plaintext message contents.

Another problem, at least on my computer specifically, is that the voice's accent doesn't seem correct. For whatever reason, on my system, messages are read in a Scottish accent which is harder for me to understand. Other apps don't do that, so I'm not sure what's going on there. I do not want to hardcode a specific voice/locale, since I want this feature to work well for everyone and not just me.

@teams/qa Please do break my code! :)  - I've only tested with basic text messages.

@teams/usability Not sure if I put the context menu action in an ideal place, it's grouped in the same area as clipboard actions like "Copy Text."

@teams/localization How could I go about getting author names to be read aloud in a way that's properly translated for other languages? I'm not experienced with i18n.
2025-04-03 19:51:40 +00:00
James Graham
054f87cae2 delegatesizehelper updates
Make `DelegateSizeHelper` take a `QQuickItem` rather than a width value and move `TimelineDelegate` to use it rather than duplicting the code.

This requires the creation of `LibNeoChat` so that both the main and timeline modules can get access to the class.

Note: ideally more stuff will go into `LibNeoChat` but it turns out our dependencies are kinda spaghetti like and so will take some untangling.
2025-04-03 15:24:31 +00:00
Tobias Fella
b9bd12e451 Fix crash when editing messages 2025-04-02 21:20:30 +02:00
James Graham
42fab806c6 Enable ending polls 2025-03-28 13:41:46 +00:00