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
* 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.
* 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.
* 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>
* 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>
* 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.
* 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.
* Add a badge for verified users/room members.
* Reorder subviews.
* Add a (disabled) button to verify other users.
* PR comments.
* Update the SDK.
* Adopt the SDK changes introduced in matrix-rust-sdk/pull/4100
---------
Co-authored-by: Stefan Ceriu <stefan.ceriu@gmail.com>
* Send a message from integration tests and check that it doesn't show up in the app logs
* Increase photo library timeout
* Wait for image tapping to process
* Send a message using the rich text editor too
* Wait for the various pickers to finish loading
* Set all logs to `trace` in integration tests
* Close formatting options after sending the second message
* Make sure logs are actually sent to tracing and get redirected to the right file
* Switch from using a custom `trace` log configuration to the lowest level `TracingConfiguration` we support
* Fixes#3216 - Accept current autocorrection/suggestion before sending a message.
* Switch from a temporary textField to `inputDelegate` selection changes
* Add the networkMonitor to the NSE and delete the old MockMediaLoader
* Generate a MediaLoaderMock through AutoMockable and use it in the MediaProviderTests
* Implement an ImageProvider mechanism that automatically tries reloading images when connectivity is established again and use it for LoadableImages
* Merge the ImageProvider protocol back into the MediaProvider
* Address PR review comments
* Provide a default sdk client request configuration
* Address tasks not automatically cancelling themselves when views get deallocated