diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/component.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/component.jsx index 91871ea81f7ac0a5fca5b686124e39ca638c1813..bfd931fb6dcf0849b1d2e0d25cf99736d1ef2aa8 100755 --- a/bigbluebutton-html5/imports/ui/components/actions-bar/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/actions-bar/component.jsx @@ -27,6 +27,7 @@ class ActionsBar extends PureComponent { isMeteorConnected, isPollingEnabled, isSelectRandomUserEnabled, + isRaiseHandButtonEnabled, isPresentationDisabled, isThereCurrentPresentation, allowExternalVideo, @@ -84,30 +85,34 @@ class ActionsBar extends PureComponent { /> ) : null} - <Button - icon="hand" - label={intl.formatMessage({ - id: `app.actionsBar.emojiMenu.${ - currentUser.emoji === 'raiseHand' - ? 'lowerHandLabel' - : 'raiseHandLabel' - }`, - })} - accessKey={shortcuts.raisehand} - color={currentUser.emoji === 'raiseHand' ? 'primary' : 'default'} - data-test={currentUser.emoji === 'raiseHand' ? 'lowerHandLabel' : 'raiseHandLabel'} - ghost={currentUser.emoji !== 'raiseHand'} - className={cx(currentUser.emoji === 'raiseHand' || styles.btn)} - hideLabel - circle - size="lg" - onClick={() => { - setEmojiStatus( - currentUser.userId, - currentUser.emoji === 'raiseHand' ? 'none' : 'raiseHand', - ); - }} - /> + {isRaiseHandButtonEnabled + ? ( + <Button + icon="hand" + label={intl.formatMessage({ + id: `app.actionsBar.emojiMenu.${ + currentUser.emoji === 'raiseHand' + ? 'lowerHandLabel' + : 'raiseHandLabel' + }`, + })} + accessKey={shortcuts.raisehand} + color={currentUser.emoji === 'raiseHand' ? 'primary' : 'default'} + data-test={currentUser.emoji === 'raiseHand' ? 'lowerHandLabel' : 'raiseHandLabel'} + ghost={currentUser.emoji !== 'raiseHand'} + className={cx(currentUser.emoji === 'raiseHand' || styles.btn)} + hideLabel + circle + size="lg" + onClick={() => { + setEmojiStatus( + currentUser.userId, + currentUser.emoji === 'raiseHand' ? 'none' : 'raiseHand', + ); + }} + /> + ) + : null} </div> </div> ); diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/container.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/container.jsx index 26c232b3f462c5dfa1d131a01b73f5e4039c08aa..2b5420ebe839e05209811d90122b4396ce976033 100644 --- a/bigbluebutton-html5/imports/ui/components/actions-bar/container.jsx +++ b/bigbluebutton-html5/imports/ui/components/actions-bar/container.jsx @@ -38,6 +38,7 @@ const ActionsBarContainer = (props) => { const POLLING_ENABLED = Meteor.settings.public.poll.enabled; const PRESENTATION_DISABLED = Meteor.settings.public.layout.hidePresentation; const SELECT_RANDOM_USER_ENABLED = Meteor.settings.public.selectRandomUser.enabled; +const RAISE_HAND_BUTTON_ENABLED = Meteor.settings.public.app.raiseHandActionButton.enabled; export default withTracker(() => ({ amIPresenter: Service.amIPresenter(), @@ -55,6 +56,7 @@ export default withTracker(() => ({ isPollingEnabled: POLLING_ENABLED, isPresentationDisabled: PRESENTATION_DISABLED, isSelectRandomUserEnabled: SELECT_RANDOM_USER_ENABLED, + isRaiseHandButtonEnabled: RAISE_HAND_BUTTON_ENABLED, isThereCurrentPresentation: Presentations.findOne({ meetingId: Auth.meetingID, current: true }, { fields: {} }), allowExternalVideo: Meteor.settings.public.externalVideoPlayer.enabled, diff --git a/bigbluebutton-html5/private/config/settings.yml b/bigbluebutton-html5/private/config/settings.yml index ae0acc99ea575692bdb0fac7e81a5eb63aa64464..10bc805d1017e1f8c0a129bcd3bb7fce46d61a45 100755 --- a/bigbluebutton-html5/private/config/settings.yml +++ b/bigbluebutton-html5/private/config/settings.yml @@ -77,6 +77,8 @@ public: # For more info, see 'microphoneConstraints' option in this config. # If not set, default value is true. showAudioFilters: true + raiseHandActionButton: + enabled: true defaultSettings: application: animations: true