* Stop ignoring the safe area with the suggestions view.
They weren't visible on iPad (hidden behind the sidebar) and I can't find any instance when they're shown where the safe area comes into play.
* Make sure the room list deselects the cell when dismissed a room.
* Use the backports pattern in more places.
* Fix the annoying header on macOS.
* Silence some warnings
* Fix compound CI branch name.
* Forward JoinedRoomProxy.markAsRead to the timeline
The room version was building a fresh timeline even though we already had one.
* Run swiftformat 0.57.0.
This patch implements support for sending locations within threads by following a similar behavior to the other screens: pass the thread root between the various state machine states until the action is finally invoked.
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.
* 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
* 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.
- adopt new async throwing methods
- use the sdk side TimelineStart virtual timeline item
- remove async from `directRoomForUserID` as it's not async on the rust side
- remove async from `retryDecryption` as it's spawning not blocking on the rust side
The default values shouldn't matter as they should be updated when calling subscribeToPagination
but empirically we randomly see the timeline start virtual item when we shouldn't.
We believe there's a race condition between the default values the status publisher
so we're going to default the backwards one to .idle.
Worst case it's going to do one extra back pagination.
* Use the new TimelineMediaPreview modifier on the room and pinned timeline screens.
* Use the same presentation logic for all timeline media previews.
* Fix a bug with the detection of the timeline end.
* Send pagination requests from the media preview screen.
* Add SwiftLint to the Danger workflow (it is no longer installed on the runner).
* Put SwiftLint back on all of the GitHub runners too.
* Set the function_parameter_count lint rule to 10.
* Make sure to clean-up any previews when the coordinator is done.
* Handle the viewInRoomTimeline action more appropriately.