There's no rollback procedure in case a device switch fails right now,
nor does the code entrypoints that call the switching procedures wait
for resolution or failure before marking the new device as chosen. That
may cause inconsistent states in a couple of ways:
- No rollback: switch fails, audio is still on but no actual
microphone input is being transmitted
- Not waiting for resolutions: inconsistent chosen devices on failures
Device switching errors are also not surfaced to the end user
This commit:
- Adds device rollback and proper resolution/failure response
awaits to try and make the state a bit more consistent.
- Centralizes the input device switching code to be reused between
different bridges
- Centralizes device ID state management in audio-manager to try and
mantain them a bit more consistent across the board
- Surface device switching failures to the end user
- Guarantee device IDs are set to the session storage on all
appropriate scenarios
The talking-indicator, emoji-button and input-live-stream-selector
components are passing props downstream that weren't omitted or handled
by inherited components (Button, Icon). That causes a handful of error
logs to be spammed in the console of dev environments, which is
annoying.
This commit addresses the issue by:
- Making the talking, spoke, muted and isViewer props transient
(styled-components) - which means they won't reach the DOM (as
expected since they're style-only)
- Omitting the EmojiButton `rotate` prop in the Icon component itself
* Made that instead of transient because might be useful to migrate
the rotate code to the Icon component?
Move device selection dropdown to microphone button
Move option 'leave audio' to an option within the dropdown
Remove the audio exit button when device !== mobile
Removed trailing spaces in audio-controls/component.jsx
Fixed browser warning about required BBBMenu's onClick prop in
input-stream-live-selector/component.jsx
Fixed eslint warning "react/button-has-type" in ButtonEmoji.jsx
Fixed browser warning about not recognized hideLabel prop in ButtonEmoji.jsx
When mic is locked, user is not able to talk so it doesn't make sense
to alert the user about unmuting (mute button is also disabled when mic
is locked).
Closes#12048
This commit adds a new small button over the "Phone/audio" button. Currently
this button pops up the device audio selector, which contains the "Leave audio"
option. This commit brings back the "Leave audio" behavior to the phone
button, using a new smaller button to switch between audio devices.
This issue address the problem reported by #12320 and complements the work done
for #9723.
Some technical details:
Added a new component : ButtonEmoji. This allow us to add an emoji inside
another button.
Modified dropdown trigger a bit: if the trigger contains a ButtonEmoji,
then we will use the emoji to trigger the dropdown (instead of the button
itself). This commit doens't change the default behavior of dropdown (when
the trigger doesn't have a ButtonEmoji component), to avoid regressions with
current dropdowns; this will only change it's behavior when used with
the new ButtonEmoji component.
* adds unability to see screenshare button on mobile devices test specs
* simplify code in testMobileDevice()
* userlist and chat panels should not appear at page load in mobile devices
* lint
* updates outdated audio specs due to leaveAudio changes
* correct clicks on disconnectAudio elements
* whiteboard not visible on userlistPanel or on chatPanel
* reworks mobile devices/usersagents
* fixes screenshare mobile/tablet specs
* adds whiteboardNotAppearOnMobile spec
* adds Chat Panel specification to Mobile-Tablet specs
* simplify getArgs() functions for all devices