Commit graph

4172 commits

Author SHA1 Message Date
Benoit Marty
93292e6e2f Add SpaceHeaderView. 2025-08-22 14:50:30 +02:00
Benoit Marty
d5d7ac4c44 Add SpaceInfoRow to display info about a space in a space header. 2025-08-22 11:49:49 +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
Benoit Marty
44d0111cf2
Merge pull request #5198 from element-hq/fix/fixCrashOnPro
Ensure that only one DataStore is active for the same file.
2025-08-21 12:31:40 +02:00
Benoit Marty
a9c01a8b7e Now that DefaultPreferencesDataStoreFactory is protected DataStore creation, FullScreenIntentPermissionsPresenter does not need to be a singleton. 2025-08-21 11:57:56 +02:00
Benoit Marty
46ccb807b6 Ensure that only one DataStore active for the same file. 2025-08-21 11:56:16 +02:00
Benoit Marty
dc0d81032b Use Surface API for border and shape. 2025-08-21 09:19:33 +02:00
Benoit Marty
05fcf6635f Fix preview issue. 2025-08-20 21:45:24 +02:00
Benoit Marty
bc655c6bac Introduce SpaceMembersView.
Ref: https://www.figma.com/design/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?node-id=3729-605&m=dev
2025-08-20 17:40:49 +02:00
Benoit Marty
c3bd1492b6 Rename RoomPreviewMembersCountMolecule to MembersCountMolecule 2025-08-20 17:13:42 +02:00
Benoit Marty
d9d616127a Add a revered parameter to AvatarRow to be able to stack avatar the other way. 2025-08-20 16:51:19 +02:00
Benoit Marty
2ee4b4fdcb Move AvatarRow to designsystem module, because it will be used by spaces. 2025-08-20 15:56:46 +02:00
Benoit Marty
d31ada947e Add UI component OrganizationHeader
Ref: https://www.figma.com/design/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?node-id=3643-2048&m=dev
2025-08-20 15:41:22 +02:00
Benoit Marty
3391cfb7ef Add UI component EditableOrgAvatar
Ref: https://www.figma.com/design/G1xy0HDZKJf5TCRFmKb5d5/Compound-Android-Components?node-id=3643-2678&m=dev
2025-08-20 15:17:53 +02:00
Jorge Martin Espinosa
9bc2c4a776
Add shortcut suggestions for rooms, remove then when leaving (#5180)
* Report shortcut usage for outgoing messages

This patch adds support for creating and pushing dynamic
long-lived shortcuts for outgoing messages. This together
with an existing reference to the roomId used by the
shortcuts as an identifer allows conversations to be
prioritized.

See https://developer.android.com/training/sharing/direct-share-targets#report-usage-outgoing

* Simplify how to get the other user in a DM room

* Add initial avatar icons to shortcuts

* Remove room shortcuts when they're no longer joined

* Try using API 33 for the new tests. They worked locally with API 30, so it's weird the CI asks for a higher API version.

* Add observers for the pin code and session logout states. With this we can prevent new shortcuts from being created and remove existing ones when needed.

* Wrap all calls to `ShortcutManagerCompat` with `runCatchingExceptions` to avoid crashes

* Make `DefaultNotificationConversationService` a singleton.

---------

Co-authored-by: networkException <git@nwex.de>
Co-authored-by: ElementBot <android@element.io>
2025-08-19 16:02:51 +02: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
cc10ba41fd
Merge pull request #5185 from element-hq/feature/bma/invitePoepleUi
Iterate on invite people UI
2025-08-19 11:12:45 +02:00
Benoit Marty
5dfcd23e01 Create common SelectedItem composable. 2025-08-19 10:19:12 +02:00
Benoit Marty
3c68dd8f75 Improve accessibility. 2025-08-19 10:02:53 +02:00
Benoit Marty
e857bd7709 Rename val to improve code readability 2025-08-19 09:58:31 +02:00
Benoit Marty
3c3cef0614 Improve preview of SelectedRoom and SelectedUser. 2025-08-19 09:54:22 +02:00
Benoit Marty
2a5c3990e6 Improve preview of SelectedRoom. 2025-08-19 09:48:04 +02:00
Jorge Martin Espinosa
85b0f11ab6
Fix bitrate value used for video transcoding (#5183)
* Fix bitrate value used for video transcoding:

It should be 1000 times what it is now. The video size estimation was wrong since the retrieved duration value was in milliseconds, not seconds.

* Use `Duration` as the result type for `getDuration`
2025-08-18 21:12:11 +00:00
Benoit Marty
a323189373 Update text colors when the state is disabled. 2025-08-18 17:16:46 +02:00
Benoit Marty
320a1132ed [UI] Iterate on user invite view. 2025-08-18 17:16:28 +02:00
Benoit Marty
5f9ffed8f8 [UI] Iterate on selected room rendering. 2025-08-18 17:16:07 +02:00
Benoit Marty
57ee4e61ce [UI] Iterate on selected user rendering. 2025-08-18 17:16:04 +02:00
renovate[bot]
90ad9616c0
Update dependency org.matrix.rustcomponents:sdk-android to v25.8.18 (#5182)
* Update dependency org.matrix.rustcomponents:sdk-android to v25.8.18

* Fix broken API changes:
- The send queue usage is now mandatory.
- The media upload progress now comes back in the send queue state (this still hasn't been applied to the UI in the timeline).

* Update screenshots
---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
Co-authored-by: ElementBot <android@element.io>
2025-08-18 16:41:14 +02:00
ElementBot
7c40c87d9a
Sync Strings from Localazy (#5178)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2025-08-18 11:09:27 +02:00
Benoit Marty
de16268674
Merge pull request #5166 from element-hq/feature/fga/create_room_flow_rework
Create room flow rework
2025-08-18 09:38:28 +02:00
Benoit Marty
476a2b9007 Avoid using runBlocking in Node resolve function. 2025-08-14 16:53:35 +02:00
Benoit Marty
e1095c0688
Merge pull request #5117 from element-hq/renovate/showkase
Update showkase to v1.0.5
2025-08-13 17:01:11 +02:00
Benoit Marty
6989e10c19 Add string to Localazy 2025-08-13 16:59:12 +02:00
Jorge Martín
cb486e93d7 Remove libs.showkase entry in composeDependencies
Add it only to the needed library modules.
2025-08-13 11:43:57 +02:00
Benoit Marty
d2253300db Inject a StringProvider instead of the context, and update tests.
Also remove the other StringProvider we had, it was not used anymore
2025-08-13 11:07:28 +02:00
ganfra
b4a8b17391 refactor (start chat) : create invite people module and start branching them 2025-08-13 11:06:43 +02:00
Benoit Marty
58ce545d98
Merge pull request #5160 from element-hq/feature/bma/cleanupFeatureFlags
Remove old feature flags
2025-08-12 18:21:44 +02:00
Benoit Marty
de73412d4f Remove unused import 2025-08-12 17:49:31 +02:00
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
Benoit Marty
f99b6f30c4 Revert "Remove FeatureFlag.SyncOnPush"
This reverts commit b394688d5a.
2025-08-12 17:16:49 +02:00
Benoit Marty
076bb1ab98 Remove useless preview 2025-08-12 16:48:02 +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