* Introduce PushHistoryService to store data about the received push
Add a push database.
* Update screenshots
* Improve preview.
* Update screenshots
* Add missing test.
* Add test for PushHistoryView
* Fix configuration issue.
Was: w: /libraries/troubleshoot/impl/src/test/kotlin/io/element/android/libraries/troubleshoot/impl/history/PushHistoryPresenterTest.kt:35:27 Cannot access class 'PushProvider' in the expression type. While it may work, this case indicates a configuration mistake and can lead to avoidable compilation errors, so it may be forbidden soon. Check your module classpath for missing or conflicting dependencies.
---------
Co-authored-by: ElementBot <android@element.io>
* fix(deps): update kotlin
* Fix deprecation warning
* Remove this workaround, it's not needed anymore, and was causing a compilation error:
* What went wrong:
A problem occurred configuring project ':libraries:session-storage:impl'.
> Failed to notify project evaluation listener.
> Element 'kspDebugKotlin' of type 'com.google.devtools.ksp.gradle.KspAATask_Decorated' from container 'task set' cannot be cast to 'org.jetbrains.kotlin.gradle.tasks.KotlinCompile'.
> Element 'kspReleaseKotlin' of type 'com.google.devtools.ksp.gradle.KspAATask_Decorated' from container 'task set' cannot be cast to 'org.jetbrains.kotlin.gradle.tasks.KotlinCompile'.
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benoit Marty <benoit@matrix.org>
* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.4.8
* Fix API breaks:
- Add `ReplyParameters` class and parameters to send functions.
- Remove outdated OIDC related values.
- Stop pre-processing the timeline to add the timeline start item, this is already done by the SDK.
* Use the new function to reply to messages in a quick reply from a notification, however:
1. We don't have the thread id value at the moment since the SDK does not provide it yet.
2. The replied to event id wasn't being passed from the notification info.
* Remove also timeline start virtual item for DMs, since this wasn't present before either
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
* Allow using a hardware keyboard to unlock the app using a pin code
* Add UI tests to `PinKeypad`
* Also take into account the numpad keys.
Extract this to an extension property in `ui-utils`. Made `ui-utils` also a compose-compatible library (vs `android-utils`, which doesn't have compose dependencies).
* Use badge color from Compound and remove temporary aliases
* Use color instead of a copy of it.
* Update screenshots
---------
Co-authored-by: ElementBot <android@element.io>
* Fix bullet points not having leading margin on timeline items
* Remove other usages of `SpannableString` constructor, use either `valueOf` to reuse the existing value or `SpannedString` instead if the spans don't have to change
* Add Konsist test to ensure that the result of a function returning a flow is remembered.
* Remember flows before they are collected by state.
* Fix compilation issue
* Make isOnline a val.
* Make selectedUsers() a val.
* Make flow() a val.
* Make getUserConsent(), didAskUserConsent() and getAnalyticsId() some val.
* Remove Timeline.paginationStatus() and replace by direct access to the underlined flow.
* Simplify test
* userConsentFlow must be initialized before because it's used in observeUserConsent
* Fix test compilation
* Let TextFieldListItem take the entire width.
* Add unit test to detect usage of OutlinedTextField.
* Use TextField instead of OutlinedTextField
* Remove unnecessary opt in to ExperimentalFoundationApi
* Use TextField instead of OutlinedTextField
* Fix compilation issue.
* Update screenshots
* ListDialog: add space between items.
* Update screenshots
* Set applyPaddingToContents to true by default.
* Update screenshots
---------
Co-authored-by: ElementBot <android@element.io>
* Make sure the live timeline is destroyed before clearing a room's cache
According to the SDK team, having a live timeline could lead to DB issues.
* Try to destroy all room and list item references when the `RustRoomFactory` is destroyed
It may also have some effect on DB corruption issues we've seen
* Make `RustMatrixClient.close` asynchronous
This is a safer way to destroy the Rust instances associated to it. Since `MatrixClient` doesn't implement `Closeable` anymore, the method has been renamed to `destroy` to follow the existing naming in the project.
* Add `WakeLock` to dismiss ringing call screen when call is cancelled
We had already some checks in place to automatically cancel a ringing call notification/screen when the call was no longer active, but the `RoomInfo` updates weren't being processed because the app was 'paused'.
The partial wakelock should ensure these room info updates are handled.
* Add mutual exclusion to `ActiveCallManager` methods to improve thread safety
* Extract TextFieldDialog to its own file (no other change).
* Add TextFieldDialogPreview
Enhance TextFieldDialog
* Let RoomMembersModerationView use TextFieldDialog
* Update screenshots
* Konsist.
* Add modifier parameter.
---------
Co-authored-by: ElementBot <android@element.io>
* Add confirmation dialog when kicking someone, ith ability to provide a reason.
Also add the reason for banning people.
* Fix padding issue in dialogs.
* Improve TextField in dialog.
* Update screenshots
* Fix tests
* Format and import
* Add missing UI tests.
* Use `needsConfirmation` as it's already used in the code base.
---------
Co-authored-by: ElementBot <android@element.io>
* For the user info in the timeline items, display the ripple effects according to the bounds and shape of the user avatar and display name
* Fix ripple in other screens too
* Use embedded version of Element Call: for in-app room calls, the app will use an embedded version of Element Call shipped with the app instead of using an external service.
* Remove `ElementCallBaseUrlProvider` so we don't use the Element well known file to get the base URL anymore
* Remove `ElementCallConfig.DEFAULT_BASE_URL` since it's not used anymore
* Restore the usage of the custom EC base URL in developer settings as the actual base URL, it present
* Add a way to customise the embedded EC analytic credentials
* Update CI to use the EC analytic credentials as secrets
* Improve the custom URL placeholder to include the `/room` suffix
* Warn when opening a suspicious link.
Upgrade RTE to 2.38.3
* Update screenshots
* Add tests on LinkPresenter and LinkView.
* Format file
---------
Co-authored-by: ElementBot <android@element.io>
* Let element enterprise configure the ids for maptiler service.
* Disable location sharing and location viewer is the service is not available.
* Fix compilation issue on connected test
* Do not allow to reload the map if the mapId is not available.
* Update screenshots
* Rename file.
* Better to inject a string provider here, so we can unit test DefaultLocationService.
---------
Co-authored-by: ElementBot <android@element.io>
* Make self verification screens scrollable
* Remove unused fields from `VerificationEmoji`
* Make only the header and content scroll in `HeaderFooterPage`.
* Use the right 'emoji' icon in both flows (`ReactionSolid`)
---------
Co-authored-by: ElementBot <android@element.io>
* Use close() instead of destroy, because close() is synchronized.
* Use new method to clear the SDK cache.
* Format file.
* Remove the legacy way to clear the SDK cache.
* Remove unused import
* revert name change
Breaking changes addressed:
* Make `MatrixClient.getNotificationSettings()` async, cache its result.
* Use `RoomInfo` for accessing the updated room's info.
* Refactor `MatrixRoom` so it always receives an initial `MatrixRoomInfo` value: this value will be used to make `MatrixRoom.roomInfoFlow` a `StateFlow` so we can assume the initial updated Room data will be present.
* Fetch encryption state when loading a room if it's unknown