Commit Graph

4119 Commits

Author SHA1 Message Date
Jorge Martin Espinosa 516c3cfda3 Provide calculated server names when opening a room from another (#5155)
* Provide calculated server names when opening a room from another, based on the most frequently used domain names in the user ids for the users in the room.

This helps when following permalinks or navigating to the successor room of a tombstoned one. Previously, the `/summary` endpoint was failing because no server names were used in the `via` parameters.
2025-08-12 15:17:46 +00:00
Jorge Martin Espinosa e0bc4843a2 Fix leaving the room not always dismissing the room screen (#5089)
* Fix leaving the room not always dismissing the room screen

Use the existing `RoomInfo` membership check to dismiss the room instead of using `RoomMembershipObserver`.

* Restore `membershipObserver`, check Maestro still works

* Improve the logic for the local membership change check

* Remove redundant room id check
2025-08-12 10:37:31 +00:00
Benoit Marty 216ba060b4 Merge branch 'develop' into feature/bma/rageshakeConfigStep2 2025-08-11 17:35:06 +02:00
Jorge Martin Espinosa adc61b3826 Add media file limit size warning and media quality selection (#5131)
* Add `VideoCompressorPreset` enum

This represents the different compression presets used for processing videos before uploading them

* Add `VideoCompressorHelper` util class to calculate the scaled output size of the video given an input size and its optimal bitrate

Also add `MediaOptimizationConfig` which will be used to decide how to apply compression in `MediaPreProcessor`

* Add `RustMatrixClient.getMaxFileUploadSize()` function and `MaxUploadSizeProvider` so we can import only this functionality into other components

* Try preloading the max file upload size the first time we get network connectivity - it's a best effort

This should help ensure we'll have this value available later, even if we still need to load it asynchronously.

* Split the `compressMedia` preference into `compressImages` and `compressMediaPreset`

* Modify the media processing parts to use the new classes and utils

* Add `MediaOptimizationSelectorPresenter`, which will retrieve the compression values and the max file upload size, also estimating the compressed video file sizes if needed.

* Add a feature flag to allow selecting the media upload quality per upload

* Integrate the previous changes with the attachments preview screen

Add strings from localazy too.

* Adapt the rest of the app calls to upload media to using the media optimization configs

* Allow modifying the default compression values in advanced settings, based on the feature flag value

* Pass the `fileSize` in `MediaUploadInfo` too, to be able to check it against the `maxUploadSize`

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2025-08-11 17:22:46 +02:00
Benoit Marty 84130da367 Code cleanup 2025-08-11 14:53:40 +02:00
ElementBot 4b12c3f805 Sync Strings (#5146)
* Sync Strings from Localazy

* Remove unused WelcomeView.

* Remove unused WelcomeView.

---------

Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
Co-authored-by: Benoit Marty <benoit@matrix.org>
2025-08-11 12:49:29 +00:00
Benoit Marty e35eebf084 Add unit test on DefaultSessionWellknownRetriever 2025-08-11 12:13:21 +02:00
Benoit Marty bac59f6caa Merge 2 mapCatchingExceptions into a single one. 2025-08-11 10:55:42 +02:00
Benoit Marty d277a604bb Inject the Json parser 2025-08-11 10:49:39 +02:00
Benoit Marty df0bd3583d Remove duplicated licence header 2025-08-11 10:38:51 +02:00
Benoit Marty 275c5b41c5 Fix compilation issue 2025-08-08 18:08:30 +02:00
Benoit Marty d9b274b6cf Let enterprise build be able to override (or disable) the bug report URL. 2025-08-08 17:23:39 +02:00
Benoit Marty d292a52f63 Introduce SessionWellknownRetriever and implementation that uses a MatrixClient. 2025-08-08 15:06:51 +02:00
Benoit Marty db64ce3142 Extract code to retrieve .well-known files to its own modules. 2025-08-08 12:36:48 +02:00
Jorge Martin Espinosa 2a50b9ab8d When mapping invalid notification event, only drop that one (#5137)
Previously, this meant the code processing the whole notification batch result failed and other notifications would be lost too.
2025-08-08 11:56:15 +02:00
Benoit Marty 1afcce2b97 Merge pull request #5126 from element-hq/feature/bma/redirectToElementPro
Redirect FOSS user to Element Pro according to element .well-known file
2025-08-08 09:38:59 +02:00
Benoit Marty 8a163fc7d2 Merge pull request #5132 from element-hq/feature/bma/rageshakeConfig
Let enterprise build store the logs in a dedicated subfolder
2025-08-07 16:35:00 +02:00
Benoit Marty a8ba4751ed Fix tests 2025-08-07 12:19:26 +02:00
Benoit Marty 18c325560b Store log files in subfolder based on the homeserver domain. 2025-08-07 11:31:05 +02:00
Benoit Marty 122aeb1d03 Merge pull request #5120 from element-hq/feature/bma/a11y/contextMenuKeyboard
[a11y] Open context menu with the keyboard
2025-08-06 14:50:12 +02:00
Benoit Marty 89ef890a7c Prevent users from using Element FOSS on homeservers that enforce the usage of Element Pro. 2025-08-06 10:23:16 +02:00
Benoit Marty be82c6e257 Rename extension. 2025-08-05 21:11:19 +02:00
Jorge Martin Espinosa 1a335698c0 Force last owner of a room to pass ownership when leaving (#5094)
* Move `ChangeRoles*` classes to their own module so they can be shared

* Hook the change roles screen to the leave room action, add confirmation dialogs

* Use enum instead of sealed interface for `ChangeRoomMemberRolesListType`

* Try to improve communications between nodes

* refactor (leave room) : makes sure to expose only necessary code from api module

* Add `:libraries:previewutils` module to share some test fixtures used for UI previews

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
Co-authored-by: ganfra <francoisg@matrix.org>
2025-08-05 17:24:14 +02:00
Jorge Martin Espinosa dff295eadf Delegate call notifications to Element Call, upgrade SDK and EC embedded (#5119)
* 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>
2025-08-05 15:14:51 +00:00
Benoit Marty d988ae3082 [a11y] Let keyboard shortcut Shift + F10 trigger the same action than a long click 2025-08-05 09:41:08 +02:00
Benoit Marty e1744e5b4e [a11y] Ensure external keyboard Esc key closes any bottom sheet. 2025-08-04 16:29:50 +02:00
Benoit Marty bfdcc97985 Merge pull request #5112 from element-hq/sync-localazy
Sync Strings
2025-08-04 16:01:40 +02:00
Benoit Marty bdcafde2ce Sync string again 2025-08-04 14:50:08 +02:00
renovate[bot] a17c84568c Update media3 to v1.8.0 (#5101)
* Update media3 to v1.8.0

* Fix breaking API changes

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2025-08-04 10:26:15 +02:00
bmarty ee77c646eb Sync Strings from Localazy 2025-08-04 00:34:11 +00:00
ganfra 1f9ca4b141 misc : re-enable share pos by default 2025-08-01 10:31:20 +02:00
ganfra f6ea7a620b feature (media send queue) : enable send queue by default and hide from dev settings 2025-07-30 22:09:16 +02:00
Jorge Martin Espinosa 51f67741ae Adapt 'change roles' screens to the new creator/owner role (#5076)
* Replace `RoomMember.Role.CREATOR` with `RoomMember.Role.Owner` - Make `RoomMember.Role` a sealed interface instead

* Adapt room member role mapping to include the power level to distinguish between admins and owners

* Use new `RoomMember.Role` sealed interface through the app

* Change how `MembersByRole` groups members to add owners to the admins section

* Adapt the `ChangeRoles` screen to the new roles:
    - Owners can't modify other owner's roles.
    - They can modify the roles of any other user, without confirmation.

* Adapt 'roles and permissions' screen:
    - Owners can't demote themselves.
    - The admin count also counts owners.

* Add more tests and screenshots

* Add owners to its own section in the 'change roles' screen

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2025-07-29 14:07:16 +00:00
Jorge Martin Espinosa 4534229e84 Fix crash when trying to get active notifications (#5085)
Sometimes something goes wrong when unmarshalling them
2025-07-29 15:40:58 +02:00
renovate[bot] 6017379ecc Update dependency org.matrix.rustcomponents:sdk-android to v25.7.28 (#5088)
* Update dependency org.matrix.rustcomponents:sdk-android to v25.7.28

* Adapt to SDK changes

* Remove Sonatype repos: use Maven Central instead

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2025-07-29 11:45:52 +02:00
bmarty 0fb0861bc1 Sync Strings from Localazy 2025-07-28 00:33:43 +00:00
Jorge Martin Espinosa afa01e926b Make sure we display errors when we create a recovery key and it fails (#5079)
* Make sure we display errors when we create a recovery key and it fails

* Add another preview for the error state

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2025-07-25 13:36:43 +02:00
renovate[bot] 040fde7f22 Update dependency org.matrix.rustcomponents:sdk-android to v25.7.23 (#5073)
* Update dependency org.matrix.rustcomponents:sdk-android to v25.7.23

* Adapt to SDK changes:

- Add 'creator' role, adapt existing logic to it.
- Remove `ReplyParameters`, replace with `EventId` where possible.
- Fix changes in OIDC auth methods.
- Add more join rules.

* Make sure both creators and users with power level >= 150 are displayed as 'owners' in the room member list.

* Don't close the roles and permissions screen if the user is a creator

* Use `MediaPreviewValue.DEFAULT` for `MediaPreviewConfig.DEFAULT` too

* Improve APIs around checking roles and power levels:
    - Ensure `RoomInfo.RoomPowerLevels.users` can't be directly used to check power levels since it can't check the power levels for creators.
    - Add a few helper functions to handle actions that relied on the previous `users` property, and docs to explain their usages.

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2025-07-24 11:58:30 +02:00
Jorge Martin Espinosa 33aa7a914f Calculate video output size taking into account portrait mode (#5068) 2025-07-23 14:19:08 +02:00
Jorge Martin Espinosa 7c982a30cb Add fallback notifications from UTDs to the push history (#5047) 2025-07-23 08:55:41 +02:00
Jorge Martin Espinosa d53457ec66 Make sure we clean up the pre-processed and uploaded media (#5039)
* Add `MediaSender.cleanUp()` and `MediaPreProcessor.cleanUp()` methods: this will remove the temporary files created when pre-processing media before sending them.

* Make sure we clean up also the previous temporary media.

* Fix the condition for the custom back handler in the attachments preview screen

* Tests: check the clean up is performed when needed
2025-07-23 08:55:20 +02:00
ganfra 9f11884ddd Merge pull request #5054 from element-hq/sync-localazy
Sync Strings
2025-07-22 21:13:30 +02:00
bmarty 8ffbfd82e8 Sync Strings from Localazy 2025-07-22 20:46:13 +02:00
ganfra 5d097022b8 Merge pull request #5061 from element-hq/renovate/com.google.firebase-firebase-bom-34.x
Update dependency com.google.firebase:firebase-bom to v34
2025-07-22 18:51:38 +02:00
ganfra 1fe347ff1b deps (firebase) : bom >= 34.0.0 doesn't have ktx module anymore 2025-07-22 18:23:42 +02:00
Jorge Martin Espinosa 399c52bf1d Remove the scaling added in Player.Listener.onVideoSizeChanged (#5055) 2025-07-22 16:06:49 +02:00
Jorge Martin Espinosa 760ff51061 Fix toPlainText where <ol start='n'> tags appear (#5044) 2025-07-18 13:23:26 +02:00
ganfra d92a089553 misc (room id) : relax room id regex pattern to match new versions 2025-07-17 19:56:34 +02:00
Benoit Marty 2e0da99f2c Merge pull request #5017 from element-hq/feature/bma/a11y/sessionVerification
[a11y] Improve session verification screens
2025-07-17 15:45:32 +02:00
Benoit Marty cdbadb5477 FAB: iterate on design 2025-07-16 10:11:53 +02:00