Commit Graph

2170 Commits

Author SHA1 Message Date
Mauro ae795df530 Allow previews in the timeline to include filtered galleries (#5943)
* remove the usage of the timeline kind override in favour of getting it properly from the timeline view model

* allow the previews to include gallery items filtered by the allowed types when started outside the gallery

sss

asa

* fix for actions not being forwarded to the timeline right

* pr suggestions
2026-07-30 13:49:22 +02:00
Mauro 704b3dbb29 Render replies to gallery items (#5942) 2026-07-29 16:28:46 +02:00
Mauro Romito 30bc4a06f2 fix for a crash when trying to download a media 2026-07-28 16:49:08 +02:00
Mauro Romito 7ea9aeb174 Open a full-screen preview when tapping a gallery item
Tapping a gallery tile/row opens the existing media preview scoped to that gallery's attachments, paging between them. Introduces a typed MediaPreviewItemID (replacing the stringly-typed preview identifier) and a gallery-scoped TimelineMediaPreviewDataSource; the tap routes through TimelineInteractionHandler/TimelineViewModel. Non-previewable (.other) items are skipped without shifting the tapped index.

Co-authored-by: svetoslav.mitov <svetoslav.mitov@sportinno.com>

just use id instead of previewID

removed horrible multiline ternary

pr suggestions

remove redundant code

remove empty caption display + gallery uses the appropriate media timeline actions
2026-07-28 16:49:08 +02:00
Mauro 4d7d61dae7 Render galleries with non-visual attachments as a list (#5932)
* Render galleries with non-visual attachments as a list

Adds GalleryListView (with GalleryDivider) for galleries containing a file or audio item, extracting the shared FileTypeIconView from FileRoomTimelineView. GalleryRoomTimelineView picks the list vs the grid via usesListLayout. Tapping to open the preview lands in a follow-up.

Co-authored-by: svetoslav.mitov <svetoslav.mitov@sportinno.com>

* pr suggestions

---------

Co-authored-by: svetoslav.mitov <svetoslav.mitov@sportinno.com>
2026-07-27 18:46:15 +02:00
Mauro 274da99787 Render image and video in galleries as a grid (#5929) 2026-07-24 18:47:39 +02:00
Doug 5d0343c480 Gate user status behind server support as well as the feature flag. (#5920) 2026-07-24 12:23:54 +00:00
Mauro Romito 4a9cd02fbc Add the gallery timeline item rendered as a placeholder
Introduces the GalleryRoomTimelineItem and its typed GalleryItem model (reusing the existing per-message content types), builds it in the RoomTimelineItemFactory and routes it through RoomTimelineItemView. For now it renders as a placeholder; the grid/list media views and the full-screen preview land in follow-up PRs.

Co-authored-by: svetoslav.mitov <svetoslav.mitov@sportinno.com>
2026-07-24 11:51:00 +02:00
Doug 3796fdc966 Fix call timeline item snapshots. (#5923)
* Fix call timeline item snapshots.

* Fix a warning and hard code the call timer during tests.
2026-07-23 14:42:44 +01:00
Doug d4849a2a79 Remove the requiresExtraAccountSetup badge. (#5921)
It is no longer part of the designs, we only badge the item in Settings.
2026-07-23 09:06:25 +01:00
Mauro 6967f99626 Content scanner also checks for thumbnails (#5911)
* scan also thumbnails for medias

* pr suggestion
2026-07-22 16:43:08 +02:00
Valere Fedronic 0f72fe3511 Add support for active call item rendering in timeline (#5775)
* feat(timeline): Add support for active call item rendering in timeline

* Update active call as per design (show raw count of members)

* fixup project files

* revert unexpected generated mocks change

* code review

* Record preview snapshots

* revert changes on project.yml

* post rebase fix
2026-07-22 15:13:46 +01:00
Doug 94313173f0 Add a warning to the Link New Device instructions. (#5916) 2026-07-22 14:56:49 +01:00
Doug b46189d05f Add support for showing the user's own status over their avatar on the app's Settings button. (#5912)
* Add a common .inverseMask view modifier and use a blend mode for efficiency.

This also fixes the snapshot rendering 🎉

* Add support for the status emoji on the app's Setting button.

* Align the room header decoration icons with the status emoji.

* Add missing snapshots.
2026-07-22 14:53:32 +01:00
Stefan Ceriu c0385ccdfa Change the first search tab name from Rooms to Chats (still untranslated for now) 2026-07-22 15:40:56 +03:00
Stefan Ceriu da6eca78f0 Debounce message search only and search the active tab lazily
The search screen previously ran both the room filter and the (slow) message
query on every keystroke regardless of which tab was active, so the fast room
results were held up behind message search.

Now only the active tab is searched, and the other tab is (re)searched when it
becomes active, but only if the query actually changed since it last ran,
tracked per-tab in searchedQueries. Room search reacts to every keystroke while
message search keeps the 250ms debounce, now applied inside the messages branch
of updateFilter rather than upstream of both.
2026-07-22 15:40:56 +03:00
Stefan Ceriu 4eb0863f3a Surface search set query errors with an error indicator 2026-07-22 15:40:56 +03:00
Doug 32a54c5b71 Hook up the emoji picker to the custom status row. (#5902)
* Refactor EmojiPickerScreen to take a continuation instead of a timeline/itemID.

* Hook up the emoji picker to the custom status row.
2026-07-22 13:35:37 +01:00
Doug a6466e80e0 Update the SDK and use RoomHero.status and subscribeToOwnProfile. (#5905)
* Update the SDK and hook up the status from Room Heroes.

Also start requesting profiles via sss when the feature flag is enabled.

* Add support for subscribing to your own profile.
2026-07-22 12:18:02 +01:00
Mauro 4f03acab0c Add signed in flag to the developer options screen hook (#5914)
add signed in flag to the developer options screen hook
2026-07-22 11:40:27 +02:00
Mauro b5b28b9986 Support sending gallery messages behind a feature flag (#5909)
dds sending of multi-media "gallery" messages, gated behind the new galleryEnabled developer option (Developer Options → Room, off by default). Rendering of received galleries ships in a separate PR.

Wires sendGallery through TimelineProxy/TimelineController onto the SDK's Timeline.sendGallery.
MediaUploadPreviewScreen sends selected items as one gallery when the flag is on.
Co-authored with the original author of #5601.

NOTE: This PR allows to send gallery messages, but they won't be rendered without the gallery timeline item PR.
2026-07-21 17:25:30 +02:00
Stefan Ceriu ea6475fa1e Fixed unused declaration warnings 2026-07-21 15:07:57 +03:00
Mauro Romito 5d1e15f308 Revert "Support sending gallery messages behind a feature flag"
This reverts commit 6a2ed331fa.
2026-07-21 12:44:03 +02:00
Mauro Romito 6a2ed331fa Support sending gallery messages behind a feature flag
Adds the ability to send a gallery message (multiple attachments in one message)
via the media upload preview, wired through the timeline controller/proxy to the
SDK's sendGallery. Gated by a `galleryEnabled` developer flag (default off),
matching Element X Android — with the flag off, attachments are sent as
individual messages as before.

Extends the community PR #5601, rebased onto develop. Tracking:
element-hq/element-meta#3201

Co-authored-by: svetoslav.mitov <svetoslav.mitov@sportinno.com>
2026-07-21 12:09:07 +02:00
Mauro Romito 762e5ad0ff Revert "Support sending gallery messages behind a feature flag"
This reverts commit 9a61d870d6.
2026-07-21 12:00:03 +02:00
Mauro Romito 9a61d870d6 Support sending gallery messages behind a feature flag
Adds the ability to send a gallery message (multiple attachments in one message)
via the media upload preview, wired through the timeline controller/proxy to the
SDK's sendGallery. Gated by a `galleryEnabled` developer flag (default off),
matching Element X Android — with the flag off, attachments are sent as
individual messages as before.

Extends the community PR #5601, rebased onto develop. Tracking:
element-hq/element-meta#3201

Co-authored-by: svetoslav.mitov <svetoslav.mitov@sportinno.com>
2026-07-21 11:34:44 +02:00
Mauro 9093631f8b Periphery cleanup (#5893) 2026-07-20 11:16:11 +02:00
Jürgen Wischer 99ba9eb235 Fix CI failures: SwiftFormat indentation and stale text field snapshot
Reformat two files to satisfy SwiftFormat's indent rule on blank lines
introduced by the accessibility fixes in this branch, and re-record the
compoundTextFieldStyle preview snapshots to match the new resting-state
border rendering on raised text fields.
2026-07-17 14:14:45 +02:00
Jürgen Wischer c4f38cf1b2 Use accessibilityValue(_:isEnabled:) instead of an empty-Text fallback
Avoids applying an empty accessibility value when there's only one
pinned item, per review feedback.
2026-07-17 14:14:45 +02:00
Jürgen Wischer 60cd7fd5cc Give the pinned items banner an explicit accessibility label and value
The view-all button drops its visible text to an empty string while
loading, relying only on a ProgressView for feedback, so VoiceOver
users focusing it while it loads hear an unlabelled button. The main
pinned-item button also has no accessibility label/value describing
which pinned item is shown or its position, since children: .contain
leaves that to implicit merging of its sub-views. Set an explicit
label on the view-all button so it always announces its title, and
give the main button an explicit label (the pinned message) and value
(its position, reusing the existing bannerIndicatorDescription/
screenRoomPinnedBannerIndicator strings) instead of relying on
container merging.
2026-07-17 14:14:45 +02:00
Jürgen Wischer 5f6729b737 Mark the room list as frequently-updating for VoiceOver 2026-07-17 14:14:45 +02:00
Jürgen Wischer ce78d1999e Label the avatar edit button on the own-profile edit screen 2026-07-17 14:14:45 +02:00
Jürgen Wischer 7f5876c079 Expose formatting toolbar buttons as toggle controls to VoiceOver 2026-07-17 14:14:45 +02:00
Jürgen Wischer 34c41cd527 Combine poll option elements and hide the redundant progress bar from VoiceOver 2026-07-17 14:14:45 +02:00
Jürgen Wischer 3d84c611ae Combine the poll winner icon and vote count into one accessibility element 2026-07-17 14:14:45 +02:00
Jürgen Wischer 5e381e17ea Mark the onboarding start screen title as an accessibility header 2026-07-17 14:14:45 +02:00
Doug a0ec5ed9dd Add the UI for your own user status in the Settings screen. (#5888)
* Show the user's own Status emoji on the SettingsScreen.

* Add the UI for setting your own status.

* Add placeholder action for selecting a custom emoji and fix some accessibility issues.
2026-07-17 12:21:51 +01:00
Mauro Romito b730815842 disable creation and enabling of e2ee if remote preference for disabling it is true 2026-07-13 15:51:13 +02:00
Timo 3ba5c08c13 Use dark theme for Element Call (#5860)
* Use dark theme for element Call

* Make sure only the call screen is shown in dark mode.

Otherwise when you go into PiP the entire app has become dark.

---------

Co-authored-by: Doug <douglase@element.io>
2026-07-13 13:28:28 +01:00
Doug 6635113f0b Fix a spacing issue. 2026-07-10 17:59:42 +01:00
Doug 23b3fc62cb Show user statuses in the rooms list. 2026-07-10 17:59:42 +01:00
Doug 7b1333c9b8 Show user statuses in the room members list. 2026-07-10 17:59:42 +01:00
Doug e80717f63d Show user statuses in mention suggestions. 2026-07-10 17:59:42 +01:00
Doug 6199ab596f Show user statuses in mention pills. 2026-07-10 17:59:42 +01:00
Doug 01b946926f Show user statuses in the DM room header. 2026-07-10 17:59:42 +01:00
Doug 64908ae642 Show user statuses in the timeline. 2026-07-10 17:59:42 +01:00
Doug bbe6931906 Show user statuses in AvatarHeaderView.
Also tweaks the layout to more closely match Figma.
2026-07-10 17:59:42 +01:00
Mauro 6bd8423675 Media Preview content scanning (#5851)
* implemented checkSourceSafetyIfNeeded in the timeline media preview

* added a subtitle to the spinner when scanning and an animated drag gesture for the error and loading states

* pr suggestions

* pr suggestions part 2
2026-07-09 18:46:14 +02:00
Mauro ee89f8846f Fix for the media browser showing also images and videos in file mode (#5853)
* fix for the bug that makes the images appear in the file list of the media browser

* pr suggestions
2026-07-09 15:51:46 +02:00
Mauro 5fd4551099 Scanning states for the media events timeline screen (#5847)
* implemented the scanning states for the media events timeline screen

* add mock urls to the URL.mock...
2026-07-08 11:51:56 +02:00