Commit Graph

1373 Commits

Author SHA1 Message Date
renovate[bot]
89a6f5a7bf Update metro to v0.11.0 (#6245)
* Update metro to v0.11.0

* Fix `@AssistedInject` usages

Now the injected variables in the factories must match the names in the constructors

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2026-02-25 16:19:47 +01:00
Jorge Martin Espinosa
dc11430a73 Add some DB optimizations (#6249)
* Set a maximum journal size limit (WAL file size) of 25MB

The previous value was null, which meant unlimited growth. This can affect performance, since the WAL file performance as a cache will worsen the larger it is

* When scheduling the vacuum task, make sure the user has enough free disk storage, since vacuuming can duplicate the DB sizes in disk
2026-02-25 11:59:21 +00:00
Jorge Martin Espinosa
496595f20d Disable the cross-process lock in the SDK (#6231)
* Disable the cross-process lock in the SDK

We don't use multiple process as iOS does, so we don't need it. It should improve DB performance a bit and overall waste less resources.
2026-02-23 15:31:59 +00:00
renovate[bot]
1ce57d811e Update dependency org.matrix.rustcomponents:sdk-android to v26.02.19 (#6229)
* Update dependency org.matrix.rustcomponents:sdk-android to v26.02.19

* Fix breaking API changes: added `isLowPriority` to `RoomInfo` and `RoomSummary`.

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2026-02-20 09:01:07 +01:00
renovate[bot]
bc295b3c97 Update dependency org.matrix.rustcomponents:sdk-android to v26.2.16 (#6211)
* Update dependency org.matrix.rustcomponents:sdk-android to v26.2.16

* Fix log rotation breaking changes. The new values match iOS (https://github.com/element-hq/element-x-ios/pull/5108/)

* Fix `aRustRoomInfo()` test fixture

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2026-02-17 10:42:31 +01:00
Jorge Martin Espinosa
f6b8c189e1 When a background SDK task fails, react in the client (#6166)
- For initialization issues or errors, we just print and report them.
- For panics (unrecoverable errors) we also crash the app.
2026-02-10 12:28:24 +01:00
Benoit Marty
c18ac905c8 QRCode login: treat not found error as expired error.
Reorder some when cases.
2026-02-09 15:14:18 +01:00
renovate[bot]
82dd9a3f77 Update dependency org.matrix.rustcomponents:sdk-android to v26.2.6 (#6144)
* Update dependency org.matrix.rustcomponents:sdk-android to v26.2.5

* Fix breaking API changes:
- Add temporary imlementation for `RustClientSessionDelegate.onBackgroundTaskErrorReport`, logging unrecoverable errors in background tasks of the SDK.
- Change `TimelineEventTypeFilter` to `TimelineEventFilter`.
- Support new `LatestEventValue.RemoteInvite`.

* Update the Rust SDK to `26.2.6`

* Fix API changes: `TimelineFocus.PinnedEvents` no longer takes any arguments

* Fix test fixtures: `NotificationItem` has a `rawEvent` field now

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2026-02-06 12:40:03 +00:00
ganfra
d58f4a28f8 Merge pull request #6136 from element-hq/feature/fga/space_room_list_filter
Add Space Filters feature for Room List
2026-02-05 16:14:16 +01:00
Jorge Martin Espinosa
22e60bf3c6 When creating a DM, set room history visibility to invited (#6138) 2026-02-04 14:54:59 +00:00
Jorge Martin Espinosa
5175bacb5e Remove JoinRule.Private from the codebase (#6129)
It shouldn't be in use, since it was never properly defined:

- The `Private` values coming from the SDK are considered to be `Invite` instead.
- Remove any existing `JoinRule.Private` usages in our code.
2026-02-03 19:27:22 +01:00
ganfra
915aca9c1d Add room list filter combining based on space selection 2026-02-02 21:46:33 +01:00
ganfra
9d576394ac Spaces : expose new SpaceServiceFilter 2026-02-02 21:02:55 +01:00
ganfra
2132b65bf6 Spaces : some cleanup on SpaceService 2026-02-02 21:02:54 +01:00
Benoit Marty
53efcbe636 Merge pull request #6119 from element-hq/feature/bma/handleHttp429
Ensure http 429 are retried 3 times before failing.
2026-02-02 12:42:57 +01:00
ganfra
bb2e69c4ca Merge pull request #6117 from element-hq/feature/fga/room_list_filter_rust
Refactor room list filtering to use Rust SDK
2026-02-02 10:58:21 +01:00
Benoit Marty
9d8eec7ad1 Update comment 2026-02-02 10:45:39 +01:00
Benoit Marty
7d4243657c Ensure http 429 are retried 3 times before failing. 2026-01-30 15:43:00 +01:00
ganfra
9641d3ef4f Add tests and clean code after RoomList Filter rework 2026-01-30 15:33:51 +01:00
Jorge Martin Espinosa
63f24f0ae1 Add special flow for leaving a space as the last owner (#6112)
* When the user is in a v12 room, use different UI to select the last owner when leaving

- Add `LeaveSpaceRoom.areCreatorsPrivileged` to detect when this is happening.
- Import new strings.
- Build the new UI.
- Attach it to a change member roles screen navigation.

* Don't display the `isLastOwner` UI if the user is the only joined one in the room

* Rename `LeaveSpaceState.isLastOwner` to `.needsOwnerChange`. This way, it's easier to understand the difference with the passed `LeaveSpaceRoom.isLastOwner` value

* Add a test for the new check of user not being the last joined member

* Fix paddings in `LeaveSpaceView`

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2026-01-30 09:10:00 +00:00
ganfra
0824a3ab8b Refactor room list filtering to use Rust SDK 2026-01-29 22:08:12 +01:00
ganfra
48ec74c248 Clean up unused imports and improve code documentation 2026-01-27 18:43:38 +01:00
ganfra
1e25938ef7 Iterate on manage space rooms, but not happy with the reset method. 2026-01-27 18:43:38 +01:00
ganfra
33eb848c94 Add reset method to SpaceRoomList 2026-01-27 18:43:38 +01:00
renovate[bot]
692302df5c Update dependency org.matrix.rustcomponents:sdk-android to v26.1.27 (#6096)
* Update dependency org.matrix.rustcomponents:sdk-android to v26.1.27

* Fix breaking API changes: `LeaveSpaceRoom.isLastAdmin` is now `LeaveSpaceRoom.isLastOwner`.

* Rename `isLastAdmin` to `isLastOwner` in our codebase too.

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2026-01-27 15:02:55 +00:00
Jorge Martin Espinosa
0313fa56dd Create a new room in a space (#6061)
* Add `SpaceService.editableSpaces` and `SpaceService.addChildToSpace`

* Add `parentSpace` to `CreateRoomConfig`

* Allow setting a parent space to a room in `ConfigureRoomPresenter`, make sure the room is added to the parent space when creating it

* `ConfigureRoomPresenter`: Load the list of possible spaces a room can be added to

* Refactor `RoomVisibilityState` to internally use `JoinRuleItem`

This gets rid of `RoomAccess` and `RoomAccessItem`, and it will allow us to map the join rule items in a cleaner way to both join rules and the UI

* Implement the UI changes:

- Display the parent space.
- Allow selecting a new one.
- Import needed strings.

* Fix existing tests

* Add `@Immutable` annotation to `SpaceRoom`, since it was detected as unstable.

Maybe because of `RoomType`?

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2026-01-26 18:23:02 +01:00
Jorge Martin Espinosa
deb340daba Use MediaPreviewValue.Private to check if media should be displayed in notifications (#6038)
* Use `MediaPreviewValue.Private` to check if images should be displayed in notifications

Also added `NotificationData.roomJoinRule` so we can use it to check if the room is public or not

* Add logging message for cases when we should have an image uri it turns out we don't
2026-01-23 09:01:52 +00:00
ganfra
c3a469544e Add addChildToSpace method to SpaceService 2026-01-21 17:33:30 +01:00
ganfra
edba196a69 sdk : allow passing coroutineScope to RoomList 2026-01-21 16:48:22 +01:00
ganfra
1cbf7d9624 Merge pull request #6045 from element-hq/feature/fga/invite_people_suggestions
Add suggestions section to InvitePeopleView
2026-01-20 13:45:42 +01:00
ganfra
7be66061e2 Add suggestions section to InvitePeopleView 2026-01-20 10:09:49 +01:00
Jorge Martin Espinosa
ccd358ece5 Tweak the power levels when creating a space (#6012)
* Tweak the power levels when creating a space

* Also tweak the `invite` power levels for public access rooms
2026-01-19 10:54:33 +01:00
Jorge Martin Espinosa
666a5f4f74 The relatedTo field in RoomSendQueueUpdate.MediaUpload is a transaction id (#6002)
It was being incorrectly mapped to an event id.
2026-01-19 10:39:48 +01:00
Richard van der Hoff
ae76e8b0ea Display a badge for messages decrypted using shared keys (#6023)
The EXA side of element-hq/element-meta#2877: if the keys for a message have been forwarded by another user, indicate that in the UI via the text shown when tapping the event shield.
2026-01-16 17:24:18 +00:00
Jorge Martin Espinosa
98890f5365 Create AppMigration09 to remove the cached well-known config from the SDK (#6026)
This value was most likely was incorrectly cached due to a previous issue in the SDK
2026-01-16 16:03:49 +01:00
ganfra
d4e676fd5a Merge branch 'develop' into feature/fga/space_manage_rooms 2026-01-14 17:54:43 +01:00
ganfra
7b8e11c8cb Fix wrong param order for removeChildFromSpace 2026-01-14 15:27:06 +01:00
Jorge Martin Espinosa
28b63745f4 When a duplicate room list entry is found, report it and remove it (#6006)
* When a duplicate room list entry is found, report it and remove it

* Fix tests and fixtures

* Simplify how the updates are described in the Sentry reports
2026-01-14 10:56:45 +00:00
ganfra
78b4895254 Add manage mode to space view for removing child rooms, wip. 2026-01-13 22:08:48 +01:00
Jorge Martin Espinosa
03d14087e6 Create spaces (#5982)
* Allow creating a space with `CreateRoomParameters`

* Add 'Create space' menu item in the spaces home screen. Also, imports new strings related to spaces.

* Link the 'Create space' button with the screen to create the space

* Unify room access and visibility for `ConfigureRoom`, use the updated design

* Fix `EditRoomDetails` avatar size (68dp)

* Replace `EditableAvatarView` and `UnsavedAvatar` copmonents with `AvatarPickerView`

* `AvatarDataFetcherFactory`: Make sure we use a fallback image fetcher when the URL is not an MXC one (a local one, i.e.). This removes the previous need for a separate `UnsavedAvatarView`

* Use `AvatarPickerView` in all the screens where `EditableAvatarView` was used

* Improve naming and previews

* Update strings, remove unused ones for `RoomAccessItem`

* Make `isSpace` part of the `CreateRoomConfig`

* Ensure the content fits in the screenshots for `AvatarPickerSizesPreview`

* Add `AvatarDataFetcherFactoryTest`

* Add new feature flag for creating spaces

* Fix ripple being too large for the `Pick` state

* Tweak margins and section titles a bit

* Add preview for `HomeTopBar` with the spaces case

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2026-01-13 14:35:49 +01:00
ganfra
9a40a6404e Merge pull request #5979 from element-hq/feature/fga/space_members_access
Change Room’s Access to/from Space members
2026-01-12 10:48:44 +01:00
Jorge Martin Espinosa
c75ffc6af1 Remove previously used id filtering from RoomSyncSubscriber (#5985)
This is done in the SDK, doing it in the client was a source of issues.
2026-01-09 17:19:35 +01:00
ganfra
3c5d50860d Merge branch 'develop' into feature/fga/space_members_access 2026-01-08 13:46:02 +01:00
renovate[bot]
ac594b35d6 fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v26 (#5977)
* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v26

* Fix API breaks: `ShieldStateCode` is now `TimelineEventShieldStateCode`

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2026-01-07 17:29:18 +00:00
Jorge Martin Espinosa
71031008dd Adjust metrics to the new specifications (#5937)
* Add `AnalyticsTransactions` with a set of `TransactionDefinition` items matching those in the user story

* Use that for `AnalyticsLongRunningTransactions`, make sure we send the right fields (name, operation, description)

* Add `AnalyticsSendMessageWatcher` to track how long it takes for an event to be sent and for us to get a call back for that from sync

* Add `Noop` implementation for enterprise
2026-01-05 16:23:26 +01:00
Jorge Martin Espinosa
acdbec2de2 Use VerificationState.VERIFIED as soon as it's available (#5973)
This can't be a false positive like `VerificationState.UNKNOWN` or `VerificationState.UNVERIFIED`, so it makes sense to return it as fast as possible instead of waiting for the whole encryption layer to be fully loaded.
2026-01-05 15:06:00 +00:00
Benoit Marty
971bcbf0bf Ensure factorize follow the same code convention 2025-12-29 09:40:24 +01:00
ganfra
b59e36aabd space service : expose methods from sdk 2025-12-23 20:49:41 +01:00
Jorge Martín
293d41f122 RustSpaceService.joinedSpaces() now points to the FFI method SpaceService.topLevelJoinedSpaces() 2025-12-22 11:19:37 +01:00
Jorge Martín
cfa7d39966 Instantiate the now suspending innerClient.spaceService() RustMatrixClient with runBlocking for now 2025-12-22 11:19:37 +01:00