* Use Timber instead of println
* Fix ReadReceipt not sent when new event is received:
- filter Virtual item regarding typing to compute NewEventState
- always scroll, since the latest event is always the typing notification (but with 0 height). This triggers the sending of RR.
* Improve the fix to fix regression detected by unit tests.
* Remove unnecessary parenthesis
* Document parameter.
* Fix typo
* Fix number of room member not correct for room invitation.
* Remove unneeded annotation
* Rename test classes.
* Add test about number of room members
Fix other tests.
* Avoid multiple request to get the room preview.
* Use ElementTheme.colors.bgCanvasDefault instead of MaterialTheme.colorScheme.background
Even if the value is the same, we should use color from ElementTheme.
* Remove background management of ElementCallActivity. It does not work as expected and also changing theme during a call would require to load the url again with the new theme.
* Do not use isSystemInDarkTheme() directly.
* Use bgSubtleSecondary for background color of Preview.
* Use default colors for Preview.
* Fix copy paste issue.
* Update screenshots
---------
Co-authored-by: ElementBot <android@element.io>
* Ensure that the image loader is set, else the IncomingCallActivity will not be able to render the avatar.
Fixes#4633
* Add background color to OnboardingBackground
Fixes#4629
* Trigger CI
* a11y: add Modifier to improve accessibility of ListItems.
Remove duplication of onChange. As per the documentation, it has to be used only if the behavior is different than the onClick listener of the list item.
It also has the effect to read twice the action when the screen reader is one. See https://github.com/element-hq/element-x-android/pull/4047#discussion_r1888136571 for more details
a11y: remove contentDescription on List item icon, else the text is read twice.
* Ensure that if the ListItem is not enabled, the trailing/leading content is also not enabled.
* Update screenshots
* Fix lint crash.
---------
Co-authored-by: ElementBot <android@element.io>
`JoinedRoom` will now contain both a mandatory live timeline reference and all the functionality associated to it.
`BaseRoom` on the other hand will contain only functionality that's shared for both joined and not joined rooms.
`NotJoinedRoom` is a wrapper around `RoomPreviewInfo` data and a possible local `BaseRoom`, if it exists.
The `RustRoomFactory` cache is now gone since the persistent event cache should have the same effect.
* Login: more logs.
* Login: map Oidc error to provide more information in the error dialog.
* Oidc: use the application name.
* Oidc: move configuration from OidcConfigurationProvider to OidcConfig and add some comments.
* Oidc: limit to only 1 contact in the configuration.
* Oidc: Move configuration to BuildConfig file.
* Remove unused const.
* Add missing test on Exception mapping
* Remove contacts from OidcConfiguration.
https://github.com/matrix-org/matrix-rust-sdk/pull/4958
* Fix ringing calls not being automatically canceled
This will keep the sync active while the user is screening an incoming call, allowing receiving a call cancellation event, which will terminate the incoming call ringing early.
* Add extra logs to help debugging ringing call issues.
* Fix settings entry point not available when there is no avatar on the account. Fixes#4599.
* Use Ktx extension `String.toUri()`
* Allow screen reader to focus on the user avatar to allow editing it.
* Fix import order
* Fix audio output selection.
* Ensure that Element Call audio output uses a new connected device, even during a call.
Also add a few logs.
* Extract functions.
* Add more log and protect from crash.
* Revert formatting change
* Update screenshots
---------
Co-authored-by: ElementBot <android@element.io>
* Make whole messages selectable and readable as a single unit when possible.
* Make most UI components not clickable when talkback is enabled.
* Make voice messages work with talkback too.
* Read grouped state events even if the events are collapsed.
* Move image and video item actions to the timeline item.
* Improve accessibility in the message context menu too
* Fix a11y issue on add attachment button.
* Add `contentDescription` to file icon so it's read aloud
---------
Co-authored-by: Benoit Marty <benoit@matrix.org>
* Sync Strings from Localazy
* Fix strings usage after some were moved
* Fix Norwegian string that was causing lint to fail
* Update screenshots
---------
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
* Ensure that we have only one single instance of SeenInviteStore per session. Fixes#4558
Fix crash:
java.lang.IllegalStateException: There are multiple DataStores active for the same file: /data/user/0/io.element.android.x/files/datastore/session_0ebb139587b6d940_seen-invites.preferences_pb. You should either maintain your DataStore as a singleton or confirm that there is no two DataStore's active on the same file (by confirming that the scope is cancelled).
* Inject the SeenInvitesStore to reduce boilerplate code.
* 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 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>
* Fix the share location URI
Use `ENGLISH` locale to make sure the coordinates are formatted using the right decimal separator.
Also, when no label parameter was added, the URI just centered the map on some coordinates, instead of adding a marker.
* 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).
* 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
* Remove condition on displayType as I believe, that it has no effect.
* Remove the green badge on a pending invite after a first preview
* Update screenshots
* Fix test
* Improve DefaultSeenInvitesStore, clear it on logout, and on clear cache. Also create a store per session.
* Remember the returned flow.
---------
Co-authored-by: ElementBot <android@element.io>
* 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
* 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