* 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
* Update compound and handle plain to tertiary/textLink button style updates.
* Update the start chat button to use the right icon/style.
* Update preview snapshots.
* Fix remaining snapshots.
- 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
* 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.
* Bump the RustSDK to v25.03.11
* Replace oidc login prompt with nil following the changes from https://github.com/matrix-org/matrix-rust-sdk/pull/4761
```
/// * `prompt` - The desired user experience in the web UI. No value means
/// that the user wishes to login into an existing account, and a value of
/// `Create` means that the user wishes to register a new account.
```
* Fix trailing closure warnings
* Update the client proxy after making `getNotificationSettings()` and `cachedAvatarUrl()` async (they used to be blocking on the rust side).
* Move `Room.isEncrypted` to the info publisher and manually update the encryption state when creating the room.
* Bump the SDK again to v25.03.12 - This introduces a new way to configure the tokio runtime that we can use to have extensions use less memory
- introduce a new Target struct that takes care of setting up rust services (tracing and tokio) for our various targets
- cleanup MXLog and friends
* Address PR comments
* Bump the SDK again, switch back to using `.consent` as the OIDC login prompt (which was reintroduced in matrix-org/matrix-rust-sdk/pull/4791)
* refactored the suggestion item structure
to scale with the room pill
* Implemented a way for the rooms
to appear in the suggestions view for the RTE, however I need to add the pills to the composer and the compatibility with the plain text composer
* small code correction
* fix
* fixed a bug where the suggestion wasn't returning
the right suggestion type and the suggestion text properly
* implementation done!
also updated some tests, but we need more of them
* updated toolbar view model tests
* updated tests
* updated preview tests
* renamed the Avatars case for the suggestions
* Partially revert the message composer encryption badges and only show it for unencrypted rooms.
* Update preview test snapshots.
* Update UI test snapshots.
* added a way to render the room and the message
pills, but is WIP
* permalinks now get converted into pills!
* fixed an issue where room address mentions
were not adding a URL properly but a string
* updated tests
* c
* Revert "c"
This reverts commit 5c80252fa23dba7e4d44f2a07fbf1e9500e37c82.
* updated tests
* more tests
* created APIs to get a specific RoomSummary
given the id or the alias
* small mention builder improvement
* pr suggestions
* Introduce a `UserIdentityProxy` and have it combine upstream methods into an easy to digest `UserIdentityVerificationState`. Use it in a dedicated `VerificationBadge` UI component
* Show a DMs counterpart verification state in the room header
* Show a warning on the room details `People` entry when there are identity verification state violations on any of the members.
* Show verification badges in the room member list
* Show a withdraw verification section on the room member details for users that have pinning violations.
* Remove the verification section from the profile screen as there's no reliable way to keep it up to date
- the underlying Rust SDK Olm Machine can be rebuilt without notice which would break any existing user identity change streams.
* Update preview test snapshots
* Fix message completion trigger to work anywhere in the message
* Add tests for display suggestion in difference message positions
* Fix suggestion trigger could support multiple mention symbol
* Remove optional parameter type and tweak argument name to hide
* Optimize the suggestions trigger using regex
* Fix the cursor at wrong position after selected suggestion
* Modify the rawSuggestionText pass data in right way
* Modify mention symbol to use regex type
* Update ElementX/Sources/Screens/RoomScreen/ComposerToolbar/CompletionSuggestionService.swift
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* Update generated mock
---------
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* 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.
* Add the timeline controller factory to the timeline view model.
In preparation for building a timeline to swipe through media in QuickLook.
* Refactor RoomTimelineControllerFactory.
* Refactor RoomTimelineController.
* Refactor RoomTimelineProvider.
* feat(crypto): Warn and block sending on verification violation
* fixup: Fix ComposerToolbar previews
* fixup! add ComposerToolBarViewModelTests for canSend
* add new preview tests for verification violations
* Use `deferFulfillment`s in the unit tests.
---------
Co-authored-by: Stefan Ceriu <stefanc@matrix.org>
* Overlay a progress indicator for downloads instead of using a toast indicator.
* Update the SDK.
* Remove the feature flag for the media browser.
* Remove the media captions feature flag too.
* Add unit test cases for download failure and swiping between items.
* Snapshots (with the media browser visible in the screen).
* Embed the media preview quick look inside a full screen cover
With a zoom transition on iOS 18.
* Use a the representable coordinator properly.
* Fix a bug with the toolbar appearance.
* Format
* Try prevent the zoom transition being upside down.
* Fix the snapshot test configuration.
* WIP RequestToJoin struct
* implemented the logic to display the cells
* knock request banner accept flow
* mark all knocks as seen implemented
* details logic
* implemented accept, decline and ban in the list
* added a loader and modified the stacked view
of the banner
* pr suggestions
* updated naming and loading strings
* added the initial loading state
improved code and the tests
* updated a string that has changed
* code improvement
* tests for the room screen view model
* room details tests
and improved the knock requests tests for the room screen
* knock requests list tests
* added error state alerts with retry
* struct has been renamed on the sdk
so I renamed it also on the app side
* update SDK
* updated the order of the room details
also...
- removed the bloom bg from the join room screen
- now DMs do not necessarily need to be encrypted rooms
- changed bg of the knock banner
* removed unnecessary disabled
* updated join room screen tests
* 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.
* Add timeline item action for copying a media caption.
* Fix the action colours when long pressing a timeline item.
Nice side effect: Reasonable sized buttons when button shapes are enabled.
* Re-arrange the Timeline Item Menu.
* Add timeline item menu snapshots for media items.
* Update the File/Audio captions layout to match Figma.
* Fix caption sizing issues.
The send info label was being added incorrectly.
* Update icon size and regenerate snapshots.
* Fix a regression in the location timeline item layout.
* created the basic navigation and files
* updated the logic
so that the buttons that do not have permissions won't show
* added the empty state
* progress in making the list UI
* update tests
* UI improvements
* fixed an issue with media provider
* update button style
* fixed a navigation bug
* pr suggestions
* pr suggestions
* Add a composer to the MediaUploadPreviewScreen.
And send it's content to the media upload's caption.
* Use the new compound SendButton (updating relative padding in the toolbar).
* Update snapshots.
* Add unit tests for sending a caption.