* no onAudioDeviceSelect
Signed-off-by: Timo K <toger5@hotmail.de>
* dont restart audio track on ios
Signed-off-by: Timo K <toger5@hotmail.de>
* skip syncing audio input on ios
Signed-off-by: Timo K <toger5@hotmail.de>
* dont pass audio capture defaults when muting unmuting
Signed-off-by: Timo K <toger5@hotmail.de>
* logging on set sink id
Signed-off-by: Timo K <toger5@hotmail.de>
* dont use controlled on ios
Signed-off-by: Timo K <toger5@hotmail.de>
* always show native button on ios
Signed-off-by: Timo K <toger5@hotmail.de>
* revert "dont use controlled on ios"
Signed-off-by: Timo K <toger5@hotmail.de>
* use "" instead of undefined for audio output default and on syncDevice + logging
Signed-off-by: Timo K <toger5@hotmail.de>
* use logger warn
Signed-off-by: Timo K <toger5@hotmail.de>
* dont ignore all sync logic
Signed-off-by: Timo K <toger5@hotmail.de>
* use "default" instead of ""
Signed-off-by: Timo K <toger5@hotmail.de>
* use non controlled audio output again
Signed-off-by: Timo K <toger5@hotmail.de>
* controlled with syncing but no output syncing
Signed-off-by: Timo K <toger5@hotmail.de>
* subscribe to available raw output in controlled case
Signed-off-by: Timo K <toger5@hotmail.de>
* simplification but same solution
Signed-off-by: Timo K <toger5@hotmail.de>
* try "mute with audio capture defaults" again
Signed-off-by: Timo K <toger5@hotmail.de>
* use current device for mute unmute
Signed-off-by: Timo K <toger5@hotmail.de>
* add back restart
Signed-off-by: Timo K <toger5@hotmail.de>
* use default device for unmute again
Signed-off-by: Timo K <toger5@hotmail.de>
* no defaults at all
Signed-off-by: Timo K <toger5@hotmail.de>
* device names request after unmute
Signed-off-by: Timo K <toger5@hotmail.de>
* another approach for mute state request
Signed-off-by: Timo K <toger5@hotmail.de>
* more comment
Signed-off-by: Timo K <toger5@hotmail.de>
* reduce changes and switch input device on sync device
Signed-off-by: Timo K <toger5@hotmail.de>
* more cleanup
Signed-off-by: Timo K <toger5@hotmail.de>
* fix lints
Signed-off-by: Timo K <toger5@hotmail.de>
---------
Signed-off-by: Timo K <toger5@hotmail.de>
* Add a global control for toggling earpiece mode
This will be used by Element X to show an earpiece toggle button in the header.
* Add an earpiece overlay
* Fix header
The header needs to be passed forward as a string to some components and as a bool (hideHeader) to others.
Also use a enum instead of string options.
* fix top clipping with header
* hide app bar in pip
* revert android overlay app_bar
* Modernize AppBarContext
* Style header icon color as desired and switch earpice/speaker icon
* fix initial selection when using controlled media
* Add "Back to video" button
* fix tests
* remove dead code
* add snapshot test
* fix back to video button
* Request capability to learn the room name
We now need the room name in order to implement the mobile (widget-based) designs with the app bar.
* Test the CallViewModel output switcher directly
---------
Co-authored-by: Timo <toger5@hotmail.de>
* bugfix: #3344 Reconnecting to the same SFU on membership change
* fixup! commit error
* Keep useActiveLivekitFocus from changing focus spuriously
* Remove redundant fix for spurious focus changes
We've now fixed it at the source by prohibiting state changes in useActiveLivekitFocus itself.
---------
Co-authored-by: Robin <robin@robin.town>
* Replace useContext with use
The docs recommend the use hook because it is simpler and allows itself to be called conditionally.
* Simplify our context providers
React 19 lets you omit the '.Provider' bit.
* Add `onBackButtonPressed` controls api
* Update docs/controls.md
Co-authored-by: Robin <robin@robin.town>
---------
Co-authored-by: Robin <robin@robin.town>
* Refactor media devices to live outside React as Observables
This moves the media devices state out of React to further our transition to a MVVM architecture in which we can more easily model and store complex application state. I have created an AppViewModel to act as the overarching state holder for any future non-React state we end up creating, and the MediaDevices reside within this. We should move more application logic (including the CallViewModel itself) there in the future.
* Address review feedback
* Fixes from ios debugging session: (#3342)
- dont use preferred vs selected concept in controlled media. Its not needed since we dont use the id for actual browser media devices (the id's are not even actual browser media devices)
- add more logging
- add more conditions to not accidently set a deviceId that is not a browser deviceId but one provided via controlled.
---------
Co-authored-by: Timo <16718859+toger5@users.noreply.github.com>