Commit Graph

2170 Commits

Author SHA1 Message Date
Mauro Romito 142529ad69 Revert "allow copying blocked user id"
This reverts commit f6f6538bd6.
2026-08-26 13:44:15 +02:00
Mauro Romito f6f6538bd6 allow copying blocked user id 2026-08-26 13:43:14 +02:00
Matthew Hodgson c812b723dc Advance the join room screen when the server joins us to the room
The homeserver can join a user without a join request from their client,
auto-accepting a knock (element-hq/synapse#16307) or an invite
accepted on another device. The join room screen only navigated on a
user-initiated join and only observed membership changes while knocked,
so a server-side join left it sitting on a stale invited state.
2026-08-26 08:17:00 +03:00
Doug 353233672a Fix settings screen snapshots. 2026-08-25 16:40:21 +01:00
Doug 84556c0672 Enable the User Status feature on supported homeservers. (#6059)
* Remove the user status feature flag.

* Handle User Status in tests.
2026-08-24 11:00:31 +01:00
Stefan Ceriu 1ba090b914 Fix missing back pagination attempt
Avoiding not populating past the initial events
2026-08-21 17:38:49 +03:00
Doug 0d222e8ac0 More tweaks for User Status. (#6051)
* Make sure user profiles are up to date when mentioning.

* Automatically focus the custom status text field.

* Make sure to clear the previous custom status text before input.

* Attempt to fix the user status sheet sometimes disappearing.
2026-08-21 11:23:33 +01:00
Stefan Ceriu 8a3468658b Address PR comments 2026-08-21 12:26:02 +03:00
Stefan Ceriu 0eea289b89 Fix test fixture copy paste error 2026-08-21 12:26:02 +03:00
Stefan Ceriu 9dd9fd9176 Prefetch the next room list page before reaching the bottom
Growing the list only once the last row was already visible, on top of the half a
second visible range throttle, meant hitting and bouncing off the end of the list
while the next page loaded. Ask for the next page half a page early instead, so
the growth happens while the user is still scrolling towards the boundary.

The threshold is clamped so that it stays positive for accounts with fewer rooms
than half a page, where it would otherwise always match and leave the list unable
to shrink back to a single page.
2026-08-21 12:26:02 +03:00
Stefan Ceriu e7787f4c3f Set the room list mode synchronously on a warm launch
The room summary provider subscription only delivers its current state through an
async main queue hop, which can end up queued behind the first render. On a warm
launch, where the cached rooms have already been published before the home screen
exists, that leaves the skeletons up for the whole duration.

Read the current state at the end of init instead, alongside the rooms which were
already being read there.
2026-08-21 12:26:02 +03:00
Stefan Ceriu 8c9edd5ea9 Fix the room list flashing empty on launch
The room summary provider publishes its loading state and its rooms through two
independent streams, so the state can report loaded before the first summaries
have been applied. Flipping the room list mode to .rooms at that point renders
an empty list until the summaries arrive.

Combine the two publishers into a single subscription so that the mode and the
rooms are always updated from the same pair of values, and keep the skeletons up
until the rooms have published. Only the initial transition is held back, an
empty list later on is a filter or a search result and must not send the mode
back to the skeletons.
2026-08-21 12:26:02 +03:00
Doug 864d022f45 Allow the Chats title to shrink when filtering on a space with a long name. 2026-08-18 17:59:06 +01:00
Doug b27a549ef8 Update the toolbars in the Chats/Spaces screens. (#6043)
* Fix an issue with macro compilation when using Xcode previews.

* Update the Chats/Spaces toolbars to match the Figma.

Fixes a bug with the status emoji in the liquid glass button.
2026-08-18 17:50:15 +01:00
Stefan Ceriu fa2b13864a Use normal path for error toast display 2026-08-18 11:55:32 +03:00
Stefan Ceriu 7ce16c5b2d Rework accessibility identifier comment 2026-08-18 11:55:32 +03:00
Stefan Ceriu 64076c6cf9 Show the failure alert even when no send handle is available 2026-08-18 11:55:32 +03:00
Matthew Hodgson 8bc7e7c281 Address review feedback on the send-failure dialog
- Resolve the send handle at tap time and pass it through the alert,
  removing the duplicated lookup and the stale-itemID window between
  tapping the indicator and pressing Retry.
- Route 'Remove message' through the existing timeline item menu redact
  action instead of a bespoke redact path with a fatalError.
- Surface a retry failure to the user with an indicator toast rather
  than only logging it.
- Only set the send-info accessibility identifier when the label has a
  tappable status, so plain timestamps don't create ambiguous matches.
2026-08-18 11:55:32 +03:00
Matthew Hodgson 404410b8a2 Add an accessibility identifier to the timeline item send info
Lets UI tests (and accessibility tooling) target the tappable send-info
label (timestamp / Sending failed) directly.
2026-08-18 11:55:32 +03:00
Matthew Hodgson 1aa9b29eb5 Offer Retry and Remove actions with a reason when tapping a failed message
Tapping the red (!) on a message that failed to send used to show a bare
"Sending failed" alert with only an OK button. Now the alert includes the
failure reason from the SDK (e.g. the HTTP error that caused it) and offers
Retry sending, Remove message and Cancel actions, wired to the send handle's
resend and to redacting the local echo respectively.
2026-08-18 11:55:32 +03:00
Doug d3b068cbad Fix the emoji picker's title when setting a custom status. (#6039) 2026-08-18 08:12:56 +01:00
Stefan Ceriu b41d801cab Prevent invalid composer mode crashes
Cause by voice recording racing against the send action.
2026-08-13 16:25:18 +03:00
Stefan Ceriu d4d74dd8f8 Avoid race conditions between the home screen's crash alert and Sentry's onLastRunStatusDetermined
By converting the `lastCrashEventID` to a publisher that the VM can just listen to instead of relying on start to match a pre-set event
2026-08-13 16:17:21 +03:00
Stefan Ceriu 5724e65d8e Move the shared map types into a new MapLibreInterface framework
Groundwork for loading MapLibre on demand. The map view is about to move into
its own framework, and both sides need to agree on the types that cross the
boundary, so ShowUserLocationMode and MapLibreError move out of the app into a
small framework that the app links.
2026-08-12 15:04:24 +03:00
Doug 947a47943b Set Element Call's user-agent back to the default but include the bundle name.
Apparently livekit-js-sdk does feature detection based on UA sniffing.
2026-08-11 13:11:26 +01:00
Michael 6efa8743ff Combine the Server Selection screen into the Server Confirmation screen and add autocompletion when entering an account provider. (#5949)
* Adjust login flow to exclusively use the ServerSelectionScreen

* Move async code to server selection vm

* ServerSelection supports pro picker options

* Use homeserver address for both confirmation and picker modes

* rename ServerSelectionScreenMode

* remove ServerConfirmationScreen

It's been superseded by the ServerSelectionScreen

* rename userInput

* Update strings with latest design strings

* Add server input autocompletion

* Store previous servers in AppSettings and autofill on server signin

* Audit changes for logging

* Enforce lowercase server history storage

* Update tests

* Update Xcode project

* PR review fixups

* Add HomeserverHistoryManager

* Review fixups 2

* Review fixups 3
2026-08-10 18:38:37 +01:00
Doug 03c434074a Show loading/failure states when setting/clearing user status. (#5993) 2026-08-07 17:24:19 +01:00
Doug aeffd942ec Update the SDK with a fix for read receipts. (#5991) 2026-08-07 13:41:48 +01:00
Danny 1a72a4e17b Allow tapping the avatar in the room member bottom sheet to view it fullscreen (#5989)
* Extract a shared helper for loading a media preview

The four screens that show a fullscreen avatar each had their own copy of the same
load-and-wrap logic. Move it to MediaPreviewItem.load, with the mime type as a
parameter defaulting to JPEG, and leave each screen's loading indicator where it is.

Signed-off-by: Daniel Anderson <daniel.anderson@toptal.com>

* Only dismiss a QuickLook preview that is still presented

UIKit forwards dismiss() up the presentation chain when the receiver has nothing
presented, so dismissing the avatar view was dismissing the profile details sheet
also.

Signed-off-by: Daniel Anderson <daniel.anderson@toptal.com>

* Allow tapping the avatar in the room member bottom sheet to view it fullscreen

Signed-off-by: Daniel Anderson <daniel.anderson@toptal.com>

---------

Signed-off-by: Daniel Anderson <daniel.anderson@toptal.com>
2026-08-07 13:11:40 +01:00
mredig bbdbbe1081 Create CallView.Coordinator in ViewModel
preserving it across view rebuilds as phone rotates
2026-08-07 12:36:07 +02:00
Doug a82726a991 Add timeouts after verifying the device owner when linking a new device. (#5970)
* Support for waitingForAuth continuation sender during Link new device

* Stop automatically regenerating new QR codes when they expire.

This reverts part of commit e235e3ba81.

* Add a timeout after the Face/TouchID verification when linking a desktop computer.

---------

Co-authored-by: Hugh Nimmo-Smith <hughns@element.io>
2026-08-06 14:56:34 +01:00
Doug f422208399 Update the SDK and handle some API breaks. (#5986) 2026-08-06 10:54:10 +01:00
Stefan Ceriu 0bddf30de9 Improve the room member part of the UI test user session flows 2026-08-06 11:50:21 +03:00
Mauro Romito 748ec818ac remove map tiler url from matrix wellknown 2026-08-05 16:00:43 +02:00
Doug 80530f0006 Add hooks for the RoomDetails, RoomMemberDetails and UserProfile screens. (#5980)
Also adds an @AppHook macro.
2026-08-05 12:41:18 +01:00
Stefan Ceriu c4e5bde5bf Fix the missing accessibility description on the Settings button's avatar
The accessibility audit flagged the avatar node in AvatarSettingsButtonLabel
as having no description, since it carried an accessibility identifier but
never a label.

The avatar is purely decorative, both screens that use it wrap it in a button
that is already labelled with the Settings title, so it is now hidden from
accessibility and the identifier has moved up onto the buttons themselves,
where the UI and integration tests query it.
2026-08-04 12:49:42 +03:00
Stefan Ceriu 4ca7c1a8fa Manually publish room list range updates when the content isn't scrollable 2026-08-04 09:39:42 +03:00
Doug 1e78825b0b Rename properties and sort members in advance. 2026-08-03 15:00:38 +01:00
Kai 3ab0aacabf Add call icon next to members in call (#5941)
* feat: add call icon next to members in call

* feat: use matrix rtc room status for in-call

* chore: revert xcodeproj change

* chore: update preview tests

* chore: Update ElementX.xcscheme

* chore: undo room member status proxy

---------

Co-authored-by: Kai <nankeen@users.noreply.github.com>
2026-08-03 15:00:38 +01:00
Mauro Romito 1407a1d5b4 implemented a11y for galleries 2026-08-03 14:33:12 +02:00
Mauro Romito 56d22104ad fix some bugs: 1. caption being displayed when blank 2. gallery should be tapped even when scanning fails 2026-08-03 11:32:28 +02:00
Mauro Romito bbc995e2c9 Fix for pagination getting stuck when swiping preview items 2026-08-03 10:12:45 +02:00
Doug 94cd9590b5 Allow clearing your own call status. (#5959)
* Allow clearing your own call status.

* Clarify the names of the SettingsScreenUserStatusRow.Mode cases.
2026-07-31 18:15:42 +01:00
Mauro Romito 3eb8075913 use fixed size 2026-07-31 15:14:39 +02:00
Mauro Romito e498271420 Revert "size fitting preview tests for the media events timeline"
This reverts commit 666eee86fa0f5da845268bfebcf0173162649de8.
2026-07-31 15:14:39 +02:00
Mauro Romito dbb14e0df4 size fitting preview tests for the media events timeline 2026-07-31 15:14:39 +02:00
Mauro Romito e32c534b89 pr suggestions 2026-07-31 15:14:39 +02:00
Mauro Romito b044764310 unified the filtering of the gallery items 2026-07-31 15:14:39 +02:00
Mauro Romito 68a277143a use the appropriate timeline kind (to be refactored) 2026-07-31 15:14:39 +02:00
Mauro Romito 5d47bb3c56 set gallery limit to 60 when the gallery ff is on 2026-07-31 10:28:43 +02:00