Commit Graph

148 Commits

Author SHA1 Message Date
Mauro Romito 1064a9f908 improve threads summary view a11y 2025-07-21 20:11:18 +02:00
Mauro Romito f45a5f814e read receipt cell should be grouped and the avatar accessibility hidden 2025-07-21 20:11:18 +02:00
Mauro b816f0cf56 A11y: added a hint to inform the user that max selections have been reached (#4308)
* a11y added a hint to inform the user that max selections have been reached

* added string
2025-07-08 17:33:47 +02:00
Mauro c60fd88577 Aadded sender name when voiceover focuses a poll title (#4306)
* added sender name in poll voiceover

* improved the code

* code improvement
2025-07-08 16:37:27 +02:00
Mauro Romito 9d5a09810b a11y label for pinned items + fix for the pinned items banner when voice over is on 2025-07-07 16:46:45 +02:00
Doug 030a9bfbef Update and enable the new bloom style on the home screen. (#4291)
* Update Compound

* Adopt the new accent colour (and gradient) tokens.
2025-07-07 11:23:03 +01:00
Stefan Ceriu 9c28a69ccf Be more lenient with the power levels as they can still be missing at the time the various screens are created e.g. after accepting an invite.
The correct solution is to subscribe to update and update the UI accordingly when receiving them.
2025-06-26 18:57:46 +03:00
Mauro Romito a562d239db a11y poll improvements 2025-06-26 12:52:36 +02:00
Stefan Ceriu bfd97cd560 Make the RoomInfo isPrivate field optional and handle it accordingly. 2025-06-25 17:23:22 +03:00
Stefan Ceriu de723853e3 Make the room power levels optional as they can be missing depending on what state events are requested 2025-06-25 17:23:22 +03:00
Stefan Ceriu c7ff6c019d Adopt new canOwnUser* power level methods instead of the throwing ones. 2025-06-25 17:23:22 +03:00
Stefan Ceriu 5ac6ec28d5 Adopt room info power levels (#4245)
* Use the newly RoomInfo published PowerLevels; update permissions at the same time as the room info and avoid unnecessary async calls.

* Introduce a RoomInfoProxyProtocol and associated mock and move away from mocked SDK RoomInfos

* Bump the SDK to v25.06.23

* Expose new non-throwing methods for checking one's own user permissions

* Fix the unit and preview tests (except the TimelineMediaPreviewDetails for which simplified snapshots were generated)

* Converge on one single implementation for computing a room's avatar.

* Fix more unit tests

* Fix the TimelineMediaPreviewDetailsView snapshot tests

This reverts commit 9b6c819e611ad2fa3de2c34a4a7aa556fc9faadd.

---------

Co-authored-by: Doug <douglase@element.io>
2025-06-24 17:48:00 +01:00
Stefan Ceriu f522e15dac Adopt the lastest SDK APIs and refactor how we deal with user permissions.
This patch introduces a new RoomPowerLevelsProxy and its associated mock and adopts newer Rust APIs to make working with user power levels and permissions easier.
2025-06-20 18:10:45 +03:00
Stefan Ceriu 087a07c01b Fix thread summaries being shown when the thread feature flag was disabled. 2025-06-19 14:01:06 +03:00
Stefan Ceriu ccb0fc7de0 Fixes #4222 - Hide timeline item actions that the user's power level does not allow 2025-06-18 17:39:45 +03:00
Mauro Romito 5c4fc49763 pr suggestion: use computed var for scaleY 2025-06-18 11:47:56 +02:00
Mauro Romito 5e342a91dd unflip timeline table view in voice over mode only 2025-06-18 11:47:56 +02:00
Mauro Romito 12e55d6c28 improved reactions a11y 2025-06-18 11:23:45 +02:00
Mauro Romito 5b6f4a30f0 updated strings 2025-06-17 12:56:19 +02:00
Mauro Romito 6c5813b534 improved a11y in CollapsibleRoomTimelineView 2025-06-17 12:56:19 +02:00
Mauro Romito 7e801c3e58 focus voice over automatically when focussing a timeline event 2025-06-17 11:58:07 +02:00
Stefan Ceriu 5315f962c6 Render the number of thread replies on the thread summary timeline view. 2025-06-12 16:54:53 +03:00
Stefan Ceriu 558cdf5be3 Add support for sending media within threads.
This patch add the `threadRootEventID` as a parameter to media sending functions and forwards the timeline thread root between various application states to the place where its needed.
The 2 missing items are Locations and Polls which currently don't have any support on the Rust side for being sent within threads. That will come in a separate PR.
2025-06-10 21:20:09 +03:00
Stefan Ceriu 3ef479305a Add "reply in thread" timeline item action menu entry. 2025-06-10 15:09:20 +03:00
Stefan Ceriu 93f081d93d Stop hiding replies in threaded timelines as that's now properly supported as of https://github.com/matrix-org/matrix-rust-sdk/pull/5198 2025-06-10 15:09:20 +03:00
Stefan Ceriu 21ece09678 Tweak the thread summary design 2025-06-10 15:09:20 +03:00
Stefan Ceriu a4398b45fa Move timeline drag and drop handling to the recently introduced TimelineView. 2025-06-10 08:57:08 +03:00
Stefan Ceriu 952e4f86c2 Rename the RoomScreen's roomContext to plain context 2025-06-10 08:57:08 +03:00
Stefan Ceriu 21e07e164c Setup composer actions within threaded timelines. 2025-06-10 08:57:08 +03:00
Stefan Ceriu 9804be70eb Threaded timeline composer 2025-06-10 08:57:08 +03:00
Mauro Romito 26a7d5ac82 pr suggestions 2025-06-06 10:49:29 +02:00
Mauro Romito 155b47e849 tombstoned and upgraded rooms implementation
added tests

tombstoned room avatar
2025-06-06 10:49:29 +02:00
Stefan Ceriu 210a0dba1a Setup action forwarding for threaded timelines. 2025-05-30 13:32:29 +03:00
Mauro aef91b5bc9 Handle media previews and invite avatars through the account data (#4142)
* added account data media display policy handling to NSE

* pr suggestions

* update compound

* code improvement
2025-05-28 19:51:34 +02:00
Doug 8a1a0ce1a4 Fix a couple of crashes on macOS from a missing environment object. (#4153) 2025-05-28 11:24:35 +01:00
Stefan Ceriu 29cfcb0b85 Better document the various protocols and classes involved in dealing with room timelines. 2025-05-23 16:08:18 +03:00
Stefan Ceriu d058e7cd25 Introduce a new SwiftUI TimelineView layer (wrapping the representable) to hold all the timeline specific bindings that are currently duplicated throughout the screens a timeline is used. 2025-05-23 16:08:18 +03:00
Doug d76b76d041 Don't group timeline items if more than 5 minutes has passed. (#4138)
Matches the behaviour on web.
2025-05-21 10:34:22 +01:00
Stefan Ceriu 10fb2b5dda Add mechanism for opening up a threaded timeline 2025-05-20 12:18:55 +03:00
Mauro 9a8819ac26 Always open manage member sheet (#4110)
* always open manage member sheet

* Update ElementX/Sources/Screens/ManageRoomMemberSheet/ManageRoomMemberSheetModels.swift

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>

* Update ElementX/Sources/Screens/ManageRoomMemberSheet/ManageRoomMemberSheetModels.swift

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>

* pr suggestions and handled the buttons actions correctly

* Update ElementX/Sources/Screens/ManageRoomMemberSheet/View/ManageRoomMemberSheetView.swift

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>

* fixed some compilation errors

* added some documentation

* using a struct instead of a protocol

* using arguments instead of a struct

---------

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
2025-05-19 14:17:57 +00:00
Stefan Ceriu e1984ccdc0 Fix room list heroes label format
- change from `Alice, Bob and Charlie` to `Alice, Bob, Charlie and 42 others` (when applicable)
2025-05-12 19:40:14 +03:00
Stefan Ceriu 806d676299 Introduce a TimelineItemThreadSummary object (#4032)
* Introduce a `TimelineItemThreadSummary` object to hold details about threads starting from that particular item

This patch introduces a thread summary object that will be available on main timeline messages that are the root for a given thread.
It currently provides the latest message content and sender for that thread but it will grow to provide info on the number of replies, unreads etc.

It also add a new UI component called `TimelineThreadSummaryView` that makes use of this data and is in turn used by the bubbled styler to render it in the timeline.

The rest of the PR is about refactoring on the `RoomTimelineItemFactory` so that replies and thread summaries use similar paths and builders.

* Add a feature flag for threads

* Address PR comments

* Converge on single implementation for message previews
2025-04-16 16:19:29 +03:00
Mauro Romito 88397792cf change: stricter private timeline media visibility 2025-04-11 10:12:25 +02:00
Stefan Ceriu 83136af7c4 Bump the SDK and adopt the new MsgLike timeline item types (#4000)
* Bump the RustSDK to v25.04.09

* Adopt new MsgLike based timeline item structure.

* Move the `replyDetails` and `isThreaded` to the `RoomTimelineItemProperties`

* Restructure the TimelineItemFactory

* Fix line length warning

* Rename `msgLikeContent` to `messageLikeContent` wherever possible.

* Move the `EventTimelineItem` mocks to the SDK mocks folder.
2025-04-10 14:04:16 +03:00
Mauro Romito e5e7fc6c55 updated preview tests 2025-04-09 18:55:34 +02:00
Mauro Romito bf875a23ce change: hiding timeline media has three options 2025-04-09 18:55:34 +02:00
Mauro Romito 0e7533145a refactor: manage member sheet in timeline
better implementation

updated tests

Update ElementX/Sources/Screens/Timeline/TimelineViewModel.swift

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>

fix
2025-04-09 15:03:54 +02:00
Doug 5e50823223 Allow the services that are configured by secrets to be disabled. (#3961)
* Make the map tiler key optional.

* Make the bug report URL optional.

* Make the sentry URL optional.

* Make the analytics configuration optional and handle consent taking Sentry into account.

* Stop prompting users to report crashes when Sentry is disabled.
2025-04-01 09:24:12 +01:00
Mauro Romito f507709626 a11y: better voice over for voice messages 2025-03-28 10:15:30 +01:00
Doug 51886b0c78 Refactor the MapTiler configuration into a single place. (#3944)
* Refactor the MapTiler configuration into a single place.

* Merge the MapAssets catalog into the normal one.
2025-03-26 14:39:09 +00:00