Commit Graph

70 Commits

Author SHA1 Message Date
Skye Elliot 78240ebdee Prompt user when inviting users with uncached identities (#5331)
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.
2026-04-14 14:51:58 +03:00
Doug 9590443aac Remove the Spaces Announcement sheet. (#5376) 2026-04-10 17:49:28 +01:00
Mauro 922fcafcd5 Live Location Sharing Banner (#5370)
* 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
2026-04-10 14:50:42 +02:00
Doug 6978f96f91 Add a view with instructions for enabling backups in Element Classic. (#5359)
No presentation logic yet.
2026-04-08 11:03:30 +01:00
Stefan Ceriu e7e1e990db Add a new RoomThreadListScreen and hook it up to the RoomThreadListService
It will automatically paginate to fill the screen and update the list as updates come in.
2026-03-31 18:21:14 +03:00
Mauro Romito 96a13f718e implemented the UI to render the formatted floating date 2026-03-30 14:05:31 +02:00
Aaron Thornburgh 96b6d69d5a Update Send button bg color (#5170)
* 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>
2026-03-25 17:42:10 +00:00
Mauro b8d337e4ce Render the live location timeline item (#5209)
* 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
2026-03-24 10:34:00 +01:00
Mauro Romito 9e68da4ff0 implementing static location sheet 2026-03-09 18:14:41 +01:00
Mauro bbbb2e9dee Refactor and redesign Location Sharing Screen (#5155)
* 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
2026-03-06 12:51:16 +01:00
Mauro Romito 7a5591cf84 preview tests fully migrated to swift testing 2026-02-23 18:44:32 +01:00
Florian 285f8b7834 Voice message: variable play back speed (#5121)
* 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.
2026-02-19 22:40:31 +01:00
Mauro Romito ab1ed9e671 added the create button in the empty state of the space screen and refactored some code 2026-01-23 15:18:55 +01:00
Mauro Romito 7f66b694b1 implemented the logic that displays the space selection CTA 2026-01-22 16:40:25 +01:00
Stefan Ceriu b4b9f6affa Space filters (#4977)
* 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
2026-01-21 20:19:39 +00:00
Doug 6e2ff7ae56 Include the Members and Add Rooms screens in the spaces UI tests. (#4981)
* 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.
2026-01-21 15:24:54 +00:00
Doug c5b1c5d1bd Use more Liquid Glass in the room/space screen toolbars (#4965)
* Add a glass style to the Room/Space header view on iOS 26.

* Update snapshots and fix the join call button.
2026-01-16 19:29:27 +00:00
Doug 6a75d80081 Add the initial implementation for managing spaces. (#4963)
This isn't hooked up into the flows yet.
2026-01-16 15:29:27 +00:00
Doug 1feae5100a Tidy up the naming of spaces a bit more. (#4955)
* Rename SpaceListScreen to SpacesScreen

To avoid confusion with the SpaceRoomListProxy.

* Rename SpaceExplorerFlowCoordinator to SpacesTabFlowCoordinator and ChatsFlowCoordinator to ChatsTabFlowCoordinator.
2026-01-14 13:45:25 +00:00
Doug cde9714a83 Implement the SpaceAddRoomsScreen. (#4951)
* 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.
2026-01-14 12:07:57 +00:00
Doug 85ebf4d1ce Move BigIcon into Compound and add a new TitleAndIcon component. (#4866)
* 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.
2025-12-16 16:01:26 +00:00
Doug 841cdc291a General tidy-up related to QR codes. (#4865)
* 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.
2025-12-16 15:59:59 +00:00
Doug 4ea1aaecdd Add a Link New Device screen (behind a feature flag). (#4811) 2025-12-11 11:45:23 +00:00
Mauro Romito cf673173a8 pr suggestions and updated tests 2025-12-02 18:17:16 +01:00
Mauro Romito 0dcf1ffda2 implemented the navigation to the manage auth spaces screen
# Conflicts:
#	ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift
#	ElementX/Sources/FlowCoordinators/SpaceSettingsFlowCoordinator.swift
#	ElementX/Sources/Screens/SecurityAndPrivacyScreen/SecurityAndPrivacyScreenCoordinator.swift
#	ElementX/Sources/Screens/SecurityAndPrivacyScreen/SecurityAndPrivacyScreenModels.swift
2025-12-02 18:17:16 +01:00
Mauro dc9ab56972 Space Settings UI tweaks (#4678)
* design tweaks for the space settings flow

* pr suggestions

* update proj
2025-10-31 12:52:56 +01:00
Mauro Romito dfd757f2b6 implemented the basics of the flow coordinator, the logic and the navigation flow to get to the space settings view 2025-10-30 15:23:03 +01:00
Doug 6def8e5973 Make the space list bloom height match the room list. (#4585) 2025-10-07 12:52:12 +01:00
Doug 8cd5c9862e Add support for space rooms on the JoinRoomScreen. (#4582)
* Add support for space rooms to JoinRoomScreenModel.

* Make a single wrapper type for JoinRoomScreen previews to simplify instantiation.

* Add previews for JoinRoomScreen for spaces.
2025-10-07 10:51:58 +01:00
Doug 0f38f303ab Minor space tweaks (#4577)
* Hide the space ShareLink on iOS 26 for now.

* Don't allow the last admin to leave a space.
2025-10-07 08:16:48 +01:00
Doug 93f712779d Add the spaces feature announcement sheet. (#4571) 2025-10-06 16:59:56 +01:00
Mauro Romito b58d4269f4 implemented the labs screen 2025-10-06 10:12:43 +02:00
Doug 7e7cf1587f Use the new notification sound. (#4572)
* Use the new notification sound.

* Add a banner informing the user of the new notification sound.
2025-10-03 21:09:50 +01:00
Doug a226c99492 Implement the flow for leaving a space. (#4568) 2025-10-03 16:37:09 +01:00
Stefan Ceriu 85f2a00311 Update generated file headers after Sourcery bump. 2025-09-24 07:47:43 +03:00
Doug 20b57d0ad7 Add the sheet for expanding the space description. (#4475)
* 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>
2025-09-08 12:07:08 +01:00
Doug 8000dbe29f Add a SpaceScreen for listing rooms and subspaces within a space. (#4412) 2025-08-14 16:24:20 +00:00
Doug 3dc6d73899 Add SpaceRoomCell & Space…ProxyProtocols and use them on the SpaceListScreen. (#4404) 2025-08-13 12:06:29 +01:00
Doug f59a93d1a9 Initial setup for the SpaceListScreen. (#4380) 2025-08-05 11:06:26 +01:00
Doug 5065ed6735 Update Compound and add some new snapshot tests. (#4311)
* 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.
2025-07-09 11:24:14 +01:00
Mauro Romito 4662eca9e2 added a TombstonedAvatarImage view to be used for the .tombstoned case 2025-06-06 10:49:29 +02:00
Doug 5197e41928 Show an account provider picker on the server confirmation screen when required. (#4137)
* 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.
2025-05-20 17:21:08 +01:00
Stefan Ceriu 806d676299 Introduce a TimelineItemThreadSummary object (#4032)
* 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
2025-04-16 16:19:29 +03:00
Mauro Romito 0e7533145a refactor: manage member sheet in timeline
better implementation

updated tests

Update ElementX/Sources/Screens/Timeline/TimelineViewModel.swift

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>

fix
2025-04-09 15:03:54 +02:00
Mauro Romito d92fecdc7e feat: decline and block screen
fix

improvement

fix conflict

fix tests

tests
2025-04-07 18:52:56 +02:00
Mauro Romito 2ee5c1b403 feat: report a room
updated tests

updated tests

added a feature flag to report room

removed delay

rename
2025-04-07 17:17:08 +02:00
Stefan Ceriu fb8a1f33d8 Converge on same naming convention for snapshots in the preview tests as in the UI tests. 2025-03-05 11:43:08 +02:00
Mauro 7f6ea1c2ae Join room by address (#3840)
* 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
2025-02-28 12:35:15 +00:00
Doug 8c07ee35c4 Update the SDK.
Handles changes that removed support for the sliding sync proxy.
2025-02-18 11:55:20 +00:00
Stefan Ceriu f77faee981 User verification state indicators (#3793)
* 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
2025-02-18 08:37:34 +02:00