@ -2,6 +2,7 @@
import { LIB _DID _DISPOSE , LIB _DID _INIT } from '../lib-jitsi-meet' ;
import {
CAMERA _FACING _MODE ,
MEDIA _TYPE ,
SET _AUDIO _MUTED ,
SET _CAMERA _FACING _MODE ,
@ -68,29 +69,23 @@ MiddlewareRegistry.register(store => next => action => {
case TOGGLE _CAMERA _FACING _MODE : {
const localTrack = _getLocalTrack ( store , MEDIA _TYPE . VIDEO ) ;
let jitsiTrack ;
let mediaStreamTrack ;
if ( localTrack
&& ( jitsiTrack = localTrack . jitsiTrack )
&& ( mediaStreamTrack = jitsiTrack . track ) ) {
// XXX MediaStreamTrack._switchCamera a custom function implemented
// in react-native-webrtc for video which switches between the
// cameras via a native WebRTC library implementation without making
// any changes to the track.
// FIXME JitsiLocalTrack defines getCameraFacingMode. By calling
// _switchCamera on MediaStreamTrack without the knowledge of
// lib-jitsi-meet we are likely introducing an inconsistency in
// JitsiLocalTrack's state.
mediaStreamTrack . _switchCamera ( ) ;
if ( localTrack && ( jitsiTrack = localTrack . jitsiTrack ) ) {
// XXX MediaStreamTrack._switchCamera is a custom function
// implemented in react-native-webrtc for video which switches
// between the cameras via a native WebRTC library implementation
// without making any changes to the track.
jitsiTrack . _switchCamera ( ) ;
// Don't mirror the video of the back/environment-facing camera.
// FIXME Relies on the fact that we always open the camera in
// user-facing mode first.
const mirror
= jitsiTrack . getCameraFacingMode ( ) === CAMERA _FACING _MODE . USER ;
store . dispatch ( {
type : TRACK _UPDATED ,
track : {
jitsiTrack ,
mirror : ! localTrack . mirror
mirror
}
} ) ;
}