Commit Graph

60 Commits

Author SHA1 Message Date
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
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
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
f18d201de2 Client: Adding loading status to buttons 2024-07-30 15:53:49 -03: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
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
André Möller
2ea66c8f56 Fix: Wrong position of audio arrow 2024-06-21 10:02:10 -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
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
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
João Victor
13425335df Fix imports 2024-06-17 08:54:03 -03:00
João Victor Nunes
06500be757
refactor(storage): replace Tracker.Dependency with observer hook (#20322)
* refactor(storage): replace Tracker.Dependency with observer hook

* fix(storage): set initial value

* refactor(storage): stop using Meteor's Session singleton
2024-06-06 10:50:03 -03:00
Ramón Souza
7514066fc3
fix: Client can't load in certain cases (#20336)
* move settings

* remove meteor cache files
2024-05-29 09:26:11 -04:00
Ramón Souza
20762d133a
Merge pull request #20250 from ramonlsouza/user-away-mutation-check
refactor: only send disable away mutation if user is away
2024-05-15 13:34:28 -03:00
Ramón Souza
10c8b50987 only send disable away mutation if user is away 2024-05-14 10:31:05 -03:00
João Victor
40fa0eaab3 fix(audio): explicitly pass whcih user to mute
- Do not assume current user to mute when params are nullable
2024-05-10 08:52:01 -03:00
prlanzarin
a21addfa1f fix(audio): review device selection in mobile endpoints
Mobile users have no way to change I/O devices after joining audio.
The removal of the audio options chevron in mobile browsers was supposed
to be replaced by something else - in this case, by the dedicated
leave/join audio button. That didn't happen, leave/join audio button
retained the old behavior.

Review device selection in mobile endpoints via two UI/UX changes:
  - Fix an styling issue where the mute and listen only buttons were
    crammed together
  - Restore the device selection chevron/icon in mobile endpoints
  - Override the leave/join button action in mobile endpoints so that it
    opens the device selection contextual menu, which also includes the
    "Leave audio" option. This retains the old behavior (leaving audio)
    while also providing an way for users to change devices mid-call in
    mobile browsers.
2024-05-03 01:32:01 +00:00
Ramón Souza
ae10830a1a move setTrackEnabled to new service file 2024-05-02 09:24:03 -03:00
Ramón Souza
5f0ab8f800 move muteAway and fix issue with joining listen only when away is active 2024-04-24 17:06:53 -03:00
Ramón Souza
75b696f0b6 fix ts error 2024-04-24 11:42:58 -03:00
Ramón Souza
d1bb7b685e change audio button labels based on away status 2024-04-23 15:29:11 -03:00
Ramón Souza
cac0f6cd38 mute/unmute speaker 2024-04-23 11:01:59 -03:00
Ramón Souza
6fea058cb0 add new away button 2024-04-22 17:34:40 -03:00
Ramón Souza
5e45346934 disable away mode when microphone is unmuted 2024-04-22 14:50:51 -03:00
André Castro
58a0efe708
Migrate auth and settings to graphQL (#19507) 2024-03-06 14:28:18 -03:00
João Victor
fe0d46d607 remove unused import 2024-01-30 10:51:02 -03:00
João Victor
431511b8da migrate toggleVoice 2024-01-29 11:05:39 -03:00
Guilherme Pereira Leme
c8bea83de8
feat(plugin): refactor name of general exensible areas interface (#19467)
* [plugin-sdk-issue-62] - refactor general extensible area interface

* [plugin-sdk-issue-62] - refactor last components and bump SDK version
2024-01-23 17:34:50 -03:00
Anton Barboza de Sá
d30b806b47
test: Fix no-flaky tests and properly set the execution mode (#19436)
* test: fix shortcuts, add flaky flag for test requiring graphql data, fix slide change for tldraw v2

* test: properly set the execution mode

* test: use isMultiUser parameter inside options obj

* test: fix banner color test

* test: increase breakout test timeouts for user joining room

* test: redo the change in the hide presentation on join test

* test: change hide presentation steps and add flaky flag on it
2024-01-19 13:42:01 -03:00
Guilherme Pereira Leme
a6045656ce
feat(plugins): Ui Events (#19308)
* [plugin-sdk-ui-events] - useUiEvent hook

* [plugin-sdk-ui-events] - update dependency

* [plugin-sdk-ui-events] - update ts
2023-12-11 13:56:04 -03:00
Guilherme Pereira Leme
eb7adfb994
feat(plugins): code refactor for readability (#19222)
* [plugin-sdk-refactor-organization] - rearrange of files and folders (WIP)

* [plugin-sdk-refactor-organization ] - final touches

* [plugin-sdk-refactor-organization ] - fix

* [plugin-sdk-refactor-organization ] - update SDK
2023-11-28 15:31:28 -03:00
Guilherme Pereira Leme
93b8705af2
feature(html5): Change return type of the graphql data hook (#19103) 2023-11-13 15:10:41 -03:00
GuiLeme
1bb2713101 [plugin-sdk-microphone-dropdown] - changes in review 2023-09-25 18:22:02 -03:00
GuiLeme
a3842055d8 [plugin-sdk-microphone-dropdown] - change name to audioSettingsDropdown 2023-09-25 16:48:30 -03:00
GuiLeme
265304ba97 [plugin-sdk-microphone-dropdown] - merge upstream 2023-09-25 16:18:48 -03:00
imdt
5b0db5424a Fix: Mute button moving right 2023-09-22 10:56:01 -03:00
GuiLeme
79e9221ab8 [plugin-sdk-microphone-dropdown] - implemented the extensible area 2023-09-19 12:29:14 -03:00