* Implement voice message variable playback speed
* Move playback speed string to Untranslated
https://github.com/element-hq/element-x-ios/pull/5121#discussion_r2822631371
* Address review feedback for voice message playback speed
- Persist voice message playback speed as an enum in AppSettings instead of storing an index.
- Update playback speed cycling to derive from enum allCases and safely fall back to `.default` if the stored value cannot be resolved.
- Apply runtime speed updates in AudioPlayer only when the player is in the `.playing` state.
- Keep MediaPlayerProviderTests formatting/indentation style intact while retaining mock playback speed setup.
- Regenerate preview snapshots for:
- PlaybackSpeedButton
- VoiceMessageRoomPlaybackView
- VoiceMessageRoomTimelineView
* Move VoiceMessagePlaybackSpeed outside AppSettings, remove speedRatio
* Stabilize PlaybackSpeedButton width
* Sync voice-message speed label
- Add voiceMessagePlaybackSpeed to TimelineViewState and bind it from appSettings.$voiceMessagePlaybackSpeed.
- Pass that timeline-level speed into VoiceMessageRoomPlaybackView and use it for PlaybackSpeedButton, so labels update consistently across items.
- Use @EnvironmentObject in VoiceMessageRoomTimelineContent so the view re-renders when timeline context state changes.
- In WaveformInteractionModifier, add .allowsHitTesting(showCursor) to the cursor interaction view so hidden pre-playback cursor hit area does not steal taps from the speed button.
* Add support for SpaceFilters on the SpaceServiceProxy level and a screen that renders them
* Add aliases to a couple of space room mocks
* Update translations and related snapshots
* Add a feature flag for space filters
* Add a new room summary provider filter that takes a list of room identifiers next to the normal state filters
This will take the SpaceFilter's descendants and combine it with the normal filters to reduce the rooms shown
* Add a new space filter button to the home screen and link it to the SpaceFiltersScreen and the actual RoomSummaryProvider room list filters
* Bump the RustSDK to v26.01.20-2 for SpaceFilter support.
* Add a cancellation button to the space filters screen
* Make the filter presentation mode liquidy, move the sheet to within the home screen.
* Address PR comments
* Expand the space flow UI tests to include the add rooms screen.
Also fixes some failures in these tests due to the room/space title now being a button.
* Expand the space flow UI tests to include the space members screen.
* Reset AppSettings before running preview tests.
* Rename SpaceListScreen to SpacesScreen
To avoid confusion with the SpaceRoomListProxy.
* Rename SpaceExplorerFlowCoordinator to SpacesTabFlowCoordinator and ChatsFlowCoordinator to ChatsTabFlowCoordinator.
* Update proxies ready for adding rooms to a space.
- ClientProxy.recentlyVisitedRooms to take a filter and to return room proxies.
- Expose SpaceServiceProxy.addChildToSpace.
* Implement the SpaceAddRoomsScreen.
* Fix the designs of the selected carousels.
Add more snapshot tests for inviting users.
* Fix for screen using wrong avatar size.
* Move BigIcon into Compound.
* Replace the old server selection image asset with the \.host icon.
* Add a new TitleAndIcon component to Compound.
* Add the ability to override TitleAndIcon's padding.
* Tidy-up Rust to Swift mapping.
* Refactor out a dedicated QRCodeErrorView.
* Use the new QRCodeErrorView for most error state snapshots.
* Simplify QRCodeErrorView structure.
Also updates the background to match the designs.
* Fix a small compile error in the unit tests.
* Add support for space rooms to JoinRoomScreenModel.
* Make a single wrapper type for JoinRoomScreen previews to simplify instantiation.
* Add previews for JoinRoomScreen for spaces.
* Start working on space description
* Hook up presentation of the SpaceScreenDescriptionView.
* Make the SpaceScreenDescriptionView more accessible and apply a background colour.
* Refactor and move sheet presentation to the header view.
---------
Co-authored-by: amshak <85162587+amshakal@users.noreply.github.com>
* Update Compound.
* Add some snapshot tests for PillView on a bubble background.
Version 5.0.0 of compound-design-tokens changed the pill colour but all our snapshots are on white so we didn't notice the difference in contrast. This doesn't fix anything, it purely adds the snapshots.
* Add a picker mode to the ServerConfirmationScreen.
* Hook up the account provider picker in authentication the flow.
Simplify the authentication flow coordinator, removing the restricted state.
* UI/Snapshot tests.
* 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
* Implemented join room by address
* improved the text field typing
* some improvements to how the text is edited
* remove navigation link
* moved room directory search to the start chat flow
* updated preview tests
* added unit tests and improved the code
* updated strings
* some pr suggestions:
- moving the file
- changing the name of the action
- reintroduce the debounce text queries
- add comments
* renamed the auth text field style to Element
updated tests
* 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
* created the view to hold the bottom sheet
* added the sheet to the start chat screen
* switched the alert with the bottom sheet
in the room member details
* add a small delay to not always show the loader
* suggested PR changes
* pr suggestions and updated tests
* handling the history visibility flag
* better logic to handle visibility
* better handling of the visibility options state
* added some copies, and the public room directory
visibility state
* completed the UI
added also the preview tests
* improved the handling of the directory visibility
* added the space users case
and improved handling of the access -> vsibility reaction. Also added a simple error handling for the public directory toggle
* added the edit room address view
but is missing its full implementation
* implement the UI for the edit room address screen
* implemented error checking
when editing the address
* updated preview tests and improved code
* typo fix
* Fix various issues after rebasing.
* Fix build errors and broken snapshot tests
* Adopt latest room privacy and canonical alias setting APIs
* Add support for creating and editing the room's alias.
* Add support for saving room privacy setting changes.
* Fix room alias screen snapshot tests following recent changes.
---------
Co-authored-by: Stefan Ceriu <stefanc@matrix.org>
* Retrofit `deferFulfillment` onto snapshot tests.
* Convert a bunch of preview tests to the new fulfillment publisher
* Convert more tests
* Remove unneeded delays from the remaining tests
* Remove snapshotting delay option.
* Extract the timeline item background from the BubbledStyler.
* Use different views for files and voices messages, reuse the timeline content but only keep the bubble background instead of the whole TimelineStyler.
* Add back max voice message width and add missing accessibility label
* Move the voice message views to where they belong
* Add separate struct for each media events timeline view
* Add support for all the different media gallery message types and get the files section working
* 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.
* 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