Commit graph

49 commits

Author SHA1 Message Date
Johannes Marbach
980633a7f5 Revert back to worklet-loader compatible syntax 2023-11-18 21:36:11 +01:00
Johannes Marbach
8a6c590b7d Set name for worklet chunk 2023-11-14 14:40:51 +01:00
Johannes Marbach
624be1a7fa Fix paths and extensions 2023-11-13 20:10:55 +01:00
Johannes Marbach
99ad1781a5 Appease the linter 2023-11-13 19:54:04 +01:00
Johannes Marbach
5855930221 Extra worklet module loading and mock it in tests 2023-11-13 19:52:15 +01:00
Johannes Marbach
64ba0b4130 Squashed commit of the following:
commit 01a62b36a484d65664a641c4db2a7f3373251b47
Merge: 10edf06898 74961dbfb1
Author: Johannes Marbach <johannesm@element.io>
Date:   Mon Nov 13 19:38:47 2023 +0100

    Merge branch 'johannes/webpack5-workers' into johannes/worklet-path

commit 10edf068980f11b99bf2b18dce72e27065fd5727
Author: Johannes Marbach <johannesm@element.io>
Date:   Sun Nov 12 12:21:43 2023 +0100

    Document syntax and use .ts

commit 4040f2ce4121ddaf5254cb68e2e9b8716b0431d0
Author: Johannes Marbach <johannesm@element.io>
Date:   Sat Nov 11 21:38:09 2023 +0100

    Switch to URL and use syntax compatible with Webpack

commit b4f96f17cc1819bd84b8e6735a8c3f69948e97c4
Merge: eed2ffdc1c 94484692f8
Author: Johannes Marbach <johannesm@element.io>
Date:   Thu Nov 9 21:04:06 2023 +0100

    Merge branch 'develop' into johannes/worklet-path

commit eed2ffdc1c27e8748719b64e002c44e3dc6500e7
Author: Johannes Marbach <johannesm@element.io>
Date:   Thu Nov 9 21:03:45 2023 +0100

    Restore unused import to fix dead code analysis

commit 689cea2f061120070f3db405289bd9ded108def5
Author: Johannes Marbach <johannesm@element.io>
Date:   Thu Nov 9 16:50:56 2023 +0100

    Use literal path in audioWorklet.addModule for compatibility with Webpack 5
