Commit graph

3868 commits

Author SHA1 Message Date
ganfra
c8c5b85cf1 change (room member moderation) : sync translations 2025-06-03 14:00:55 +02:00
ganfra
abc5547aa3 Merge branch 'develop' into feature/fga/user_moderation_bottomsheet 2025-06-03 10:46:12 +02:00
ganfra
07c007e491
Merge pull request #4799 from element-hq/renovate/org.matrix.rustcomponents-sdk-android-25.x
fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.5.29
2025-06-02 21:58:33 +02:00
ganfra
be2d83b4da dependencies (rust sdk) : replace RoomTombstone by SuccessorRoom 2025-06-02 20:33:34 +02:00
Jorge Martin Espinosa
e02053d85e
Make sure HeaderFooterPage can contents be scrolled (#4704)
Co-authored-by: ElementBot <android@element.io>
2025-06-02 14:28:46 +02:00
ElementBot
87c376cfb6
Sync Strings from Localazy (#4804)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2025-06-02 12:05:08 +02:00
Benoit Marty
2c96fb8871
Cleanup testImplementation dependencies (#4790) 2025-06-02 10:51:02 +02:00
ElementBot
e8f29a38bf
Sync Strings (#4775) 2025-05-30 08:47:39 +00:00
ganfra
091d41b09d Merge branch 'develop' into feature/fga/fix_left_room_membership_change 2025-05-27 22:08:17 +02:00
Benoit Marty
4572419ed2
Stronger lambda error (#4771)
* 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.
2025-05-27 15:32:09 +00:00
Benoit Marty
5b9da3c41b
Hide Element Call entry point if Element Call service is not available. (#4783)
* 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>
2025-05-27 16:31:05 +02:00
renovate[bot]
985b9e8c20
fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.5.26 (#4781)
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>
2025-05-27 11:29:40 +02:00
Jorge Martin Espinosa
f455085e08
Notification events resolving and rendering in batches (#4722)
- 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.
2025-05-26 17:10:20 +02:00
renovate[bot]
f0c9f8294a
fix(deps): update sqldelight to v2.1.0 (#4735)
* 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>
2025-05-26 14:58:57 +02:00
Benoit Marty
61075c7a9b
Update UnifiedPush library (#4358)
* 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>
2025-05-26 14:56:54 +02:00
Jorge Martin Espinosa
9b9d75aa5f
Add ActiveRoomsHolder to manage the active rooms for a session (#4758) 2025-05-26 11:03:55 +00:00
夜坂雅
630e1d19c0
fix: Ignore global proxy settings if system thinks there's none (#4744)
Otherwise a :0 proxy would break in Rust SDK.
2025-05-26 09:33:04 +02:00
Benoit Marty
b926f5f5dc
On boarding flow: add a screen to select account provider among a fixed list (#4769)
* 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>
2025-05-23 18:36:48 +02:00
ganfra
2e1eb900a4 Merge branch 'develop' into feature/fga/user_moderation_bottomsheet 2025-05-23 17:28:48 +02:00
ganfra
2b87281704 fix (left room membership) : use correct membership change and add test 2025-05-22 21:41:44 +02:00
ganfra
b1441e1afd change (member moderation) : sync strings 2025-05-21 18:30:45 +02:00
Benoit Marty
5a2aeac6b6
Add support for login link (#4752)
* 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>
2025-05-21 18:19:42 +02:00
renovate[bot]
b4de7b101f
fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.5.21 (#4759)
* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.5.21

* Fix API breaks

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2025-05-21 17:39:58 +02:00
Jorge Martin Espinosa
8e87bf2538
Use the right live timeline instance in RustRoomFactory (#4745) 2025-05-20 17:33:25 +02:00
Benoit Marty
8d115213cc
Reduce API of JoinedRoom, caller must use the Timeline API from liveTimeline instead. (#4731)
This removes lots of boilerplate code.
2025-05-20 09:07:43 +02:00
ElementBot
34e88f30ae
Sync Strings (#4739)
* Sync Strings from Localazy

* Sync strings again

---------

Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
Co-authored-by: Benoit Marty <benoit@matrix.org>
2025-05-19 08:17:02 +00:00
Benoit Marty
0817da9691
Fix issues on JoinedRoom / BaseRoom (#4724)
* 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.
2025-05-15 16:08:58 +00:00
Benoit Marty
38ad415ab5
Ensure the CI is marked as failed when Maestro test is failing (#4700)
* 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.
2025-05-15 17:14:41 +02:00
Benoit Marty
f1ca70fb9a
Check homeserver when login using qr code (#4708)
* Login with Qr code: check homeserver validity

* QrCode login, unauthorized homeserver: update copy.

* Update screenshots

* Add unit test on SdkQrCodeLoginData

* Remove default param value.

* Remember imageAnalysis

---------

Co-authored-by: ElementBot <android@element.io>
2025-05-15 14:08:05 +02:00
Jorge Martin Espinosa
9f39ad885b
Remove event cache feature flag (#4719) 2025-05-15 09:42:18 +02:00
ganfra
49b885579f
Merge pull request #4718 from element-hq/feature/fga/report_room_enabled_flow
Change (report room) : check if server supports the report room api
2025-05-14 17:25:17 +02:00
ganfra
a09cc8de97 change (member moderation) : branch moderation on timeline 2025-05-14 11:19:07 +02:00
ganfra
58d9b12ab3 change (member moderation) : extract in a separate module 2025-05-14 11:19:07 +02:00
ganfra
21f75db4bb change (report room) : use client.isReportRoomApiSupported instead of hardcoded value 2025-05-14 11:07:17 +02:00
renovate[bot]
9234de6b8e
fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.5.13 (#4716)
Adapt to SDK changes:
- Replace `RoomInfo.isTombstoned: Boolean` with `RoomInfo.tombstone: RoomTombstone?`.
- Add `loginHint` parameter to `Client.urlForOidc`.
- Remove `ClientBuilder.useEventCachePersistentStorage`, as it's not longer optional.
2025-05-13 16:29:34 +00:00
Benoit Marty
f6cbca4a82
Disable mutliple click (parallel or serial) on a room (#4683)
* Disable mutliple click (parallel or serial) on a room (Fixes #4619)

* Rename method from FirstThrottler

* Move check to the Compose and add unit test on it.
2025-05-13 14:12:19 +02:00
Jorge Martin Espinosa
c9ec26f87c
When transcoding a video fails, send it as a file (#4257)
- If the video can't be transcoded it will be uploaded as a file instead.
- If the video already has the right format and dimensions, don't transcode it.
- Update the dimensions to 720p max when enabling media compression and 1080p otherwise, matching Element X iOS.
2025-05-13 11:04:51 +00:00
Benoit Marty
0255111528
Improve audio focus management (#4707)
* Extract Audio focus management to its own modules.

* Request Audio focus when playing a voice message.

* Add missing dependency.
(and remove a duplicated one)

* Request Audio focus when playing a video/audio in the media viewer.

* Pause audio when audio focus is lost.

* Rename class

* Fix tests

* Fix detekt issue.

* Audio focus: let the system handle automatic ducking when playing media.

* Document and update API

* Remove useless space.
2025-05-13 09:54:58 +00:00
ElementBot
019327ef9b
Sync Strings from Localazy (#4703)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2025-05-12 09:56:19 +02:00
renovate[bot]
5ed2e92801
fix(deps): update lifecycle to v2.9.0 (#4693)
* fix(deps): update lifecycle to v2.9.0

* Remove unused code.

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benoit Marty <benoit@matrix.org>
2025-05-09 09:55:35 +00:00
Jorge Martin Espinosa
c39b480f82
Keep call notification ringing while a call is present in the room (#4634) 2025-05-09 11:38:43 +02:00
Benoit Marty
3391e7cc55
Update "Learn more" link (#4686)
* Update target link for "Learn more".

* Rename VerifySelfSession* to OutgoingVerification*

* Optimize import

* Refactor to avoid long line

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2025-05-09 11:10:30 +02:00
Benoit Marty
0beec202a5
Ensure that the Rust room is not closed while the driver needs it. (#4694) 2025-05-08 09:33:35 +02:00
renovate[bot]
5fb0fc0d50
fix(deps): update android.gradle.plugin to v8.10.0 (#4687)
* fix(deps): update android.gradle.plugin to v8.10.0

* Update lint version to 8.11.0-alpha09

* Fix lint false positive.

Error: Modifier factory functions must use the receiver Modifier instance [ModifierFactoryUnreferencedReceiver from androidx.compose.ui]

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benoit Marty <benoit@matrix.org>
2025-05-07 11:07:20 +02:00
Benoit Marty
c61ee59528
Improve the callback uri format and customization. (#4664)
* Remove unused SUPPORT_EMAIL_ADDRESS

* Improve the callback uri format and customization.

Use io.element.android for the scheme of Oidc redirection for Element X.
For nightly the scheme will be io.element.android.nightly
For debug the scheme will be  io.element.android.debug

Element Pro is using `io.element`
2025-05-05 17:46:17 +02:00
Jorge Martin Espinosa
1904c98c9a
Make sure any JoinedRustRoom is destroyed after use (#4678) 2025-05-05 16:09:07 +02:00
ElementBot
bfa05ece67
Sync Strings from Localazy (#4677)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2025-05-05 12:11:22 +02:00
renovate[bot]
8d1234281f
fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.4.30 (#4665)
* fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.4.30

* OidcConfiguration do not take a contact parameter anymore.

* Fix API break.

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Benoit Marty <benoit@matrix.org>
2025-05-02 12:33:19 +02:00
ganfra
0b83e66733
Feature : Report room (#4654)
* feature (report room) : introduce all presentation classes.

* feature (report room) : branch entry point in the room list

* refactor (matrix ui) : move some code from appnav to matrix ui

* feature (report room) : add api on room

* feature (report room) : adjust ui

* feature (report room) : branch api

* feature (decline invite and block) : move things around and introduce presentation classes

* feature (decline invite and block) : continue to move things

* feature (report room) : remove reference to "conversation" for now

* feature (report room) : add report room action to room detail screen

* feature (report room) : enabled button state

* feature (report room) : improve code and reuse

* feature (report room) : add feature flag

* feature (report room) : change feature flag to static bool

* feature (report room) : add tests

* feature (report room) : fix ui with new api on ListItem

* feature (report room) : clean up and add more tests.

* Update screenshots

* feature (report room) : more test and fix issue

* feature (report room) : update strings

* feature (report room) : fix konsist preview

* feature (report room) : disable feature

* Update screenshots

* var -> val

* Improve preview of AcceptDeclineInviteView

* Improve preview consistency

* Add missing test on DismissErrorAndHideContent

* Update screenshots

* Add missing tests

---------

Co-authored-by: ElementBot <android@element.io>
Co-authored-by: Benoit Marty <benoit@matrix.org>
2025-05-02 12:25:19 +02:00
Benoit Marty
e502eb1971
Render kick and ban reason in the timeline when available (#4642)
* Map the reason to RoomMembershipContent

* Create function to create RoomMembershipContent.

* Render reason for kick and ban state event.
2025-04-30 18:13:53 +02:00