Commit Graph

124 Commits

Author SHA1 Message Date
Benoit Marty
ef230e3bda Remove dependency to Anvil from modules that do not use it. 2025-08-25 11:36:42 +02:00
Jorge Martin Espinosa
e9f065c479 Allow replying to any remote message in a thread (#5201)
* Allow replying to any remote message in a thread.

This will open the thread screen based on the selected event:

- If it was already part of a thread, it will open that thread.
- Otherwise, it'll open the thread timeline screen so you can start a thread from the event.

* Add the feature flag to decide which action to perform. Also, rename the feature flag to something easier to understand.

* Display the reply in thread action based on the feature flag too

---------

Co-authored-by: ElementBot <android@element.io>
2025-08-22 16:07:13 +02:00
Jorge Martin Espinosa
2f2e886e9f Handle preference stores corruption by clearing them (#5086)
* Handle preference stores corruption by clearing them:
    - Use the centralised `PreferenceDataStoreFactory` instead of `preferences by`.
    - Add `DefaultPreferencesCorruptionHandlerFactory.replaceWithEmpty` to its `create(name)` method so all preference stores are cleared if they're corrupted.

* Add detekt rule to make sure we use `PreferenceDataStoreFactory` instead of `by preferencesDataStore`

* Remove `@SingleIn` annotations as the annotated class no longer have to be singletons
2025-08-22 06:59:06 +00:00
Jorge Martin Espinosa
285066c206 Threads - first iteration (#5165)
* Initial threads support: parse `ThreadSummary`.

Replace several `isThreaded` values with `EventThreadInfo`, which contains the info about the event either being the root of a thread or part of it.

* Add `Threaded` timeline mode

* Add a `liveTimeline` parameter to `TimelineController`'s  constructor. This way we can customise which timeline will be used as the 'live' one. Also add `@LiveTimeline` DI qualifier for the actual live timeline of the room.

* Create `ThreadedMessagesNode`. Allow opening a thread in a separate screen.

* Add the callbacks for the list menu actions - even if they're the wrong ones and will send the data to the room instead

* Send attachments and location in threads

* Fix polls in threads, add support for sending voice messages in threads

* Display thread summaries only when the feature flag is enabled

* Use 'Reply' instead of 'Reply in thread' when in threaded timeline mode

* Remove incorrect usage of `Timeline` in `MessageComposerPresenter`. This led to replies to threaded events not appearing as actual replies.

---------

Co-authored-by: ElementBot <android@element.io>
2025-08-19 13:35:48 +00:00
Benoit Marty
a282ca26c9 Revert "Remove FeatureFlag.SyncOnPush"
This reverts commit 45150de5b3.
2025-08-12 17:16:49 +02:00
Benoit Marty
8b511ca48a Remove FeatureFlag.SharePos 2025-08-12 16:08:48 +02:00
Benoit Marty
45150de5b3 Remove FeatureFlag.SyncOnPush 2025-08-12 16:08:47 +02:00
Benoit Marty
ebecc6652b Remove FeatureFlag.MediaUploadOnSendQueue 2025-08-12 16:08:46 +02:00
Benoit Marty
d025ae63ee Remove FeatureFlag.MediaCaptionCreation and FeatureFlag.MediaCaptionWarning 2025-08-12 16:08:45 +02:00
Benoit Marty
a0629d03fd Remove FeatureFlag.MediaGallery 2025-08-12 16:08:45 +02:00
Benoit Marty
3a14fcdc0d Remove FeatureFlag.PinnedEvents 2025-08-12 16:08:44 +02:00
Benoit Marty
c42ae056f2 Remove FeatureFlag.QrCodeLogin 2025-08-12 16:08:43 +02:00
Benoit Marty
fe8009e6bf Remove FeatureFlag.MarkAsUnread 2025-08-12 16:08:42 +02:00
Benoit Marty
be4e52e6ec Remove FeatureFlag.VoiceMessages 2025-08-12 16:08:41 +02:00
Benoit Marty
0eadf275e1 Remove FeatureFlag.NotificationSettings and FeatureFlag.PinUnlock 2025-08-12 16:08:40 +02:00
Benoit Marty
92990b27f3 Remove FeatureFlag.LocationSharing and FeatureFlag.Polls 2025-08-12 16:08:38 +02:00
Benoit Marty
098ae0820e Replace FeatureFlag.LocationSharing by FeatureFlag.Space in unit test. 2025-08-12 15:52:07 +02:00
Benoit Marty
4192633930 Remove FeatureFlag.IncomingShare 2025-08-12 15:52:05 +02:00
Jorge Martin Espinosa
a170d80cb3 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
ganfra
217f0f3dd6 misc : re-enable share pos by default 2025-08-01 10:31:20 +02:00
ganfra
cbb07217f5 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
b618395f42 Add a feature flag to reuse the last pos value for initial syncs (#5010) 2025-07-10 13:33:23 +00:00
Benoit Marty
aca27093e1 Add Feature flag for Spaces 2025-06-30 17:12:44 +02:00
Richard van der Hoff
9be05262e2 Add a developer option for history sharing on invite (#4821)
Adds a new developer flag, enabling our experimental support for MSC4268.
2025-06-18 17:11:57 +01:00
Jorge Martin Espinosa
44d77a6048 Remove event cache feature flag (#4719) 2025-05-15 09:42:18 +02:00
ganfra
c2568f84d2 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
ganfra
d2b6014b5e change (composer suggestions) : remove feature flag 2025-03-26 21:46:23 +01:00
Jorge Martín
cb5dcf9b79 Use a feature flag to decide whether logs should be printed to logcat or not
This is done so it can be temporarily enabled on release builds for quick debugging sessions, then disabled again.
2025-03-13 16:11:53 +01:00
Benoit Marty
3522a4fdbf Enable the Event cache by default.
Note that it will not enable it if the user has explicitly disabled it.
2025-03-06 10:38:05 +01:00
Benoit Marty
05fc76822a Apply dual licenses: AGPL + Element Commercial to file headers.
2 replace all actions have been performed:
- "SPDX-License-Identifier: AGPL-3.0-only" to "SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial"
- "Please see LICENSE in the repository root for full details." to "Please see LICENSE files in the repository root for full details."
2025-01-07 10:05:04 +01:00
Benoit Marty
6c104c0602 Enable MediaGallery in prod. 2024-12-19 16:39:23 +01:00
Benoit Marty
b2dce57abe Add a feature flag for the event cache. 2024-12-12 11:40:53 +01:00
Benoit Marty
28725a364f Media Gallery 2024-12-09 16:48:48 +01:00
Benoit Marty
0fcc90f64f Add warning when adding a caption. 2024-12-02 15:53:48 +01:00
Benoit Marty
933173b934 Add feature flag to temporary disable sending caption by default in production. 2024-11-27 10:54:20 +01:00
renovate[bot]
9042ed6458 Update dependency org.matrix.rustcomponents:sdk-android to v0.2.60 (#3827)
* Update dependency org.matrix.rustcomponents:sdk-android to v0.2.60

* Fix SDK API breaks:

- Map new `QueueWedgeError` cases.
- Add `MediaUploadOnSendQueue` feature flag enabled on debug and nightly builds: this will by used by `Timeline.send*` media functions fot its new `useSendQueue` parameter.

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2024-11-07 15:25:55 +01:00
ganfra
5255b03aca create room : add Knock feature flag 2024-11-04 15:41:14 +01:00
Andy Balaam
83dcac3c87 Enable identity pinning violation notifications unconditionally
(Remove the feature flag we added when this feature seemed unstable.)
2024-10-28 11:40:47 +00:00
Benoit Marty
928ab08925 Add missing import 2024-10-10 20:35:12 +02:00
Benoit Marty
354349df19 Merge pull request #3648 from element-hq/feature/bma/identityChangeFeatureFlag
Add feature flag IdentityPinningViolationNotifications.
2024-10-10 17:20:29 +02:00
Benoit Marty
88c617d13e Add feature flag IdentityPinningViolationNotifications.
Disabled in production build, enabled by default on other builds.
2024-10-10 16:28:15 +02:00
Benoit Marty
6f7df87656 Enable Login with QR code in release builds. 2024-10-10 15:53:52 +02:00
Valere
380150b0f9 quick fix: Isolation mode feature flag name udpate 2024-10-04 17:07:16 +02:00
Jorge Martin Espinosa
2efdb3ae45 Centralise the DI code generation logic (#3562)
* Create Anvil extension helper

* Use the helper everywhere
2024-09-30 12:20:28 +00:00
Valere
5459e02043 rename invisible flag to onlySignedDeviceIsolation 2024-09-25 23:02:01 +02:00
Valere
d99509e884 crypto: Add configuration flag to enable invisible crypto 2024-09-12 14:53:59 +02:00
Valere
5dec472f9b Doc | Remove outdated comment about flags default values 2024-09-12 11:51:43 +02:00
ganfra
c88cf9cc8c Pinned messages : enabled by default 2024-09-10 13:56:00 +02:00
Benoit Marty
2b016227e9 Migrate license to AGPL.
Run script `uv run license-editor --repository ../element-x-android`
2024-09-06 17:19:19 +02:00
Benoit Marty
edd0700bf8 Remove feature flag PictureInPicture 2024-08-27 18:41:40 +02:00