Commit Graph

125 Commits

Author SHA1 Message Date
Paulo Lanzarin
f55bd7b114
chore(audio): add I/O device data to audio logs (#21502)
I/O device IDs are logged in some specific logCodes, but they aren't too
useful on their own without the rest of the MediaDeviceInfo object. We
need that extra data (label, group) to be able to better investigate
incorrect device issues and NotFoundError occurrences.

Register full I/O device info whenever the client fetches them and add
those, unfiltered, to the following logCodes:
  - audiomanager_error_getting_device
  - audiomanager_error_device_not_found
  - audiomanager_error_unknown
  - audio_joined
  - audio_ended
  - audio_failure
  - audiomanager_input_live_device_change_failure
  - audiomanager_output_device_change_failure
2024-10-24 21:19:21 -04:00
hiroshisuga
36c9819d24
[3.0.0 transcription] Add locales as much as possible (#21376)
* Update en.json

* Update settings.yml

* Create transcriptionLocale.ts

* Update component.tsx

* Update component.tsx

* Revert IN -> ID

Because it will be fixed in the main repository

* let -> const message

British -> GB

* Refactor audio captions messages and locales to fix issues reported by typescript code validation

---------

Co-authored-by: Ramón Souza <contato@ramonsouza.com>
2024-10-18 15:22:04 -03:00
Ramón Souza
62dee1150c
fix: locale issues (#21408) 2024-10-09 19:47:32 -04:00
Ramón Souza
ac38d3c9a8 update actions bar buttons background 2024-10-08 13:41:41 -03:00
Anton Georgiev
f283f11274
Merge pull request #21279 from ramonlsouza/fix-custom-locale
fix(audio-captions): label generation for audio captions with custom locales
2024-09-30 10:18:25 -04:00
João Victor Nunes
8e83d93eb0
feat(audio): track mute state by meeting (#21095) 2024-09-27 19:13:08 -04:00
Ramón Souza
365a5e2274 fix(audio-captions): label generation for audio captions with custom locales
This commit refactors the label generation for audio captions in the audio-captions button and captions components. Instead of directly using the intl formatMessage function, the label is now generated using the intlMessages object and the getLocaleName function from the audio-captions service. This change prevents an issue with custom locales.
2024-09-27 16:44:25 -03:00
André Castro
3053ddac20
fix(audio/muteToggle): Fix mute loading state on push to talk (#21199) 2024-09-23 11:23:41 -04:00
Paulo Lanzarin
66e0d5ca09
Merge pull request #21092 from prlanzarin/u30/fix/audio-device-removal
fix(audio): detect and handle system device changes correctly
2024-09-13 09:55:52 -03:00
André Castro
67fcadf9a8
Usability: Changing push to talk cooldown (#21109) 2024-09-09 14:53:23 -03:00
Átila
976ad79ee4
fix(captions): fix avatar username color (#21088) 2024-09-09 08:50:52 -03:00
André Castro
531859fd52
Client: Adding loading animation to mute/unmute and toggle animation (#20918)
* Client: Adding loading animation tu mute/unmute and toggle animation

* Update bigbluebutton-html5/imports/ui/components/audio/audio-graphql/audio-controls/input-stream-live-selector/buttons/muteToggle.tsx

Co-authored-by: Paulo Lanzarin <4529051+prlanzarin@users.noreply.github.com>

* TS lint

---------

Co-authored-by: Paulo Lanzarin <4529051+prlanzarin@users.noreply.github.com>
2024-09-09 08:49:10 -03:00
prlanzarin
7dd0fb42ea fix(audio): detect and handle system device changes correctly
In BBB ≤ 2.7, a procedure monitored system audio device changes, updating
the device list and assigning a fallback device if the current one was removed.
This procedure was removed in 3.0 during the migration of the
input-stream-live-selector component to TypeScript (reasons unknown), causing
the device list to become outdated and leaving the user's client without audio
input if their current device is disconnected.

This commit restores the `devicechange` event handler in the input-stream-live-
selector, ensuring that the device list is updated properly and fallback devices
are assigned when necessary.
2024-09-02 21:51:40 +00:00
KDSBrowne
8a0231aa17 fix m shortcut intercepting alt + m 2024-08-29 18:04:50 +00:00
KDSBrowne
64c9cf6a69
feat: Add Support For Audio Push To Talk (#21032)
* add push to talk

* fix setting toggle

* typescript errors
2024-08-29 11:54:27 -03:00
André Castro
cef0d7a5d9
Fix: [3.0] Distorted microphone loading animation on smaller screens (mobile) (#21024)
* Fix: [3.0] Distorted microphone loading animation on smaller screens (mobile)

* Fix distorted loading anim
2024-08-26 16:44:45 -03:00
prlanzarin
c055caf915 fix(audio): ensure current I/O devices are flagged as selected
There's a regression in 3.0's I/O device selector where default output
devices are not marked as selected in the input-stream-live-selector
component unless the user explicitly selects them. This issue can also affect
input devices, although less commonly than output due to the system's ability
to infer the selected input device ID after the user joins audio.

When a device is the first in the list and no currentDeviceId is set in
the client, treat the first device returned by enumerateDevices as the
system default and hence selected, in accordance with the "Media Capture
and Streams API", Section 9.2, enumerateDevices algorithm.
2024-08-19 21:35:12 +00:00
Ramón Souza
7c62352079
Merge pull request #20958 from JoVictorNunes/pure-voice-activity-hooks
fix: prevent the whole client from rerendering on voice activity
2024-08-16 09:47:57 -03:00
João Victor
2b6e4b584e fix(voice): reorganize askForConfirmationOnLeave code
- Move askForConfirmationOnLeave into AudioContainer
- Get rid of the unstable useMuteMicrophone hook, which returns a new reference every time the user gets muted/unmuted. Use the stable useToggleVoice hook instead.
2024-08-15 10:34:16 -03:00
prlanzarin
381718a353 fix(audio): unmute when going from "no mic" -> mic via unmute trigger, +
When going from "no mic" -> mic via the unmute action, the client isn't
unmuting itself after confirming the change. This is caused by not
waiting the liveChangeInputDevice method (which is a Promise) to be
fully executed before unmounting the AudioSettings modal -- the one
responsible for triggering the unmute. Since it unmounts before the
device is changed, the unmute action will be ignored because the device
is still "listen-only" (no mic).

Properly unmute audio when transitioning from "no mic" -> "mic" via the
unmute trigger by waiting for liveChangeInputDevice to resolve.
Additionally, some general improvements to UI/UX:
  - Display the AudioSettings modal title when gUM is on prompt mode
  - Add specific subtitles to the AudioSettings modal to 1) warn that no
    mic is selected 2) Give a hint that the user can test their devices
  - Always honor settings.yml's "initialHearingState" state (whether
    local echo feedback should be played by default in AudioSettings)
2024-08-15 03:30:18 +00:00
prlanzarin
120bef5cc1 refactor(audio): improve audio settings' UI
We are missing a way to select transcription languages in some
scenarios, e.g.: listenOnlyMode=false. The audio settings UI is also not
handling item disposition very well on smaller devices.

This commit does the following to improve those blind spots:
  - Add the transcription language selector to it whenever applicable
  - Add proper styling to the transcription selector
  - Handle small screens by changing the disposition of elements to
    portrait mode
  - Improve how elements are disposed to a more familiar view: Mic ->
    Activity Indicator; Speaker -> Speaker test. This is more in line
    with how other platforms do audio configuration/pre flight screens.
2024-08-15 00:43:37 +00:00
prlanzarin
325887e325 feat(audio): rework audio join without listen only
This is a rework of the audio join procedure whithout the explict listen
only separation in mind. It's supposed to be used in conjunction with
the transparent listen only feature so that the distinction between
modes is seamless with minimal server-side impact. An abridged list of
changes:
  - Let the user pick no input device when joining microphone while
    allowing them to set an input device on the fly later on
  - Give the user the option to join audio with no input device whenever
    we fail to obtain input devices, with the option to try re-enabling
    them on the fly later on
  - Add the option to open the audio settings modal (echo test et al)
    via the in-call device selection chevron
  - Rework the SFU audio bridge and its services to support
    adding/removing tracks on the fly without renegotiation
  - Rework the SFU audio bridge and its services to support a new peer
    role called "passive-sendrecv". That role is used by dupled peers
    that have no active input source on start, but might have one later
    on.
  - Remove stale PermissionsOverlay component from the audio modal
  - Rework how permission errors are detected using the Permissions API
  - Rework the local echo test so that it uses a separate media tag
    rather than the remote
  - Add new, separate dialplans that mute/hold FreeSWITCH channels on
    hold based on UA strings. This is orchestrated server-side via
    webrtc-sfu and akka-apps. The basic difference here is that channels
    now join in their desired state rather than waiting for client side
    observers to sync the state up. It also mitigates transparent listen
    only performance edge cases on multiple audio channels joining at
    the same time.

The old, decoupled listen only mode is still present in code while we
validate this new approach. To test this, transparentListenOnly
must be enabled and listen only mode must be disable on audio join so
that the user skips straight through microphone join.
2024-08-15 00:43:28 +00:00
Ramón Souza
f150d92bde rename param 2024-08-09 11:20:58 -03:00
Ramón Souza
3907293692 add muteSpeakerIfAway config 2024-08-09 09:54:34 -03:00
André Möller
cdfbc5a276 Additional changes 2024-08-05 14:19:34 -03:00
André Möller
5e1434b188 Additional changes 2024-08-05 14:12:22 -03:00
André Möller
31cc71e2d4 Change of approach 2024-08-05 14:05:04 -03:00
André Möller
d77e44ee27 merge 2024-08-01 13:10:21 -03:00
André Möller
f18d201de2 Client: Adding loading status to buttons 2024-07-30 15:53:49 -03:00
Ramón Souza
b14e5034eb
fix: Client crash if speech synthesis is not enabled (#20756) 2024-07-24 10:39:11 -04:00
Gustavo Trott
134b207f94
refactor: Remove Hasura database-updates and move them to Gql-Actions (#20634) 2024-07-04 17:00:06 -03:00
João Victor Nunes
d016b69b0c
refactor: remove standalone voice user subscription (#20600) 2024-06-28 16:58:29 -03:00
André Castro
f489f93dfb
Fix: Captions lines are duplicated; limit how many rows (#20590) 2024-06-28 09:29:26 -04:00
João Victor Nunes
9801905960
fix: improve the hooks of voice activity (#20589)
* fix: improve the hooks of voice activity

* Add check for users who haven't talked
2024-06-27 14:31:20 -03:00
João Victor
09fe35b1f0 Merge branch 'v3.0.x-release' into use-who-is-talking 2024-06-24 11:31:13 -03:00
João Victor
17b734e642 refactor(core-html5): custom hooks for voice data 2024-06-21 18:45:05 -03:00
Ramón Souza
90f3ad2e7e
Merge pull request #20564 from Scroody/fix-audio-arrow
Fix: Wrong position of audio arrow
2024-06-21 15:08:31 -03:00
André Möller
2ea66c8f56 Fix: Wrong position of audio arrow 2024-06-21 10:02:10 -03:00
André Castro
e89e579387
Update bigbluebutton-html5/imports/ui/components/audio/audio-graphql/audio-captions/live/component.tsx
Co-authored-by: Anton Georgiev <antobinary@users.noreply.github.com>
2024-06-20 11:25:59 -03:00
André Möller
01ef5342a5 Fix: Avatar is transparent in cc 2024-06-20 10:38:06 -03:00
Tiago Jacobs
ba02a327e1
Revert "refactor(core-html5): custom hook for voice data" 2024-06-19 14:18:58 -03:00
Ramón Souza
07fb4e5f20
Merge pull request #20528 from JoVictorNunes/use-who-is-talking
refactor(core-html5): custom hook for voice data
2024-06-19 11:55:51 -03:00
João Victor
7ede343490 refactor(core-html5): custom hook for voice data 2024-06-18 15:40:14 -03:00
Gustavo Trott
a27cd6cdb2
Merge pull request #20518 from GuiLeme/plugin-server-commands
feat(plugins): new server-command for typed-captions plugin
2024-06-18 13:33:16 -03:00
Ramón Souza
772e920b9a
Merge pull request #20511 from Arthurk12/bbb/3.0/20484
fix(audio-controls): add debounce/throttle to mute/unmute
2024-06-18 09:33:37 -03:00
Guilherme Leme
8db3a6be80 [plugin-server-commands] - added server-command caption save and add a captionLocale 2024-06-18 09:20:35 -03:00
Arthurk12
5160322638 fix(audio-controls): add debounce/throttle to mute/unmute
Adds debounce and throttle to mute/unmute button to prevent users from
spamming this actions.
2024-06-17 16:58:47 -03:00
Ramón Souza
88e67259f0 fix invalid hook call 2024-06-17 13:15:08 -03:00
João Victor
13425335df Fix imports 2024-06-17 08:54:03 -03:00
João Victor
ac72582c04 Merge branch 'v3.0.x-release' into remove-mongo-adapters 2024-06-14 16:55:53 -03:00