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