* 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.
* Introduce a `MediaEventsTimelineFlowCoordinator`
* Update SDK API and architecture
* Add a feature flag, add translations
* Move the media events timeline presentation under the room flow coordinator state machine
* Rename `TimelineViewState.timelineViewState` of type `TimelineState` to `timelineState`
* Enabled SwiftLint's `trailing_closure` rule and fix the warnings.
* Update the SDK.
* Fix API breaks on send failures and propagate the new type.
* Handle new SDK ShieldState.
* Set up the ClientBuilder's `cachePath` option.
* Delete the cacheDirectory during logout/clearCache.
* Add unit tests for RestorationToken decoding and SessionDirectories generation.
* Design review tweaks
- truncate reactions as per spec
- add haptic feedback on reacting
- Remove all collapse/expand animations on reactions
- tweak reaction and summary padding
- Fix alignment of time on reaction summary view
- Made sure reaction summary button in horizontal scroller is on screen on appear
- update screenshots
* Update TimelineReactionsView.swift
* Remove dark add more button and check long rtl reactions
* Set colour of templated add more button
* Fix padding and only inset from the bubble on the leading side as per designs
- Fix padding
- Only inset from the bubble on the leading side as per designs
* Update screenshots
* Fix line length warning.
* Sort timetamps on timeline and show the date on the summary view
- Sort reaction aggregations on the timeline by count and then by most recent timestamp ascending(tagging new reactions on the end)
- Show the timestamp on the summary view and sort descending(newest at the top)
* Address comments.
- Fix ID case.
- Improve readability of components in body.
- Improve the comments that describe the sorting.
* Add reaction summary view
* Add avatars and display names and flowlayout for reactions
- Add avatars to summary view
- Add display names to summary view
- Add flow layout to reaction buttons as per designs(long press on scolling buttons is difficult to achieve so prioritised this).
* Add and use SwiftUI-Flow for reaction layout.
* Correct Swift-Flow inclusion via xcodegen
* Remove own FlowLayout implementation and Fix unit tests
* Improve naming and correct spacing on summary view as per design.
* Fix safe area insets on summary view bottom sheet
* Scroll to selected reaction in the case that it is offscreen when the sheet is displayed.
* Add more reactions to UITests to ensure the new flow layout is displayed(wraps on to second line).
* Fix snapshot image.
* Address review comments.
* Use onLongPressGesture for reactions also to fix double actions bug and for consistency.
* Respect RTL languages.
* Fix unit test.
* is now possible to open the confirmation dialog and pass the transaction id
* task completed added some tests
* changelog
* title visibility set to .visible
* added the read receipt into the code
* fixed some things lost during merge
* implemented the status view to be always at the trailing side
* preview code for better testing
* removed timelineStyle modifier
* removed also the group style
* added some UI tests for the read receipts
* Fixes#975 - Update editing message UI
* Fixes#976 - Update reply composer mode UI to include message being replied to
* Use different icon corner radii in the timeline reply view depending on its placement
* Cleanup how we use message timeline items in preparation for rich reply rendering
* Expose reply details up to the UI level
* Render replies in the timeline (textual for now). Remove now unused AttributedStringBuilderComponent isReply flag.
* Move reply detail loading to when the item appears instead of when it's created.
* Fix unit tests
* Fetch event details also when the reply details are in the error state
* Tweaks following code review
* Localise emote bodies
* Fix replies not loading sometimes, use the current event identifier instead of the one being replied to
* audio timeline item support
* improved the code to reduce cognitive complexity
* no need anymore for this swiftlint disabling of a rule
* pr comments
- Decryption banner on the timeline
- Bubble colours
- Background insets
- Multiline composer corner radius
- Read marker
- GIF indicator
- Reactions shape
- Use RoomTimelineViewLabelStyle everywhere possible
- Only set a line limit on reply quotes, allow all the lines for regular quotes.
- Message label icons
- Yes/No button casing
- Make sender profiles immutable.
- Enable copy link and invite buttons.
- Fix layout loop detecting multiline composer text.
- Add animation to the encryption banner.
There are some bad assumptions about profile changes in here.
* Remove assumption FIXME's
Profile changes that come from other members will be state event of None.
* Bump SDK version.