Commit Graph

35 Commits

Author SHA1 Message Date
Copilot c41a38159b Only offer joined rooms in the forward and share pickers (#6255)
* Initial plan

* Offer only joined rooms in destination pickers

Co-authored-by: Velin92 <34335419+Velin92@users.noreply.github.com>

* Clean whitespace in share picker test

Co-authored-by: Velin92 <34335419+Velin92@users.noreply.github.com>

* Restrict the shared picker room list to joined rooms

The alternate room summary provider, which backs the forward, share and
Add rooms pickers and global search, now always includes the SDK's
joined filter in its base filter. This replaces the per-call joinedOnly
flags, so Add rooms no longer offers invited rooms or spaces and no
screen can forget the flag.

A filter set before the provider has its room list is now applied once
the list is set, instead of being reset to the default. The share picker
hit this on a cold launch from the share extension.

The forward and share pickers also hide upgraded rooms, matching the
Suggestions section. The SDK has no filter for these.

Also registers the share picker's test file in the project, fixes the
blank-line indentation SwiftFormat flagged, and re-records the picker
snapshots without the upgraded room.

* Check room membership for forwarding suggestions and search breadcrumbs

RoomSummary now has isJoined, built from the room's membership. The
forwarding suggestions and the search breadcrumbs used a missing
joinRequestType to mean joined, which is also the case for rooms that
have been left or banned from. It only worked because the room list's
base filter already drops those.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Velin92 <34335419+Velin92@users.noreply.github.com>
Co-authored-by: Mauro Romito <mauro.romito@element.io>
2026-10-02 12:44:33 +00:00
Stefan Ceriu af202f3466 Add a joined only option to the room list search filter
The search filter now takes a joinedOnly flag, which appends the SDK's
joined filter so that invited and knocked rooms are excluded. It defaults
to false, leaving the existing callers unchanged.
2026-09-16 11:37:11 +03: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
Stefan Ceriu 0d581cdf86 Switch the ClientProxy's roomForIdentifier state publisher await to the staticRoomSummaryProvider, similar to the other methods. 2025-11-17 21:01:21 +02:00
Mauro f7dd9cdcf8 Update copyright holding and dates (#4640)
* Update copyright holding and dates

* compound IDE Macros updated

* update copyright

* update copyrights done

* update templates and README
2025-10-21 14:34:56 +02:00
Mauro 319441d527 Use a static room summary provider to resolve room summaries through id and aliases (#3863)
* trying to debug why sometimes the value

is missing even if it appears in the room list

* static room provider implementation

* set the page size through the init

* removed reset filters on .cancel

since using the sop function is safer
2025-03-04 14:08:15 +01:00
manuroe 3950cac085 Dual licensing: AGPL + Element Commercial (#3657)
* New LICENSE-COMMERCIAL file

* Apply dual licenses: AGPL + Element Commercial to file headers

* Update README with dual licensing
2025-01-06 11:27:37 +01:00
Stefan Ceriu 664e87fe87 Switch license to AGPL (#3237)
* Switch license file to AGPL

* Update file copyright headers

* Update the default project file header
2024-09-06 16:34:30 +03:00
Stefan Ceriu d71c8c4e83 Use local room list sorting from Rust. (#2978)
* Switch to the new local room list sorting API

* Get rid of the RoomSummary enum, replace it by the inner RoomSummaryDetails

* And finally, rename RoomSummaryDetails to RoomSummary

* Fix a bunch of warnings

* Small tidy up post rebase/review.

- Remove unused invalidated property.
- Rename some RoomSummary instances to summary instead of details.
- Fix tests with missing roomListItem's.

* Update snapshots

---------

Co-authored-by: Doug <douglase@element.io>
2024-07-05 10:10:53 +01:00
Stefan Ceriu a401976b2b Enable room list invites by default and remove old code paths 2024-05-09 19:01:57 +03:00
Mauro 7754b9b8dc Searching disables the filters (#2530) 2024-03-06 11:02:30 +01:00
Stefan Ceriu 932ba75550 Replace the existing RoomSummaryProviderMock with a generated one 2024-02-29 10:14:37 +02:00
Mauro 224e4e4881 Room List Filters implementation (#2423) 2024-02-08 16:50:44 +01:00
Stefan Ceriu dad6560ed4 Room list searching tweaks (#1800)
* Prevent the room list from flashing previous rooms when searching

* Remove reset diff chunking now that the whole list is limited

* Bump the Rust SDK to v1.1.19 and fix breaking API changes
2023-09-26 14:33:15 +03:00
Stefan Ceriu ff074e3fae Revert "Remove fuzzy searching entirely because of performance issues"
This reverts commit e86f65ad2d.
2023-08-21 17:22:18 +03:00
Stefan Ceriu e86f65ad2d Remove fuzzy searching entirely because of performance issues 2023-08-18 16:17:47 +03:00
Doug b2928a0dc6 Enable fuzzy search behind a feature flag. (#1490) 2023-08-14 16:41:41 +00:00
Stefan Ceriu c9d12122bf Revert "Adopt fuzzy searching through the RoomListService's dynamic filter" because of performance issues
This reverts commit e13e97400b.
2023-08-13 19:38:57 +03:00
Stefan Ceriu e13e97400b Adopt fuzzy searching through the RoomListService's dynamic filter 2023-08-12 09:47:09 +03:00
Alfonso Grillo 98dabe8500 Optimize invites list (part 2) (#1268)
* Optimise invites list

* Fix failing tests

* Cleanup

* Add weak self

* Refactor ReportContentViewModelTests
2023-07-11 08:08:27 +00:00
Stefan Ceriu 652fd3cf76 Room list service (#1138)
* Adopt the new RoomListService

* Use client.roomListWithEncryption

* Store the roomList so that it doesn't get dropped and create problems on the rust side

* Use roomListService instead of old roomList client method

* Added back documentation removed by mistake

* Tweaks following code review, SDK bump
2023-06-22 19:59:32 +03:00
Stefan Ceriu d120a53ebd Add back custom identifiers for invalidated room, avoid duplicates and gaps on the room list 2023-06-19 17:51:40 +03:00
Stefan Ceriu ef4346fa08 #1108 - Prevent invites from stealing away the roomList's state listener 2023-06-19 13:38:49 +03:00
Stefan Ceriu d2d626f724 Add support for the new RoomList API (#1092)
* Add support for the new RoomList API

Squashed commits:
[8c2625a] Re-enable invites
[339e59b5] Add automatic syncing restarts after entering the terminated state for whatever reason
[b5498e96] Reimplemented room list state management and usage
[8154b0cf] Fix visible rooms range setting after scrolling stops
[5155c44d] Hook up initial loading idicator and session verification banner to room list service states
[700a5a2e] Enable back room subscriptions, timeline listeners and unread notifications / counts
[9df383bc] Enable last messages and timestamps, they don't crash on release builds
[7c4da9da] Add back certain fields now that the "full room" is available
[9f6534a7] Adopt interfaces to new RoomList API, untested as requests don't go to the right URL

* Tweaks following code review

* Bump the RustSDK to v1.0.76-alpha
2023-06-16 16:11:45 +03:00
Flescio beb61d109f Flescio/create room action (#925)
* fix invites users screen

* add create room action

* add a task runner with timeout, add fetch room summary after creation

* rename Runner, add Unit Test, separate UserProfile form client proxy

* change to all room summary publisher
2023-05-22 15:27:39 +00:00
Alfonso Grillo 9fe69acd20 Remove CurrentValueSubject as protocol requirement (#807)
* Add CurrentValuePublisher

* Refactor to use CurrentValuePublisher

* Add comment
2023-04-18 10:52:08 +00:00
Doug 66651c0f34 Bump SDK version and fix breaking changes. (#709) 2023-03-20 19:26:07 +01:00
Stefan Ceriu ee4e4a212b #396 - Work around duplicated room list items and add error logs (#571) 2023-02-13 12:21:49 +00:00
Stefan Ceriu 8f3842f74a Dynamically adjusting the visibleRoomsView's timeline limit based on the app state 2023-01-31 20:59:08 +02:00
Stefan Ceriu b68002cbb4 Drop the entire sliding sync observer and updating rooms by identifiers now that we can request to be sent item updates 2023-01-26 15:03:23 +02:00
Stefan Ceriu 83e6ba8f6b Various sliding sync tweaks (#446)
* Refactor SS configuration and add (unfinished) support for adding views dynamically.

* Implement pop and clear support on the room summary provider

* Register views against sliding sync

* Read invalidated vislbeRoomsSummaryProvider from the allRoomSummaryProvider

* Switch SS window range setting from the ScrollViewAdapter to a publisher debounce

* Tweak allRoomsView addition: switch from listening the visibleRoomsView's state to when it publishes the first diff update

* Cleanup client delegate and sliding sync observers and lifecycle

* Bump the RustSDK to 1.0.30-alpha

* Reuse startSync within restartSync
2023-01-13 17:09:37 +02:00
Stefan Ceriu 3d1266ca25 Room list fixes (#431)
* Fixes #396 - Avoid duplicates in room list, cleanup logic throughout

* Re-enabled the allRoomsView with a hard 500 room limit and reduced the diffing collection time.

* Fixes #385, #411 - Filter out spaces, invites and tombstoned rooms from the room list

* Various tweaks following code review
2023-01-10 17:34:42 +02:00
Stefan Ceriu 00cd2ab707 Set visible ranges on the home screen sliding sync view (#342)
* Set visible ranges on the home screen sliding sync view
* Prevent the visible items from being updated while in search mode
* Enable diffs on invalidations as they seem to fix duplicated events in the home screen room list
* Promoted some diffing logs to info from verbose
2022-11-25 17:50:43 +02:00
Stefan Ceriu 867cce7b99 Implemented room list loading skeletons and placeholder rooms (#206) 2022-09-23 13:21:54 +03:00
Stefan Ceriu 5ebe923991 Sliding Sync + New Timeline API (#189)
* Begin adopting new Timeline API.

* Add edited indicator and reactions.

* vector-im/element-x-ios/issues/65 - Sliding sync support
* Fix missing room display name, wrong placeholder avatar text color and various other warnings that would fail the build on the CI

* Various tweaks:
* using release version of the demo branch of the sdk
* enabled home screen last room messages
* switched debug mode rust logging to warn
* enabled redactions
* enabled new logout flows and soft logout
* enabled replies

* Fix room member display name and avatar crashes / race condition, fix unit tests
* Make the ClientProxy and the UserSession MainActors
* Remove unused MatrixRustSDK imports, we should strive to keep these only in top level services and proxies
* Don't start either of the syncs while in soft logout

* #181: Style the session verification banner to match Figma.
* #181: Update verification modal.
* #181: Update snapshot tests.

* Make session verification state machine less pedantic
* Remove unnecessary weak selfs
* Various tweaks following code review:
* add start and stop sync client proxy methods
* move ss proxy url the build settings
* made media provider load results discardable
* added publishers for the roomSummaryProvider's total number of rooms and state

* Fix when sender details are shown
* Disable sync v2, causes duplicates in the timeline (as expected)
* Move ClientProxy media loading off the main queue and into a detached task
* Another attempt at moving image loading off the main queue
* Moved home screen diffing and latest room fetching to the background
* Prevent the timeline composer from becoming the first responder when not needed

* Bump to a newer version of the RustSDK

* Fixes vector-im/element-x-ios/issues/107 - New home screen design
* Implement thumbnail loading instead of full image avatars.
* Revert "Disable sync v2, causes duplicates in the timeline (as expected)"
* Add support for local echoes, dispatching detached tasks to a concurrenc GCD queue
* Move the session verification banner to a List Section to avoid UI glitches
* Optimise room mapping after sliding sync updates and thumbnail fetching
* Replace home screen List with a LazyVStack in an attempt to fix performance. Moved move summary provider room updating to a background thread

* Fixes vector-im/element-x-ios/issues/177 - New Bubbles Design
* Define in group state for timeline items
* Add replies into the bubble
* Add timeline width environment value
* Add `RoundedCorner` shape with specific corners rounding
* Add in group state for previews
* Implement bubble grouping logic
* Timeline avatar layout changes
* Fix placeholder avatars for dark mode
* New bubbles design
* Update mock timeline items
* Update timeline separator design
* Update room screen reference screenshots
* Add changelog
* Formatting fixes
* Add some space before single or beginning outgoing items

* Redesign the message composer

* Handle the msgtype enum.

* Update room name label line limit and incoming bubble background. Disabled syncv2, ss withCommonExtensions and session verification controller checking

* Increase default back pagination limit.
* Stop parsing links and tidy up composer button.
* Also fix the frame of an image whilst loading.
* Bump SDK package version.

* Remove app states about settings
* Add strings
* Use colors on placeholder avatars
* Tiny changes for placeholder avatars
* Update settings screen design
* Provide a user display name from the mock client
* Settings screen presentation logic
* Add changelog
* Update reference screenshots

Co-authored-by: Doug <douglase@element.io>
Co-authored-by: ismailgulek <ismailgulek@users.noreply.github.com>
Co-authored-by: ismailgulek <ismailg@matrix.org>
2022-09-21 09:21:58 +01:00