If the user attempts to invite someone (to a room or creating a DM) whose identity is not cached, we prompt them to make sure this was their intention.
* Read and import the secrets from ClassicAppAccounts.
* Record snapshots.
* Add some documentation, tidy up tests and fix the dismissal of the backup instructions.
* Workaround flakey tests (the fulfilments weren't always firing).
* Allow a custom Classic App deep link URL to be configured.
* Live Location Sharing Banner
# Conflicts:
# ElementX.xcodeproj/project.pbxproj
* updated the top banner modifier and the top banner views
# Conflicts:
# ElementX/Resources/Localizations/en-US.lproj/Localizable.strings
# ElementX/Resources/Localizations/en.lproj/Localizable.strings
* improved the stopping function from the timeline item
* stop live location sharing before starting a new one.
* added some tests for LiveLocationManager
* pr suggestions
* feat: Start voice call from DM
* rename voiceCall:bool to isVoiceCall
* review: Fix a typo
* review: use one displayCall(bool) instead of 2 actions
* review: Add a new specific preview for DM calls
* combine startCall and startVoiceCall in single enum with isVoiceCall
* review: add isVoiceCall to presentCallScreen action
* review: Use proper a11y for voice vs video
* add voice/video options to UserProfile Screen
* fixup: move config params to the roomInfo object
* review: Revert changes on preview as the toolbar cannot be snapshot'd
* review: Extract call controls in specific file
* oups: Add voice call option in room details screen
* Update room details screenshots
* Update user profile screenshots
* Update room member details screenshots
* fixup: remove dead code
* Update Send button bg color
Change the gradient bg to accent/rest.
* Tidy-up ComposerToolbar to match iOS 18 Figma.
Also simplifies the tests a bit.
* Add a .glassEffect to Compound's SendButton.
* Add a border to TimelineReplyView.
Also use the same sizes in both the message bubbles and the composer.
* Change icon size and container in message bubbles
- Container size = 36x36px
- Icon size = 24x24px
* Update icon of reply contents to be 24x24
* Update the VoiceMessageButton to match the designs.
* Adopt Liquid Glass in the ComposerToolbar.
* Generate and fix snapshots.
---------
Co-authored-by: Doug <douglase@element.io>
* created the data for the timeline item
# Conflicts:
# ElementX/Sources/Other/Logging/Tracing.swift
# ElementX/Sources/Services/Authentication/AuthenticationService.swift
# ElementX/Sources/Services/Authentication/LinkNewDeviceService.swift
* Implemented the LLS timeline item
* updated preview tests
* pr and design suggestions
* previewscrollview is debug only
* Changed ordering of Room details screen
Added media, polls and pinned section on top, because the user is more likely to access those.
* Update snapshots.
* Settings > Change Done button to Close
Do it!
* Change ordering of menu item sections
Swap manage app section with manage account section.
* Use a primaryAction placement for the close button.
* Generate the preview snapshots.
* Merge the Manage account and Manage devices actions.
---------
Co-authored-by: Doug <douglase@element.io>
* Allow AuthenticationStartLogo to be scaled and fix dark mode when not on a gradient.
* Fix the layout of AuthenticationStartScreen with large Dynamic Type sizes.
* refactored the static location screen to the location sharing screen
# Conflicts:
# UnitTests/Sources/LocationSharingScreenViewModelTests.swift
# Conflicts:
# ElementX.xcodeproj/project.pbxproj
* implemented a custom pin with an overlayable view
* implemented the render of the user when the location is sender instead of the pin type
* removed description and body they are not used at all.
* reimplemented single button for sharing this or user location + implemented an experimental way to update annotations
* removed unnecessary @Suite description
* implemented a way to display the alert on top of the sheet and added a spinner to the center user location button
* fixed alerts strings
* fixed a failing test
* improved preview tests
* Make sure the inviter's avatar is hidden in the JoinRoomScreen.
* Update preview tests to use an inviter that has an avatar…
* Also hide avatars in the Space invite avatar pile.
* Update dependency element-hq/compound-design-tokens to v6.10.0
* Further Compound updates.
The gradients have been simplified and are now opaque.
* Missed snapshots.
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Doug <douglase@element.io>
* 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.
* session verification now does not have a waiting screen, but the initial state instead presents a loading state. Everything is also handled with one single action
* use progress view in place of the spinner icon
* change progress view tint
* Lock the LinkNewDeviceScreen to portrait.
* Add cancel buttons to the QR Code errors and handle cancel/startOver correctly.
* Use the shared QRCodeErrorView in the LinkNewDeviceScreen.
* Clarify the different QR Error/ErrorStates a bit more.
* Update snapshots.
* feat: Display an icon in the room header for rooms with shared history
* fix: Apply suggestions from code review
- Simplifies `isRoomHistoryShared` expressions using type inferrence.
- Adds failure messages to unit test.
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* fix: Remove extension method in favour of field on configuration.
* fix: Distinguish between `shared` and `worldReadable` icons.
* refactor: Use `RoomHistorySharingState` enum with extension methods
---------
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* Fix inline code being rendered as blocks.
And make blocks non-greedy as well as only scrolling when needed.
* Rename the bubble layout priorities.
* Add an InlineCode attribute so that the builder also strips links from these too.
* Split up the snapshot tests into individual cases.
This should make it much easier to see *what* has changed when regenerating.