- 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.
* Remove not helping warning.
* Add and improve tests
* Send the `m.fully_read` read marker when the user navigates back to the room list, to mark the room as read.
- 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.
* fix(deps): update dependency androidx.compose:compose-bom to v2025.04.01
* Fix autofill deprecations
* Adapt our custom BottomSheetState and scaffold to the new APIs
* Get rid of all the custom bottom sheet implementation
It doesn't seem to be needed anymore 🎉
* Replace `semantics { invisibleToUser() }` with `hideFromAccessibility()`
* Update screenshots
* Add commit and cancel callbacks for autofill on the login view
* Fix broken tests caused mainly by https://issuetracker.google.com/issues/366255137
Add `LocalUiTestMode` composition local and helper functions.
* Remove dependency that caused a new license to need to be approved
* Let setSafeContent handle setting the value for LocalUiTestMode
* Fix broken test
* Apply fix to RoomMemberModerationViewTest and RoomListDeclineInviteMenuTest
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
Co-authored-by: ElementBot <android@element.io>
Co-authored-by: Benoit Marty <benoit@matrix.org>
* 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.
* Hide Element Call entry point if Element Call service is not available.
* No need to preview the case RoomCallState.Unavailable
* Hide start call action from user profile if Element Call is not available.
* Add mising `use` and cover the problem by a test.
* Update screenshots
* Update enterprise submodule ref.
* Ensure `enterpriseService.isElementCallAvailable()` is not called several times.
And fix unit tests on CI
---------
Co-authored-by: ElementBot <android@element.io>
Adapt SDK changes:
- `RoomListItem` is gone, we should use `Room` now.
- `SyncService.withUtdHook` has been replaced with `Client.setUtdDelegate`.
- `ClientDelegate.didRefreshTokens` has been removed. It wasn't in use since a long time ago.
- `TracingConfiguration` for the SDK now contains a `sentryDsn` parameter.
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
- Use `NotiticationService.getNotifications()` function so we resolve the events in bulk.
- Added `NotifierResolverQueue` to group the notifications to resolve based on a debounce strategy.
- Batch rendering of these events as notifications.
* fix(deps): update sqldelight to v2.1.0
* Ignore new returned value from database query which know have type QueryResult<Long>.
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benoit Marty <benoit@matrix.org>
* Upgrade `com.github.UnifiedPush:android-connector` from 2.4.0 to 3.0.4
* Do not use jitpack to get the unified push library
* implementation is ok
* Exclude com.google.crypto.tink to fix a compilation issue
* Fix tests.
* Update log.
* Revert "Exclude com.google.crypto.tink to fix a compilation issue"
This reverts commit f431ebe3b78a06282e0ee74c9f428702d463df45.
* Fix compilation issue after rebase.
* Exclude com.google.crypto.tink again.
* Try version 3.0.8
* Use latest version 3.0.9
* Replace tink exclusion with dependency resolution
---------
Co-authored-by: Jorge Martín <jorgem@element.io>
* Hide login with QrCode when the app is opened by a link
* Fix UI on ChangeAccountProviderView.
* Add flow to choose between a fixed list of account provider
* Update screenshots
* Fix licence header
* Rename preview.
* Ensure that the default account provider cannot be "*"
This should not happen IRL, but better be robust against issue in application configuration.
* Create const of any account provider value
* Fix typo
---------
Co-authored-by: ElementBot <android@element.io>
* Add support for login link
https://mobile.element.io/element?account_provider=example.org&login_hint=mxid:@alice:example.org
* Update screenshots
* Reduce code duplication
* Add test on OnBoardingPresenter
* Fix tool
* Ignore login parameter if user is not allowed to connect to the provided server.
* Improve tests.
* Cleanup
* Revert change on Project.xml.
* Add documentation
* Improve LoginHelper
* Rename LoginFlow to LoginMode
Move LoginFlow to package io.element.android.features.login.impl.login
Rename some implementation of LoginMode
Rename LoginFlowView to LoginModeView
* Change launchMode of MainActivity from `singleTop` to `singleTask`
Using launchMode singleTask to avoid multiple instances of the Activity when the app is already open. This is important for incoming share and for opening the application from a mobile.element.io link.
Closes#4074
---------
Co-authored-by: ElementBot <android@element.io>
* Import type
* Add test to cover an existing issue. roomCoroutineScope is not cancelled when the class is destroyed
* Cancel roomCoroutineScope when the class is destroyed
* Move `isOneToOne` to BaseRoom, we do not need a JoinedRoom for it.
* Let `roomInfoFlow` be implemented by RustBaseRoom.
It should fix a few issues where we rely on the room info to be live, and it was not the case on RustBaseRoom.
* Add more assertions.
The test would fail anyway if roomCoroutineScope was still active, but it's more explicit with these assertions.
* Ensure the CI is marked as failed when Maestro test is failing
* Fix typo in String to disable bookmark in ChromeCustomTab
* Fix Maestro test now that matrix.org is using MAS to authenticate.
* Fix Maestro test - other issues due to recent changes.
* Maestro: add test on Element Call
* Run through Chrome on boarding step.
* Try suggestion from https://github.com/mobile-dev-inc/Maestro/issues/1126#issuecomment-2842220361
* Revert "Try suggestion from https://github.com/mobile-dev-inc/Maestro/issues/1126#issuecomment-2842220361"
This reverts commit d400644622c1a240deb61040f9095e3221e07f21.
* Add comment on Maestro flow.