* Update kotlin
* Upgrade Metro and add new `@Origin` annotation
* Suppress warnings in overridden method as nothing else would work
* "Fix" quality warnings about reusing the same string literal
* Don't use `compat` version for `datetime` dependency
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
* When joining a call, wait for the `content_loaded` action
This ensures the widget won't be disposed when the user joins a call and loads the lobby screen for room calls
* Upgrade Rust SDK bindings to `v25.09.15`:
This contains important changes to the APIs used to build the EC widget.
* Use the new `intent` parameter correctly, by calculating locally its behaviour based on whether the room is a DM and there is an ongoing call or not.
Using just the `intent` parameter is our end goal, but sadly this is not fully supported by the current EC embedded `v0.15.0`, so we need to add a workaround using the `skipLobby` and `preload` parameters.
* Stop sending call notifications manually: the Element Call widget can now assume responsibility for sending them when you start a call.
* Upgrade SDK version to `v25.8.5`, fix API breaks
* Upgrade Element Call embedded to `v0.14.1`
* Fix tests and lint issues
* Add `RoomListEntriesDynamicFilterKind.NonSpace` to avoid displaying spaces in the room list
---------
Co-authored-by: Robin <robin@robin.town>
Display an error dialog muting the call when a bluetooth audio device is selected on Android 11 or lower, re-enable the audio once another device is used.
- Add onUrlLoaded callback to WebViewWidgetMessageInterceptor
- Add WebViewAudioManager component and use it instead of the AudioManager extension functions
- Enable controlling the audio devices in Element Call from the OS instead of automatically detecting them
- Simplify the window flags in ElementCallActivity
- Work around the issue where the default audio device wasn't using the right audio stream
- Add onAudioPlaybackStarted, use it to start the audio-device related logic
* Inject the session scope instead of the application scope where it's possible.
* Create AppCoroutineScope annotation to let developers explicitly choose the appropriate CoroutineScope when injecting one.
- Add `runCatchingExceptions` and `mapCatchingExceptions` to replace `runCatching` and `mapCatching`.
- Make `tryOrNull { ... }` catch only exceptions too.
- Apply the changes to the whole project.
- Add new Rust fakes for tests to handle the code that's now unblocked - previously it just threw an `UnsatisfiedLinkError` which we ignored.
- Add a new `detekt-rules` project with a `RunCatchingRule` to prevent `runCatching` and `mapCatching` usages.
* Make sure lambdaError() make the test fail in all circumstances.
* Fix existing errors on tests.
* Uniformize the way we are creating class under test.
* Cleanup
* Fix typo
* Fix failing test after rebase.