Commit graph

84 commits

Author SHA1 Message Date
Benoit Marty
d2e51f151b Get library ComposablePreviewScanner from maven and update to the latest version.
Renovate will now be able to upgrade it when necessary.
2025-02-27 09:05:04 +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
4c61e5dfa2 Remove :samples:minimal module 2024-11-14 09:06:13 +01:00
Benoit Marty
9fcf664166 Migrate license to AGPL 2024-09-06 17:45:03 +02:00
Benoit Marty
9440d08c20 Create module :appicon:enterprise 2024-07-03 17:20:13 +02:00
Benoit Marty
8d1a212bfd Move application icon to their own module, to be able to have another icon for Element Enterprise 2024-07-03 15:15:53 +02:00
Jorge Martin Espinosa
b0cebf5ca0
Improve screenshot testing with ComposablePreviewScanner (#3125)
* Use ComposablePreviewScanner to rework how screenshot testing works
* Add test sharding
* Update screenshots
* Fixes for Element Gallery

---------

Co-authored-by: ElementBot <benoitm+elementbot@element.io>
Co-authored-by: Benoit Marty <benoit@matrix.org>
2024-07-03 13:05:06 +02:00
Benoit Marty
1b72221df7 Add first EnterpriseService. 2024-06-26 11:59:41 +02:00
Jorge Martin Espinosa
c8bd04ceb1
Sign in with QR code (#2793)
* Add QR code login.
* Add FF to disable it in release mode.
* Force portrait orientation on the login flow.
* Create `NumberedList` UI components.
* Improve camera permission dialog.
* Make nodes in qrcode feature use `QrCodeLoginScope` instead of `AppScope`
* Bump SDK version.
* Fix maestro tests

---------

Co-authored-by: Benoit Marty <benoit@matrix.org>
Co-authored-by: ElementBot <benoitm+elementbot@element.io>
2024-05-31 14:38:27 +02:00
Jorge Martin Espinosa
880ebb4de8
Plain text editor implementation based on markdown input (#2840)
* Add plain text editor based on markdown input
- Fix autofocus of message composer.
- Remove `Message` data class, fetch the details in `MessagesPresenter` instead.
- Remove `enable rich text` option from advanced settings, set it as a build configuration instead.
* Fix MentionSpanProvider
* Bump RTE library to released `v2.37.3`

---------

Co-authored-by: ElementBot <benoitm+elementbot@element.io>
2024-05-21 13:58:53 +02:00
ganfra
3efbf4747d StartDM : add tests 2023-11-30 18:05:26 +01:00
Jorge Martin Espinosa
087d2728d5
Extract compound tokens and theming to compound-android library (#1888)
* Replace tokens & icons with the external Compound ones

---------

Co-authored-by: ElementBot <benoitm+elementbot@element.io>
2023-11-27 10:30:07 +01:00
David Langley
827edecda4 Remove WaveformProgressIndicator and waveform library and lint.
-Remove WaveformProgressIndicator - Remove waveform library
- lint.
2023-10-26 08:58:03 +01:00
Marco Romano
6e66c989f4
Receive and play a voice message (#1503)
## Type of change

- [x] Feature
- [ ] Bugfix
- [ ] Technical
- [ ] Other :

## Content

This PR consists of several macro-blocks separated by path/package:
- `messages.impl.mediaplayer` : Global (room-wide) media player, now used only for voice messages but could be used for all media within EX in the future. It is backed by media3's exoplayer. Currently not unit-tested because mocking exoplayer is not trivial.
- `messages.impl.voicemessages.play` : Business logic of a timeline voice message. This is all the logic that manages the voice message bubble.
- `messages.impl.timeline.model` & `messages.impl.timeline.factories`: Timeline code that takes care of creating the `content` object for voice messages.
-  `messages.impl.timeline.components` : The actual View composable that shows the UI inside a voice message bubble.

All the rest is just small related changes that must be done here and there in existing code.

From a high level perspective this is how it works:
- Voice messages are unlike other message bubbles because they carry state (i.e. playing, downloading...) so they have a Presenter managing this state.
- Media content (i.e. the ogg file) of a voice message is downloaded from the rust SDK on first play then stored in a voice messages cache (see the `VoiceMessageCache` class, it is just a subdirectory in the app's cacheDir which is indexed by the matrix content uri). All further play attempts are done from the cache without hitting the rust SDK anymore.
- Playback of the ogg file is handled with the `VoiceMessagePlayer` class which is basically a "view" of the global `MediaPlayer` that allow the voice message to only see the media player state belonging to its media content. 
- Drawing of the waveform is done with an OSS library wrapped in the `WaveformProgressIndicator` composable.

Known issues:
 - The waveform has no position slider.
 - The waveform (and together with it the whole message bubble) is taller than the actual Figma design.
 - Swipe to reply for voice messages is disabled to avoid conflict with the audio scrubbing gesture (to reply to a voice message you have to use the long press menu).
 - The loading indicator is always shown (there is no delay).
 - Voice messages don't stop playing when redacted.

## Motivation and context

https://github.com/vector-im/element-meta/issues/2083

## Screenshots / GIFs

Provided by Screenshot tests in the PR itself.
2023-10-24 21:47:51 +00:00
Jorge Martin Espinosa
46f78ef700
Integrate Element Call with widget API (#1581)
* Integrate Element Call with widget API.

- Add `appconfig` module and extract constants that can be overridden in forks there.
- Add an Element Call feature flag, disabled by default.
- Refactor the whole `ElementCallActivity`, move most logic out of it.
- Integrate with the Rust Widget Driver API (note the Rust SDK version used in this PR lacks some needed changes to make the calls actually work).
- Handle calls differently based on `CallType`.
- Add UI to create/join a call.

---------

Co-authored-by: ElementBot <benoitm+elementbot@element.io>
2023-10-19 15:38:43 +00:00
Benoit Marty
c0aa70f7f6 Move konsist test to their own module. 2023-10-12 18:41:38 +02:00
Jorge Martin Espinosa
c280b43ecc
Bump telephoto to 0.6.0-SNAPSHOT to diagnose crash (#1164) 2023-08-29 09:59:01 +02:00
Benoit Marty
cc8b61c9c9 Fix compilation issue. 2023-07-26 17:36:36 +02:00
Jorge Martin Espinosa
05f7037939
Prepare update to Rust SDK 0.1.36 (#966)
* Update to Rust SDK 0.1.36

* Cancel fetching members when the we exit the room
2023-07-26 14:22:09 +00:00
Jorge Martin Espinosa
a0c1f2c18a
Display room invitation notification (#735)
* Notifications: Add some extra mappings so we keep the original contents and can pass it later to an UI layer

* Fix notifications not appearing for a room if the app was on that room when it went to background.

* Modernize how we create spannable strings for notifications, remove unneeded dependency

* Remove actions from invite notifications temporarily

* Add `NotificationDrawerManager` interface to be able to clear membership notifications when accepting or rejecting a room invite

* Fix tests

* Add comment to clarify some weird behaviours

* Address review comments

* Set circle shape for `largeBitmap` in message notifications

* Fix no avatar in DM rooms

* Fix rebase issues

* Add invite list pending intent:

- Refactor pending intents.
- Make `DeepLinkData` a sealed interface.
- Fix and add tests.

* Rename `navigate__` functions to `attach__`

* Add an extra test case for the `InviteList` deep link

* Address most review comments.

* Fix rebase issue

* Add fallback notification type, allow dismissing invite notifications.

Fallback notifications have a different underlying type and can be dismissed at will.

* Fix tests
2023-07-10 14:34:58 +02:00
Yoan Pintas
f534ecda96 Init analytics modules (#350) 2023-06-05 13:11:34 +00:00
Benoit Marty
80b656a9c5 Use gradle logger to filter out when running with only warning logs. 2023-05-25 12:03:51 +02:00
Benoit Marty
fdb1ebf0ce Sort by filename for easier search in the logs. 2023-05-25 11:51:46 +02:00
Benoit Marty
eb6276e09d Improve asXId and make tests pass in release and debug mode. 2023-04-12 09:50:04 +02:00
Benoit Marty
df731042c6 Merge branch 'develop' into feature/bma/push 2023-04-06 09:13:24 +02:00
Benoit Marty
275fa03de3 Import some stuff about Push and notification from Element Android - WIP 2023-04-05 16:18:44 +02:00
Florian Renaud
7e3b69f06b convert rustsdk gradle file to kts 2023-04-04 15:44:37 +02:00
Benoit Marty
012ee00c85 Include again the module rustsdk, since it's not detected by the fun includeProjects() 2023-03-28 21:58:46 +02:00
Benoit Marty
43ca9f6712 Include all libraries and all services. 2023-03-28 15:04:59 +02:00
Benoit Marty
da2224368a Limit the recursivity to 1, when searching for gradle modules. 2023-03-28 14:51:30 +02:00
ganfra
8a41f60585 Merge branch 'develop' into feature/fga/module_templates 2023-03-27 17:21:45 +02:00
ganfra
e62d694944 Remove old template project from settings.gradle 2023-03-27 17:18:11 +02:00
ganfra
91bff7fad4 Add utility methods for automatically including api/impl feature modules 2023-03-23 18:06:32 +01:00
Jorge Martin Espinosa
f744691c15 Move StateMachine to its own module. (#257) 2023-03-23 16:49:15 +00:00
Maxime NATUREL
31f8c92b58 Create a reusable selectusers feature module 2023-03-22 12:25:58 +01:00
Benoit Marty
8032fb3992 Merge pull request #224 from vector-im/bma/analytics
Add utility modules
2023-03-21 13:18:10 +01:00
Benoit Marty
1f0149daeb Merge branch 'develop' into feature/bma/networkModule 2023-03-17 13:39:01 +01:00
Jorge Martin Espinosa
dcb98f06aa Add Session Verification flow (#197) 2023-03-17 10:07:19 +01:00
Benoit Marty
2a3caaff8b Add :services:toolbox modules. 2023-03-17 10:05:40 +01:00
Benoit Marty
89657e0a35 Add :services:analytics modules. For now import the current plan.
This will allow to import existing class from EA and not break compatibility with existing analytics call.
2023-03-17 10:05:40 +01:00
Benoit Marty
a68b3f80eb Add :libraries:network module 2023-03-16 15:31:57 +01:00
Benoit Marty
63fabed8ce Introduce AppNavigationStateService. 2023-03-16 11:30:09 +01:00
ganfra
bea510f432 [Architecture] split createroom feature module 2023-03-09 12:31:30 +01:00
ganfra
7455c4923f Merge branch 'develop' into feature/fga/improve_node_architecture 2023-03-09 12:00:34 +01:00
ganfra
86ebcc376d [Architecture] clean and makes compile 2023-03-09 10:18:25 +01:00
ganfra
bc9f3b69cc [Architecture] split all feature modules to api/impl 2023-03-08 16:13:45 +01:00
Florian Renaud
a0a0fae6ed Init create room module 2023-03-08 15:46:45 +01:00
ganfra
7f3679a15e Merge branch 'develop' into feature/fga/improve_node_architecture 2023-03-07 12:10:20 +01:00
ganfra
a13cba9571 [Architecture] : create appnav module so we can use only api feature modules 2023-03-06 20:30:48 +01:00
Benoit Marty
95ccccc33b Move InMemorySessionStore in it's own module implementation 2023-03-06 13:10:27 +01:00