Commit graph

1677 commits

Author SHA1 Message Date
Marco Romano
c3cbf4de96
Default enable voice message feature flag (#1669)
:party
2023-10-27 15:16:32 +00:00
Marco Romano
a07286ace9
Split VoiceMessageType from AudioMessageType (#1664)
Currently, for compatibility reasons, we implement MSC3245v1 which puts the voice data inside an audio message type. Though at times it seems impractical to deal with a single message type which effectively represents 2 different kinds of messages.

This PR creates a new message type called `VoiceMessageType` which is used whenever we receive an event with `"msgtype": "m.audio"` which also has the `"org.matrix.msc3245.voice": {}` field. This makes it easier to process voice messages as different entities throughout the rest of the codebase.
2023-10-27 16:02:16 +02:00
David Langley
af513a8023 Fix documentation 2023-10-27 13:55:42 +01:00
David Langley
a4df8f80cc Merge branch 'develop' of https://github.com/vector-im/element-x-android into langleyd/live_waveform 2023-10-27 13:54:18 +01:00
Marco Romano
0e4141863b
Always treat waveform as List<Float> (#1663)
[MSC3246](https://github.com/matrix-org/matrix-spec-proposals/pull/3246) specifies the waveform as a list of ints because:

> Because floating point numbers are not allowed in Matrix events

Though DSP on audio data is almost always done using their floating point representation.
This PR brings the float<->int rescaling in the `matrix` module so that the application code can always work with float waveform samples.
2023-10-27 12:49:58 +00:00
Marco Romano
a6e4644cfa
Add missing screenshots in TimelineView (#1660)
Add audio, voice  and poll screenshots to TimelineView which were missing.
2023-10-27 12:18:28 +00:00
David Langley
a64003355a Merge branch 'develop' of https://github.com/vector-im/element-x-android into langleyd/live_waveform 2023-10-27 13:10:32 +01:00
David Langley
977c7e265a Fix naming and waveform previews 2023-10-27 13:06:33 +01:00
jonnyandrew
9510d43289
Add waveform to voice message preview UI (#1661)
* Add waveform to preview UI

* Update screenshots

* Make random waveform function deterministic

* Update screenshots

---------

Co-authored-by: ElementBot <benoitm+elementbot@element.io>
2023-10-27 11:33:35 +00:00
David Langley
37f8195956 Merge branch 'develop' of https://github.com/vector-im/element-x-android into langleyd/live_waveform 2023-10-27 12:28:46 +01:00
Jorge Martin Espinosa
44de6adb86
Initial support for member suggestions (#1631)
* Initial support for member suggestion (search and UI)

* Add custom `BottomSheetScaffold` implementation to workaround several scrolling bugs

* Start searching as soon as `@` is typed, add UI following initial designs

* Extract suggestion processing code

* Extract component, add previews, fix tests

* Add tests

* Add exception from kover to the forked bottom sheet code

* Add a feature flag for mentions

- Extract composer & mention suggestions to their composable.
- Extract mentions suggestions processing to its own class.
- Add `MatrixRoom.canTriggerRoomNotification` function.
- Update strings and conditions for displaying the `@room` mention.

---------

Co-authored-by: ElementBot <benoitm+elementbot@element.io>
2023-10-27 10:26:40 +00:00
David Langley
5da40abba3 Merge branch 'langleyd/live_waveform' of https://github.com/vector-im/element-x-android into langleyd/live_waveform 2023-10-27 10:56:48 +01:00
David Langley
8321eaf19d Fix tests 2023-10-27 10:56:45 +01:00
Marco Romano
b2a61f2ed3
Show correct UI when replying to a voice message (#1658)
Shows voice messages in the room summary.
Shows voice messages in the reply context menu and composer.
Show replies to voice messages in the timeline. 

(before this PR voice messages were shown the same as audio messages)

Story: https://github.com/vector-im/element-meta/issues/2106
2023-10-27 11:30:57 +02:00
Benoit Marty
bf905dd79b
Merge pull request #1651 from vector-im/feature/bma/uiUpdate
Preparatory work for SecureBackup: UI update
2023-10-27 11:03:29 +02:00
David Langley
0745587f3b
Merge branch 'develop' into langleyd/live_waveform 2023-10-27 09:37:21 +01:00
David Langley
1cb27661c8 Fix tests 2023-10-27 09:32:05 +01:00
Marco Romano
b5586cb7d8
Move MediaPlayer from messages module to new dedicated library module (#1654) 2023-10-27 09:58:17 +02:00
David Langley
1a2b728361 lint 2023-10-27 08:45:20 +01:00
David Langley
db70c98af9 Merge branch 'develop' of https://github.com/vector-im/element-x-android into langleyd/live_waveform 2023-10-27 08:44:25 +01:00
David Langley
416aa3b64a FIx height and concurrent exception
- Fix live waveform hight
- Fix concurrent modification exception when sharing levels
- Tidy up width of live waveform
2023-10-27 08:41:08 +01:00
Benoit Marty
aaaad23612
Merge pull request #1653 from vector-im/feature/bma/secureBackupSdk
SecureBackup: update matrix sdk module.
2023-10-27 09:35:19 +02:00
David Langley
1389c9ed24 Simple live waveform implementation. 2023-10-26 23:46:03 +01:00
Marco Romano
0457e5915c
Convert mx waveform to floats as early as possible in the chain (#1652)
This way we're sure that internally we always deal with [0;1] float samples. the [0;1024] int range is used only at the rust sdk boundary.
2023-10-26 16:58:00 +00:00
Benoit Marty
3a15b92eb6 SecureBackup: update matrix sdk module. 2023-10-26 18:02:34 +02:00
Benoit Marty
bf5047647a Fix warning: Composable functions should only be emitting content into the composition from one source at their top level. 2023-10-26 17:49:13 +02:00
Benoit Marty
ea9c7f5b10 Rename file. 2023-10-26 17:40:51 +02:00
Benoit Marty
96dd7bbd8d Use DialogLikeBannerMolecule in NotificationSettingsView. 2023-10-26 17:40:51 +02:00
Benoit Marty
fa2a2e2f7f Design: extract DialogLikeBannerMolecule from RequestVerificationHeader 2023-10-26 17:40:51 +02:00
Benoit Marty
93e05e9d9f Preference: Add badge to the icon preference. 2023-10-26 17:40:51 +02:00
Benoit Marty
bec12c4cca Design kit: add destructive dialog action 2023-10-26 17:40:51 +02:00
Benoit Marty
e9e050a6d8 Design kit: add destructive buttons. 2023-10-26 17:40:51 +02:00
Benoit Marty
cb8c6f3eb1 Add RedIndicatorAtom 2023-10-26 17:40:51 +02:00
Marco Romano
00d24ce4b1
Include waveform when sending voice messages (#1650)
- New `AudioLevelCalculator` that outputs dB0v rescaled to the [0;1] range.
- `VoiceRecorder` now stores the audio levels sampled while recording, then resamples them to 100 samples to use as waveform preview.
- Waveform data is carried all the way as a `List<Float>` and converted to `List<Int>` in the [0;1024] range as per matrix spec only before sending it.
2023-10-26 17:37:24 +02:00
jonnyandrew
a67410f573
Add voice message preview player (#1646)
---------

Co-authored-by: ElementBot <benoitm+elementbot@element.io>
2023-10-26 15:33:58 +00:00
jonnyandrew
acd7aef6be
Move waveform UI to design system library (#1649) 2023-10-26 15:15:42 +00:00
ganfra
ec9b6ba62f
Merge pull request #1642 from vector-im/feature/fga/pin_settings
PIN : settings and branch flow
2023-10-26 16:40:38 +02:00
Jorge Martin Espinosa
030e86f56b
Update the chat screen UI using RoomInfo. (#1640)
* Update the chat screen UI using `RoomInfo`.

This is specially useful for getting live values for `hasRoomCall`.

* Ensure the first `MatrixRoomInfo` is emitted ASAP

* Try excluding `*Present$present$*` inner functions from kover as separate entities

* Update strings

---------

Co-authored-by: ElementBot <benoitm+elementbot@element.io>
2023-10-26 14:27:42 +00:00
ganfra
ca6a30d6cc PIN : fix quality 2023-10-26 15:25:40 +02:00
Marco Romano
3ec62ad58a
Use Float instead of Double for all the level metering logic. (#1645)
This is in preparation of further changes to the way the audio level is computed and to allow recording and sending of the waveform. The main reasoning behind the change is twofold:
1) We don't need the precision of Double in our context (we just need a rough indication of the changes in audio level to successfully draw a level meter or a waveform in our UI).
2) Performance: It is true that on 64 bit CPUs single operations involving Floats or Doubles take the same amount of time (i.e one clock cycle). But there are other aspects here that vouch in favor of Floats:
	- A float takes half the space in memory compared to a double, so when storing long lists of them this can add up.
	- On Android O and greater the ART runtime can "vectorize" certain operations on lists and make use of the CPU's SIMD registers which are generally 128 bits. So by using floats 4 of them can fit and be computed at the same time whilst with doubles only 2 will fit halving the throughput.

References:
- https://source.android.com/docs/core/runtime/improvements
- https://www.slideshare.net/linaroorg/automatic-vectorization-in-art-android-runtime-sfo17216
2023-10-26 12:55:23 +00:00
Marco Romano
7d1b671426
Refactor of voice message playing code (#1643)
After PR review suggestions from @jonnyandrew 
User facing functionality doesn't change, but overall architecture and testing is better.
2023-10-26 12:51:12 +02:00
ganfra
5d98f645d2 Merge branch 'develop' into feature/fga/pin_settings 2023-10-26 11:13:52 +02:00
renovate[bot]
71ef76ad86
Update dependency org.matrix.rustcomponents:sdk-android to v0.1.65 (#1639)
* Update dependency org.matrix.rustcomponents:sdk-android to v0.1.65

* Fix broken verification flow

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
2023-10-26 08:59:06 +02:00
ganfra
54cd62ab76 PIN: branch SignOut 2023-10-25 11:15:15 +02:00
David Langley
6fa73963c1
Merge branch 'develop' into dla/feature/custom_room_notification_settings_list 2023-10-24 22:18:38 +01:00
jonnyandrew
8c7a0c0e0a
Allow deleting a recorded voice message (#1635)
---------

Co-authored-by: ElementBot <benoitm+elementbot@element.io>
2023-10-24 21:02:19 +00:00
David Langley
75e95333a8 Unit and Snapshot tests for error and loading states. 2023-10-24 21:39:53 +01:00
David Langley
4784235f8d
Merge branch 'develop' into dla/feature/custom_room_notification_settings_list 2023-10-24 17:20:15 +01:00
Benoit Marty
b4cc11ec1e Test coverage: Add test on DefaultNavigationStateService 2023-10-24 17:17:15 +02:00
Benoit Marty
0b984327db
Merge pull request #1632 from vector-im/feature/bma/backupMapper
Add `BackupState` and `BackupStateMapper`
2023-10-24 16:06:59 +02:00