* Format
* Rename anvil modules to annotations and codegen
* Add documentation to migrate from Dagger/Anvil to Metro
* Other cleanup
* Cleanup kover config.
- Remove unnecessary `GlobalScope`.
- Rename `Component` to `Graph`, `DaggerComponentOwner` to `DependencyInjectionGraphOwner`.
- Rename component builders to factories, where necessary.
* Reload member list after moderation actions
The previous `runActionAndWaitForMembershipChange` logic wasn't really doing anything, as the modified flow was never used.
* Make sure we always set the value in the member list state flow, even if the underlying coroutine scope is no longer there.
With `emit`, the `Ready` state was not emitted if the member list was loaded way too fast.
* [a11y] Add content descriptions to room list item indicators. These can now be read aloud as 'ongoing call', 'new messages', 'new mentions'.
* Add `contentDescription` to `UnreadIndicatorAtom` as an optional value
* Make the 'ongoing call', 'new messages', etc. indicators be read aloud before the latest event of the room summary
---------
Co-authored-by: ElementBot <android@element.io>
* Add extra logs for sending media
We have some issues with stuck media uploads that could use some logs to understand where the process gets stuck.
* Fix mocks for test
* Allow replying to any remote message in a thread.
This will open the thread screen based on the selected event:
- If it was already part of a thread, it will open that thread.
- Otherwise, it'll open the thread timeline screen so you can start a thread from the event.
* Add the feature flag to decide which action to perform. Also, rename the feature flag to something easier to understand.
* Display the reply in thread action based on the feature flag too
---------
Co-authored-by: ElementBot <android@element.io>
* Handle preference stores corruption by clearing them:
- Use the centralised `PreferenceDataStoreFactory` instead of `preferences by`.
- Add `DefaultPreferencesCorruptionHandlerFactory.replaceWithEmpty` to its `create(name)` method so all preference stores are cleared if they're corrupted.
* Add detekt rule to make sure we use `PreferenceDataStoreFactory` instead of `by preferencesDataStore`
* Remove `@SingleIn` annotations as the annotated class no longer have to be singletons