Commit graph

130 commits

Author SHA1 Message Date
Jorge Martín
de8de61b2e Remove dagger and anvil dependencies, try to simplify gradle build scripts a bit 2025-09-04 16:49:21 +02:00
Jorge Martín
629776b9a3 Fix module still using dagger annotation 2025-09-04 16:49:21 +02:00
Jorge Martín
4ab62a6a38 Redo DI gradle setup code 2025-09-04 16:49:20 +02:00
Jorge Martín
29a97fc0d9 Fix lint issues and restore commented out code 2025-09-04 16:49:18 +02:00
Jorge Martín
b76a71ebf5 Start migrating Anvil KSP to Metro 2025-09-04 16:48:34 +02:00
Strac Consulting Engineers Pty Ltd
f4708a4773
Spelling correction in Update FeatureFlags.kt (#5232)
Spelling correction L74 (flog to flag)
2025-08-27 11:31:28 +02:00
Benoit Marty
1682fd4c2c Remove dependency to Anvil from modules that do not use it. 2025-08-25 11:36:42 +02:00
Jorge Martin Espinosa
7a5a197e7e
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
8245ad8bc3
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
35928e3630
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
f99b6f30c4 Revert "Remove FeatureFlag.SyncOnPush"
This reverts commit b394688d5a.
2025-08-12 17:16:49 +02:00
Benoit Marty
d3d192b5ff Remove FeatureFlag.SharePos 2025-08-12 16:08:48 +02:00
Benoit Marty
b394688d5a Remove FeatureFlag.SyncOnPush 2025-08-12 16:08:47 +02:00
Benoit Marty
d04434e20e Remove FeatureFlag.MediaUploadOnSendQueue 2025-08-12 16:08:46 +02:00
Benoit Marty
34efd2c3fa Remove FeatureFlag.MediaCaptionCreation and FeatureFlag.MediaCaptionWarning 2025-08-12 16:08:45 +02:00
Benoit Marty
dcb6055783 Remove FeatureFlag.MediaGallery 2025-08-12 16:08:45 +02:00
Benoit Marty
4f0535714e Remove FeatureFlag.PinnedEvents 2025-08-12 16:08:44 +02:00
Benoit Marty
be9861bea9 Remove FeatureFlag.QrCodeLogin 2025-08-12 16:08:43 +02:00
Benoit Marty
1268f74420 Remove FeatureFlag.MarkAsUnread 2025-08-12 16:08:42 +02:00
Benoit Marty
0ba783cd93 Remove FeatureFlag.VoiceMessages 2025-08-12 16:08:41 +02:00
Benoit Marty
82c86a2b4d Remove FeatureFlag.NotificationSettings and FeatureFlag.PinUnlock 2025-08-12 16:08:40 +02:00
Benoit Marty
7fb70fabed Remove FeatureFlag.LocationSharing and FeatureFlag.Polls 2025-08-12 16:08:38 +02:00
Benoit Marty
f6a17ba42b Replace FeatureFlag.LocationSharing by FeatureFlag.Space in unit test. 2025-08-12 15:52:07 +02:00
Benoit Marty
3e73496c85 Remove FeatureFlag.IncomingShare 2025-08-12 15:52:05 +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
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
61c9eb0780
Add a feature flag to reuse the last pos value for initial syncs (#5010) 2025-07-10 13:33:23 +00:00
Benoit Marty
9ee371d1b1 Add Feature flag for Spaces 2025-06-30 17:12:44 +02:00
Richard van der Hoff
b6680ac5d8
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
9f39ad885b
Remove event cache feature flag (#4719) 2025-05-15 09:42:18 +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
ganfra
bfe1aa7edf change (composer suggestions) : remove feature flag 2025-03-26 21:46:23 +01:00
Jorge Martín
f01078bc8a 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
d591ff4c14 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
97f3be3dc5 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
1e49ef7962 Enable MediaGallery in prod. 2024-12-19 16:39:23 +01:00
Benoit Marty
0d2efe5ffa Add a feature flag for the event cache. 2024-12-12 11:40:53 +01:00
Benoit Marty
3e1b1c29d1 Media Gallery 2024-12-09 16:48:48 +01:00
Benoit Marty
94ebac7e74 Add warning when adding a caption. 2024-12-02 15:53:48 +01:00
Benoit Marty
9d6ea2175f Add feature flag to temporary disable sending caption by default in production. 2024-11-27 10:54:20 +01:00
renovate[bot]
a6fedbafbd
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
68bdc31321 create room : add Knock feature flag 2024-11-04 15:41:14 +01:00
Andy Balaam
e362cad312 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
bf5599cac5 Add missing import 2024-10-10 20:35:12 +02:00
Benoit Marty
9c7f2b992a
Merge pull request #3648 from element-hq/feature/bma/identityChangeFeatureFlag
Add feature flag IdentityPinningViolationNotifications.
2024-10-10 17:20:29 +02:00
Benoit Marty
aa07ab1a07 Add feature flag IdentityPinningViolationNotifications.
Disabled in production build, enabled by default on other builds.
2024-10-10 16:28:15 +02:00
Benoit Marty
ab41f2d729 Enable Login with QR code in release builds. 2024-10-10 15:53:52 +02:00
Valere
3259539cc3 quick fix: Isolation mode feature flag name udpate 2024-10-04 17:07:16 +02:00
Jorge Martin Espinosa
eeec7cc785
Centralise the DI code generation logic (#3562)
* Create Anvil extension helper

* Use the helper everywhere
2024-09-30 12:20:28 +00:00