2023-11-13 19:39:45 +01:00
Johannes Marbach
74961dbfb1 Extract worker creation into factories and mack them in tests 2023-11-13 19:35:04 +01:00
Johannes Marbach
84d7d43a0d Load web workers in a way that Webpack 5 can bundle them 2023-11-11 16:03:08 +01:00
Michael Telatynski
24703eea8f
Switch to importing models/event from main js-sdk export (#11363) 2023-08-07 08:24:58 +00:00
Michael Telatynski
e67ca33c4a
Switch to importing models/Room from main js-sdk export (#11361)
* Switch to importing TypedEventEmitter from main js-sdk export

* Switch to importing js-sdk/matrix in cypress

* Remove duplicated imports

* Fix lint:js-fix to run prettier last otherwise ESLint --fix may cause a mess

* Add lint rule

* Switch to importing models/Room from main js-sdk export

* Fix cypress-axe import

* Fix more imports

* Fix cypress-axe import

* Fix duplicated lint rule
2023-08-04 07:36:16 +00:00
Michael Telatynski
9b5b053148
Use MatrixClientPeg::safeGet for strict typing (#10989) 2023-06-21 17:29:44 +01:00
Michael Telatynski
456c66db5b
Conform more of the codebase to strictNullChecks (#10800) 2023-05-10 08:41:55 +01:00
Michael Telatynski
a4f0b80692
Improve quality of Typescript types (#10742) 2023-05-05 09:11:14 +01:00
Michael Telatynski
e1f7b0af2c
Offload some more waveform processing onto a worker (#9223) 2023-04-27 11:02:20 +01:00
Michael Telatynski
127a3b667c
Conform more of the codebase to strictNullChecks (#10350
* Conform more of the codebase to `strictNullChecks`

* Iterate

* Generics ftw

* Iterate
2023-03-10 14:55:06 +00:00
Michael Telatynski
4b8bada24b
Apply strictNullChecks around the codebase (#10302
* Apply `strictNullChecks` around the codebase

* Iterate PR
2023-03-07 13:19:18 +00:00
Michael Telatynski
da7aa4055e
Conform more of the code base to strict null checking (#10147)
* Conform more of the code base to strict null checking

* More strict fixes

* More strict work

* Fix missing optional type

* Iterate
2023-02-13 17:01:43 +00:00
Michael Telatynski
61a63e47f4
Comply with noImplicitAny (#9940)
* Stash noImplicitAny work

* Stash

* Fix imports

* Iterate

* Fix tests

* Delint

* Fix tests
2023-02-13 11:39:16 +00:00
Michael Telatynski
9743852380
Improve typescript null checking in places (#10073 (#10073
* Improve typescript null checking in places

* Iterate

* Fix Timer.ts
2023-02-03 15:27:47 +00:00
Michael Telatynski
030b7e90bf
Enable @typescript-eslint/explicit-function-return-type in /src (#9788)
* Enable `@typescript-eslint/explicit-member-accessibility` on /src

* Prettier

* Enable `@typescript-eslint/explicit-function-return-type` in /src

* Fix types

* tsc strict fixes

* Delint

* Fix test

* Fix bad merge
2023-01-12 13:25:14 +00:00
Michael Telatynski
f1e8e7f140
Enable @typescript-eslint/explicit-member-accessibility on /src (#9785)
* Enable `@typescript-eslint/explicit-member-accessibility` on /src

* Prettier
2022-12-16 12:29:59 +00:00
Michael Weimann
526645c791
Apply prettier formatting 2022-12-12 12:24:14 +01:00
renovate[bot]
c3809d3afa
Update all non-major dependencies (#9674)
* Typescript updates

* Update @types/node

* Fix more types

* Update all non-major dependencies

* Remove spurious cast

* Remove unused dependency rrweb-snapshot

* Update all non-major dependencies

* Iterate PR

* Update yarn.lock

* Remove stale dev dep

* Resolve

* Pin back axe-core for now, it is a bit too strict

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-12-07 00:36:23 +00:00
László Várady
75c2c1a572
Honor advanced audio processing settings when recording voice messages (#9610)
* VoiceRecordings: honor advanced audio processing settings

Audio processing settings introduced in #8759 is now taken into account
when recording a voice message.

Signed-off-by: László Várady <laszlo.varady@protonmail.com>

* VoiceRecordings: add higher-quality audio recording

When recording non-voice audio (e.g. music, FX), a different Opus encoder
application should be specified. It is also recommended to increase the
bitrate to 64-96 kb/s for musical use.

Note: the HQ mode is currently activated when noise suppression is
turned off. This is a very arbitrary condition.

Signed-off-by: László Várady <laszlo.varady@protonmail.com>

* RecorderWorklet: fix type mismatch

src/audio/VoiceRecording.ts:129:67 - Argument of type 'null' is not
assignable to parameter of type 'string | URL'.

Signed-off-by: László Várady <laszlo.varady@protonmail.com>

* VoiceRecording: test audio settings

Signed-off-by: László Várady <laszlo.varady@protonmail.com>

* Fix typos

Signed-off-by: László Várady <laszlo.varady@protonmail.com>

* VoiceRecording: refactor using destructuring assignment

Signed-off-by: László Várady <laszlo.varady@protonmail.com>

* VoiceRecording: add comments about constants and non-trivial conditions

Signed-off-by: László Várady <laszlo.varady@protonmail.com>

Signed-off-by: László Várady <laszlo.varady@protonmail.com>
2022-12-05 11:19:50 -05:00
Michael Telatynski
d258402186
Typescript updates (#9658)
* Typescript updates

* Update @types/node

* Fix more types
2022-11-30 11:32:56 +00:00
Michael Weimann
66d0b318bc
Add voice broadcast playback seekbar (#9529) 2022-11-04 11:50:19 +01:00
Michael Weimann
9096bd82d6
Extract PlaybackInterface (#9526) 2022-11-02 09:46:42 +01:00
Michael Weimann
d4f1c573ad
Fix voice broadcast recording limit (#9478) 2022-10-22 13:07:39 +02:00
kegsay
e946674df3
Store refactor: use non-global stores in components (#9293)
* Add Stores and StoresContext and use it in MatrixChat and RoomView

Added a new kind of class:
- Add God object `Stores` which will hold refs to all known stores and the `MatrixClient`. This object is NOT a singleton.
- Add `StoresContext` to hold onto a ref of `Stores` for use inside components.

`StoresContext` is created via:
- Create `Stores` in `MatrixChat`, assigning the `MatrixClient` when we have one set. Currently sets the RVS to `RoomViewStore.instance`.
- Wrap `MatrixChat`s `render()` function in a `StoresContext.Provider` so it can be used anywhere.

`StoresContext` is currently only used in `RoomView` via the following changes:
- Remove the HOC, which redundantly set `mxClient` as a prop. We don't need this as `RoomView` was using the client from `this.context`.
- Change the type of context accepted from `MatrixClientContext` to `StoresContext`.
- Modify alllll the places where `this.context` is used to interact with the client and suffix `.client`.
- Modify places where we use `RoomViewStore.instance` and replace them with `this.context.roomViewStore`.

This makes `RoomView` use a non-global instance of RVS.

* Linting

* SDKContext and make client an optional constructor arg

* Move SDKContext to /src/contexts

* Inject all RVS deps

* Linting

* Remove reset calls; deep copy the INITIAL_STATE to avoid test pollution

* DI singletons used in RoomView; DI them in RoomView-test too

* Initial RoomViewStore.instance after all files are imported to avoid cyclical deps

* Lazily init stores to allow for circular dependencies

Rather than stores accepting a list of other stores in their constructors,
which doesn't work when A needs B and B needs A, make new-style stores simply
accept Stores. When a store needs another store, they access it via `Stores`
which then lazily constructs that store if it needs it. This breaks the
circular dependency at constructor time, without needing to introduce
wiring diagrams or any complex DI framework.

* Delete RoomViewStore.instance

Replaced with Stores.instance.roomViewStore

* Linting

* Move OverridableStores to test/TestStores

* Rejig how eager stores get made; don't automatically do it else tests break

* Linting

* Linting and review comments

* Fix new code to use Stores.instance

* s/Stores/SdkContextClass/g

* Update docs

* Remove unused imports

* Update src/stores/RoomViewStore.tsx

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>

* Remove empty c'tor to make sonar happy

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2022-10-19 13:07:03 +01:00
Michael Weimann
bac6e12946
Implement Voice Broadcast recording (#9307)
* Implement VoiceBroadcastRecording

* Implement PR feedback

* Add voice broadcast recording stores

* Refactor startNewVoiceBroadcastRecording

* Refactor VoiceBroadcastRecordingsStore to VoiceBroadcastRecording

* Rename VoiceBroadcastRecording to VoiceBroadcastRecorder

* Return remaining chunk on stop

* Extract createVoiceMessageContent

* Implement recording

* Replace dev value with config

* Fix clientInformation-test

* Refactor VoiceBroadcastRecording

* Fix VoiceBroadcastRecording types

* Re-order getter

* Mark voice_broadcast config as optional

* Merge voice-broadcast modules

* Remove underscore props

* Add Optional types

* Add return types everywhere

* Remove test casts

* Add magic comments

* Trigger CI

* Switch VoiceBroadcastRecorder to TypedEventEmitter

* Trigger CI

* Add voice broadcast chunk event content

Co-authored-by: Travis Ralston <travisr@matrix.org>
2022-10-11 22:31:28 +00:00
Michael Weimann
516b4f0ff8
Add array concat util (#9306) 2022-09-21 20:06:05 +02:00
Michael Weimann
c182c1c706
Generalise VoiceRecording (#9304) 2022-09-21 18:46:28 +02:00
Johannes Marbach
2c4ee7eb15
Increase max length of voice messages to 15m (PSG-661) (#9133)
* Increase max length of voice messages to 15m (PSG-661)

Relates to: vector-im/element-ios#5415

Signed-off-by: Johannes Marbach <johannesm@element.io>

* Fix comment

Signed-off-by: Johannes Marbach <johannesm@element.io>

* Update src/audio/VoiceRecording.ts

Co-authored-by: Robin <robin@robin.town>

Co-authored-by: Robin <robin@robin.town>
2022-08-08 08:06:04 -04:00
Travis Ralston
56b099c171 Step 8.4.3: Improve PlaybackQueue listener efficiency 2022-03-28 14:02:31 -06:00
Travis Ralston
d5ed1eb66e Step 8.3: Convert RoomViewStore to a more modern singleton for imports 2022-03-28 14:02:31 -06:00
J. Ryan Stinnett
65691202f7
Add lint for unused locals (#8007) 2022-03-09 12:05:16 +00:00
Kerry
4bf42babc7
dont re-prepare voice messages (#7897)
* dont reprepare voice messages

Signed-off-by: Kerry Archibald <kerrya@element.io>

* remove debug

Signed-off-by: Kerry Archibald <kerrya@element.io>

* test Playback

Signed-off-by: Kerry Archibald <kerrya@element.io>

* test RecordingPlayback

Signed-off-by: Kerry Archibald <kerrya@element.io>

* forgotten copyright

Signed-off-by: Kerry Archibald <kerrya@element.io>

* add comments

Signed-off-by: Kerry Archibald <kerrya@element.io>
2022-03-01 09:43:32 +01:00
Aaron Raimist
bdc56be863
Auto fix
Signed-off-by: Aaron Raimist <aaron@raim.ist>
2021-10-22 17:23:37 -05:00
Dariusz Niemczyk
5290afcc4c Replace console.warn with logger.warn
Related https://github.com/vector-im/element-web/issues/18425
2021-10-18 14:08:23 +02:00
Dariusz Niemczyk
5e73a212f4 Replace console.error with logger.error
Related https://github.com/vector-im/element-web/issues/18425
2021-10-18 14:08:23 +02:00
Dariusz Niemczyk
2d1d42b90e
Globally replace all console.logs via codemod (#6827)
This commit replaces all the `console.log` to `logger.log` via an automated script.
Related: vector-im/element-web#18425
2021-09-21 09:48:09 -06:00
David Baker
9533f7c04c Fix types in release mode again 2021-09-07 18:49:31 +01:00
Travis Ralston
91d0b55fd0 Stop automatic playback if a non-voice message is encountered
Fixes https://github.com/vector-im/element-web/issues/18850
2021-09-01 16:14:44 -06:00
Travis Ralston
730af94014 Autoplay semantics for voice messages
Fixes https://github.com/vector-im/element-web/issues/18804
Fixes https://github.com/vector-im/element-web/issues/18715
Fixes https://github.com/vector-im/element-web/issues/18714
Fixes https://github.com/vector-im/element-web/issues/17961
2021-08-30 14:29:37 -06:00
Travis Ralston
289b1c5ce0 Always trigger the first amplitude capture from the worklet
Fixes https://github.com/vector-im/element-web/issues/18587

See diff
2021-08-26 15:47:49 -06:00
Travis Ralston
51bd740936
Merge pull request #6538 from matrix-org/travis/voice-messages/ui-polish-aug3-21
Polish up more of the voice messages UI
2021-08-05 08:34:31 -06:00
Travis Ralston
4d5bdf70b7 Fix worklet reference for new webpack pipeline 2021-08-04 15:08:22 -06:00
Travis Ralston
1b9fe46733 Remove unnecessary rescaling of voice waveforms
Fixes https://github.com/vector-im/element-web/issues/18364
2021-08-03 13:51:11 -06:00
Travis Ralston
eec63574e6 Move src/voice to src/audio for better naming
Many of these files are used by Audio and Voice messages.

Fixes https://github.com/vector-im/element-web/issues/18131
2021-07-22 09:26:26 -06:00