Commit Graph

438 Commits

Author SHA1 Message Date
Letro Bot
77d685cf89 Merge upstream/main into main 2026-05-09 14:51:17 +04:00
Mauro Romito
95c362d31a Add the setting to change live location permissions to the change permissions screen. 2026-05-06 13:53:36 +02:00
Mauro Romito
0a896e5ba2 Show alert if user has not beacon and beaconInfo permissions in the room. 2026-05-05 15:10:38 +02:00
Element CI
428cc5884f Translations update 2026-05-04 15:28:22 +03:00
Stefan Ceriu
f310ec9e82 Allow the mac app to chose room avatars directly from files instead of the photo library 2026-04-30 14:58:08 +03:00
ElementRobot
6cf3defa28 Translations update (#5516)
Co-authored-by: Element CI <ci@element.io>
2026-04-29 21:01:54 +01:00
Doug
c0de48164d Update TimelineMediaPreviewDetailsView to match the latest design. (#5513)
Update the TimelineMediaPreviewDetailsView design.
2026-04-29 19:34:22 +01:00
Doug
2284719c52 Update the Deactivate Account strings (and icon) to call it Delete Account. (#5458)
Use the new strings and icon.

Snapshots have already been updated.
2026-04-21 15:50:27 +01:00
ElementRobot
024978b220 Translations update (#5452)
* Translations update

* translation updates

---------

Co-authored-by: Mauro Romito <mauro.romito@element.io>
2026-04-21 13:24:41 +01:00
Mauro Romito
4edebeeb75 updated the UI for the live locations distance to match designs. 2026-04-21 12:32:50 +02:00
Mauro Romito
58a6d0a33f fix invite users confirmation sheet strings 2026-04-20 18:33:44 +02:00
Mauro
2e9a499fc3 LLS Sheet implementation (#5420)
* Add LiveLocationSheet and refactor existing views to share code

* Implement logic for highlighting a specific LLS from a user once selected in the sheet

* Updated tests, project and added new previews for the LLS sheet.

# Conflicts:
#	PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPad-pseudo.png
#	PreviewTests/Sources/__Snapshots__/PreviewTests/liveLocationRoomTimelineView.Bubbles-iPhone-pseudo.png

* add Equatable conformance to CLLocationCoordinate2D
2026-04-17 11:13:16 +00:00
Letro Bot
1f944c7e84 Customize a few more strings,
Fix an issue with stringdict customations
2026-04-14 18:35:20 +04:00
Skye Elliot
477bf859c5 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
Mauro Romito
16e9fb041f translation update 2026-04-13 11:40:22 +02:00
Mauro Romito
1ee86357b4 use swift regex and also apply the same logic to stringsdict 2026-04-10 16:21:57 +02:00
Mauro Romito
e8a5123cc9 order strings alphabetically by key after downloading them 2026-04-10 16:21:57 +02:00
ElementRobot
1e0b26816b Translations update 2026-04-10 10:55:52 +02:00
Letro Bot
922dfdaee6 Add a mechanism for customizing app strings 2026-04-10 01:07:36 +04:00
Valere Fedronic
ec00eac164 Add support for starting voice calls from a DM (#5305)
* 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
2026-04-09 16:22:31 +01:00
ElementRobot
979ca55b0b Translations update (#5357) 2026-04-07 11:32:54 +01:00
Mauro Romito
0fb321576d implement the start live location handling in the LocationSharingScreenViewModel 2026-04-03 14:19:42 +02:00
Mauro Romito
9e17fd0315 implemented the usage of the live location manager permission handling in the location sharing screen. 2026-03-31 12:58:27 +02:00
ElementRobot
ca149d93f9 Translations update 2026-03-30 13:54:04 +02:00
ElementRobot
055b6524a0 Translations update (#5295) 2026-03-23 17:20:23 +00:00
Aaron Thornburgh
10597ec9be Use an iOS 26 close button and re-order some sections in SettingsScreen. (#5281)
* 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>
2026-03-20 15:00:10 +00:00
Mauro
9442b6981f Rename Sign Out to Remove Device + Update SDK 26.03.18 (#5280)
* update the sdk

* updated preview tests

# Conflicts:
#	ElementX/Sources/Screens/Timeline/View/Style/TimelineItemSendInfoLabel.swift
#	ElementX/Sources/Screens/Timeline/View/TimelineItemViews/LiveLocationRoomTimelineView.swift

* update sdk to 26.03.18 + regenerated preview tests after sign out copy change

* updated UI tests

* pr suggestions
2026-03-18 17:34:45 +01:00
ElementRobot
7a383cb855 Translations update (#5212)
* Translations update

* updated previews

---------

Co-authored-by: Mauro Romito <mauro.romito@element.io>
2026-03-16 16:51:17 +01:00
Mauro Romito
0bb86a1edc improved location sheets presentations and addressed some pr suggestions 2026-03-09 18:14:41 +01:00
Mauro Romito
4633b0b140 implementing static location sheet 2026-03-09 18:14:41 +01:00
Mauro
2b0771c43c 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
ElementRobot
f085c9d742 Translations update (#5158) 2026-03-02 11:29:00 +00:00
Mauro Romito
a0be508691 improved the code so that we can use the AudioPlayerState directly to check the playback speed and added localization 2026-02-19 22:40:31 +01:00
Florian
5f724941ee 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
56eec826df Fix A11y tests (#5104)
* replace NavigationStack with ElementNavigationStack to allow the content to be rendered without a NavigationStack in a11y tests

* fix a11y tests

* update xcodeproject

* swiftformat fix

* use iOS 26.1 for CI

* use a wrapper to solve the issue for a11y tests

* ElementNavigationStack only uses the trick in DEBUG mode, and added a swiftlint rule to prevent the usage of NavigationStack
2026-02-13 16:45:58 +01:00
Mauro Romito
ac86d4cfbc 1. Updated the space selection UI 2. Paginate spaces after room creation 3. Pre-selected space creation defaults to space members access. 2026-02-09 18:22:41 +01:00
Doug
9b6324b295 Add boot detection in the NSE and use this to inform the user that there may be more notifications. (#5054)
* Add an initial implementation of the receivedWhileOfflineNotification.

* Only deliver a single receivedWhileOffline notification per boot and clarify the API.

* Add a 15-minute threshold for the receiveWhileOfflineNotification.
2026-02-06 15:18:09 +00:00
ElementRobot
6184312b07 Translations update 2026-02-02 10:37:21 +02:00
Mauro Romito
b3a4929243 implemented the presentation of transfer ownership screen from the space flow and update UI and preview tests 2026-01-28 15:42:17 +01:00
Doug
76f4f5f35f Update the crypto strings. (#5009) 2026-01-27 11:32:52 +00:00
Mauro Romito
8090c4a078 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
2fdc37ce72 implemented the flow to create room in a selected space 2026-01-23 15:18:55 +01:00
Mauro Romito
81cc5fc5ec implemented the space selection list and the selection logic
# Conflicts:
#	ElementX/Sources/Screens/CreateRoomScreen/View/CreateRoomScreen.swift
2026-01-22 16:40:25 +01:00
Doug
ed892fee94 Add the empty state to SpaceScreen. (#4985)
* Rename PaginationState.timelineEndReached to PaginationState.endReached.

* Rename PaginationState to TimelinePaginationState.

Also renames PaginationStatus to PaginationState so that a TimelinePaginationState consists of the forward and backward pagination states.

* Add the empty state to SpaceScreen.

Only has 1 of the 2 buttons for now.
2026-01-22 12:37:34 +00:00
Stefan Ceriu
d1f1a598d5 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
ElementRobot
213e9d4519 Translations update (#4970)
* Translations update

* Update snapshots.

---------

Co-authored-by: Doug <douglase@element.io>
2026-01-19 19:59:26 +00:00
Doug
b009b8ed66 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
ElementRobot
3ad270fa54 Translations update 2026-01-13 18:52:23 +01:00
Mauro
2b28b70871 Create room redesign and refactor (#4942) 2026-01-12 17:49:31 +00:00
ElementRobot
5b09ef9dc2 Translations update 2026-01-12 10:12:22 +01:00