* Integrate Element Call with widget API.
- Add `appconfig` module and extract constants that can be overridden in forks there.
- Add an Element Call feature flag, disabled by default.
- Refactor the whole `ElementCallActivity`, move most logic out of it.
- Integrate with the Rust Widget Driver API (note the Rust SDK version used in this PR lacks some needed changes to make the calls actually work).
- Handle calls differently based on `CallType`.
- Add UI to create/join a call.
---------
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
DI infrastructure to allow injection of presenters into the timeline.
Add an `@AssistedFactory` of type `TimelineItemPresenterFactory` to a `Presenter` class and bind this factory into the TimelineItemPresenterFactory map multi binding using:
```
@Binds@IntoMap
@TimelineItemEventContentKey(MyTimelineItemContent::class)
```
A map multibinding of such factories will be available in the `LocalTimelineItemPresenterFactories` composition local for further use down the UI tree.
## Type of change
- [ ] Feature
- [ ] Bugfix
- [x] Technical
- [ ] Other :
## Content
Dagger now provides the app's `cacheDir` when requesting a `@CacheDirectory File` type.
## Motivation and context
To support some upcoming code that needs the `cacheDir` to be changed during tests.
`TimelineItemAudioContent`:
- Use `java.time.Duration` instead of milliseconds. This will ease up things in the future because currently milliseconds are sent over the wire but in the future seconds will be sent (as per the stable MSC). Using `Duration` will allow our downstream code to be independent of what's passed over the wire.
- Rename `audioSource` property to `mediaSource` to better match its type.
`AudioMessageType`:
- Add and populate new fields `details` and `isVoiceMessage` to be used by voice messages.
## Type of change
- [ ] Feature
- [ ] Bugfix
- [x] Technical
- [ ] Other :
## Content
Includes the `coreLibraryDesugaring(libs.android.desugar)` dependency in all modules which use one of our gradle plugins.
## Motivation and context
Right now desugaring is enabled also in library modules but the desugar dependency is not included in those.
This causes some unwanted side effects such as being unable to run compose previews in an emu.
This change will also include the desugar dependency in those libraries.