|
|
|
@ -6,6 +6,7 @@ import { IconBlurBackground } from '../../base/icons'; |
|
|
|
|
import { connect } from '../../base/redux'; |
|
|
|
|
import { AbstractButton } from '../../base/toolbox/components'; |
|
|
|
|
import type { AbstractButtonProps } from '../../base/toolbox/components'; |
|
|
|
|
import { isLocalCameraTrackMuted } from '../../base/tracks'; |
|
|
|
|
import { toggleBlurEffect } from '../actions'; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -18,6 +19,11 @@ type Props = AbstractButtonProps & { |
|
|
|
|
*/ |
|
|
|
|
_isVideoBlurred: boolean, |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Whether video is currently muted or not. |
|
|
|
|
*/ |
|
|
|
|
_videoMuted: boolean, |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The redux {@code dispatch} function. |
|
|
|
|
*/ |
|
|
|
@ -60,6 +66,17 @@ class VideoBlurButton extends AbstractButton<Props, *> { |
|
|
|
|
_isToggled() { |
|
|
|
|
return this.props._isVideoBlurred; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns {@code boolean} value indicating if disabled state is |
|
|
|
|
* enabled or not. |
|
|
|
|
* |
|
|
|
|
* @protected |
|
|
|
|
* @returns {boolean} |
|
|
|
|
*/ |
|
|
|
|
_isDisabled() { |
|
|
|
|
return this.props._videoMuted; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -73,9 +90,13 @@ class VideoBlurButton extends AbstractButton<Props, *> { |
|
|
|
|
* }} |
|
|
|
|
*/ |
|
|
|
|
function _mapStateToProps(state): Object { |
|
|
|
|
const tracks = state['features/base/tracks']; |
|
|
|
|
|
|
|
|
|
return { |
|
|
|
|
_isVideoBlurred: Boolean(state['features/blur'].blurEnabled) |
|
|
|
|
_isVideoBlurred: Boolean(state['features/blur'].blurEnabled), |
|
|
|
|
_videoMuted: isLocalCameraTrackMuted(tracks) |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
export default translate(connect(_mapStateToProps)(VideoBlurButton)); |
|
|
|
|
|
|
|
|
|