* Fix crash about several DataStores using the same file
- Create `@SessionCoroutineScope` annotation to pass a session-managed coroutine scope to the DI.
- Expose this scope from `MatrixClient`.
- Rework DataStore file creation a bit.
- Centralise session preference creation through `DefaultSessionPreferencesStoreFactory` until we figure out what went wrong with the scoping
* Add 'send private read receipts' option in advanced settings
* Create `SessionPreferencesStore` that stores the settings for the current use separate from those of the app.
* Rename `PreferencesStore` to `AppPreferencesStore` to split the preferences.
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
* Use cached users from the Rust SDK.
Also lazy load received users by batches.
* Create `RoomMemberListFetcher` to wrap all the room member loading logic
* Ensure we clear `RoomMember` Rust references if the fetching coroutine is canceled
The test is failing on CI with this error:
expected instance of: io.element.android.libraries.architecture.Async$Success
but was instance of : io.element.android.libraries.architecture.Async$Loading
with value : Loading(prevData=null)
* Add warning message to 'mentions and keywords only'
It should be displayed when it's not supported by the homeserver
* Only display disclaimer in the room notification settings if the room is encrypted
Co-authored-by: Benoit Marty <benoit@matrix.org>
* Fix test and add another one
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
Co-authored-by: Benoit Marty <benoit@matrix.org>
* Set a default power level to join calls.
Also, create new rooms taking this power level into account.
* Modify test to make sure we display the disabled state even when there is an ongoing call
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
* Try to make all collections used in Compose code immutable.
Mark sealed interfaces as `@Immutable` too
* Add gradle code to check the compose compiler reports
* Fix some more unstable classes