diff --git a/react/features/blur/components/VideoBlurButton.js b/react/features/blur/components/VideoBlurButton.js index db734d70b..c2793506d 100644 --- a/react/features/blur/components/VideoBlurButton.js +++ b/react/features/blur/components/VideoBlurButton.js @@ -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 { _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 { * }} */ 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)); +