`JoinedRoom` will now contain both a mandatory live timeline reference and all the functionality associated to it.
`BaseRoom` on the other hand will contain only functionality that's shared for both joined and not joined rooms.
`NotJoinedRoom` is a wrapper around `RoomPreviewInfo` data and a possible local `BaseRoom`, if it exists.
The `RustRoomFactory` cache is now gone since the persistent event cache should have the same effect.
* Sync Strings from Localazy
* Fix strings usage after some were moved
* Fix Norwegian string that was causing lint to fail
* Update screenshots
---------
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
* Ensure that we have only one single instance of SeenInviteStore per session. Fixes#4558
Fix crash:
java.lang.IllegalStateException: There are multiple DataStores active for the same file: /data/user/0/io.element.android.x/files/datastore/session_0ebb139587b6d940_seen-invites.preferences_pb. You should either maintain your DataStore as a singleton or confirm that there is no two DataStore's active on the same file (by confirming that the scope is cancelled).
* Inject the SeenInvitesStore to reduce boilerplate code.
* Remove condition on displayType as I believe, that it has no effect.
* Remove the green badge on a pending invite after a first preview
* Update screenshots
* Fix test
* Improve DefaultSeenInvitesStore, clear it on logout, and on clear cache. Also create a store per session.
* Remember the returned flow.
---------
Co-authored-by: ElementBot <android@element.io>
Some internal refactoring was done too:
- Remove RoomInfo.isPublic to only use JoinRule.
- Also take into account restricted access rooms for previews.
2 replace all actions have been performed:
- "SPDX-License-Identifier: AGPL-3.0-only" to "SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial"
- "Please see LICENSE in the repository root for full details." to "Please see LICENSE files in the repository root for full details."
* Bump Kotlin to v2.0
* Fix lots of issues due to the upgrade: lint issues, function signature incompatibilities, broken tests, etc.
---------
Co-authored-by: Benoit Marty <benoit@matrix.org>
* Add `InvitedRoom` to wrap Rust SDK Rooms in 'invited' membership state.
At the moment, this is a wrapper that allows us to call `Room.leave()` without having to initialise the room's timeline (which is impossible).
* Add `MatrixRoom.getInvitedRoom(roomId)` to get one of these rooms.
Also, `RustRoomFactory` now has a `createInvitedRoom` method for this.
* Adapt `AcceptDeclineInvitePresenter` to use the new APIs.
* Add centralised 'room is DM' check
Also add extension functions for `MatrixRoom` and `MatrixRoomInfo`.
* Use the centralised method and extension functions through the app, including:
- Room list.
- Room details screen.
- Invites.
- Notifications.
Replace most `isDirect` usages with `isDm`.
* Update screenshots
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
* Use ComposablePreviewScanner to rework how screenshot testing works
* Add test sharding
* Update screenshots
* Fixes for Element Gallery
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
Co-authored-by: Benoit Marty <benoit@matrix.org>