diff --git a/bigbluebutton-html5/imports/ui/components/actions-bar/component.jsx b/bigbluebutton-html5/imports/ui/components/actions-bar/component.jsx index 5499c0a1aac9018e60cf27b012b2392cd39213e9..3eaa5ac79d9b930ad8d5fdd1b2aaf5ea5df74c6a 100755 --- a/bigbluebutton-html5/imports/ui/components/actions-bar/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/actions-bar/component.jsx @@ -22,6 +22,7 @@ const TRANSLATION_SETTINGS = Meteor.settings.public.media.translation; const ORIGIN_TRANSLATION_VOLUME = TRANSLATION_SETTINGS.origineVolume; const TRANSLATOR_SPEAKING_DELAY = TRANSLATION_SETTINGS.translator.speakDetection.delay; const TRANSLATOR_SPEAKING_TIMEOUT = TRANSLATION_SETTINGS.translator.speakDetection.timeout; +const TRANSLATOR_SPEAKING_ENABLED = TRANSLATION_SETTINGS.translator.speakDetection.enabled; const intlMessages = defineMessages({ translatorMicrophoneLabel: { @@ -59,41 +60,43 @@ class ActionsBar extends PureComponent { componentDidMount() { - setInterval(() => { - const meeting = Meetings.findOne( - { meetingId: Auth.meetingID }, - { fields: { 'languages': 1 } }); + if (TRANSLATOR_SPEAKING_ENABLED) { + setInterval(() => { + const meeting = Meetings.findOne( + { meetingId: Auth.meetingID }, + { fields: { 'languages': 1 } }); - if (meeting.languages) { + if (meeting.languages) { - let mainaudio = document.getElementById("remote-media") - let transaudio = document.getElementById("translation-media") + let mainaudio = document.getElementById("remote-media") + let transaudio = document.getElementById("translation-media") - let result = false; - const languageExtension = AudioManager.translationLanguageExtension; - let meeting1 = meeting.languages.find(language => language.extension === languageExtension); - if (meeting1 !== undefined) { - if (meeting1.hasOwnProperty("translatorIsSpeaking")) { - result = meeting1.translatorIsSpeaking; - if (meeting1.hasOwnProperty("translatorSpeakingUtcTimestamp")) { - if (meeting1.translatorSpeakingUtcTimestamp + TRANSLATOR_SPEAKING_DELAY > Date.now() && !result) { - result = true; - } - if (meeting1.translatorSpeakingUtcTimestamp + TRANSLATOR_SPEAKING_TIMEOUT < Date.now()) { - result = false; + let result = false; + const languageExtension = AudioManager.translationLanguageExtension; + let meeting1 = meeting.languages.find(language => language.extension === languageExtension); + if (meeting1 !== undefined) { + if (meeting1.hasOwnProperty("translatorIsSpeaking")) { + result = meeting1.translatorIsSpeaking; + if (meeting1.hasOwnProperty("translatorSpeakingUtcTimestamp")) { + if (meeting1.translatorSpeakingUtcTimestamp + TRANSLATOR_SPEAKING_DELAY > Date.now() && !result) { + result = true; + } + if (meeting1.translatorSpeakingUtcTimestamp + TRANSLATOR_SPEAKING_TIMEOUT < Date.now()) { + result = false; + } } } } + if (result) { + mainaudio.volume = ORIGIN_TRANSLATION_VOLUME; + transaudio.volume = 1 + } else { + mainaudio.volume = 0.8 + } } - if (result) { - mainaudio.volume = ORIGIN_TRANSLATION_VOLUME; - transaudio.volume = 1 - } else { - mainaudio.volume = 0.8 - } - } - }, 500); - console.log("easy to find") + }, 500); + console.log("easy to find") + } } autoArrangeToggle() { @@ -150,6 +153,15 @@ class ActionsBar extends PureComponent { handleLanguageSelection(language){ this.state.translationLanguage = language AudioManager.openTranslationChannel(language.extension) + .then((languageExtension) => { + if (!TRANSLATOR_SPEAKING_ENABLED) { + if (languageExtension === -1) { + AudioManager.setOrigineOutputVolume(1.0); + } else { + AudioManager.setOrigineOutputVolume(ORIGIN_TRANSLATION_VOLUME); + } + } + }); this.setState(this.state) this.forceUpdate() } diff --git a/bigbluebutton-html5/imports/ui/services/audio-manager/index.js b/bigbluebutton-html5/imports/ui/services/audio-manager/index.js index 3140bd2227773587ee81b1f245d3cefcfcb3f579..b4ce2fb9569507e755be31075b2c1edcd6bce60e 100755 --- a/bigbluebutton-html5/imports/ui/services/audio-manager/index.js +++ b/bigbluebutton-html5/imports/ui/services/audio-manager/index.js @@ -672,7 +672,7 @@ class AudioManager { return audioAlert.play(); } - openTranslationChannel(languageExtension) { + async openTranslationChannel(languageExtension) { if(this.translationBridge.activeSession) { this.translationBridge.exitAudio() this.translationBridge.userData.languageExtension = -1; @@ -692,6 +692,9 @@ class AudioManager { }); }); this.translationBridge.userData.languageExtension = languageExtension; + return languageExtension; + } else { + return -1 } } diff --git a/bigbluebutton-html5/private/config/settings.yml b/bigbluebutton-html5/private/config/settings.yml index a5c2c64bc1102eb4fadfd6d84178eb44efc766ff..2e31f9ca4739b8fc591ef6f3f0c943c5e1eb4137 100755 --- a/bigbluebutton-html5/private/config/settings.yml +++ b/bigbluebutton-html5/private/config/settings.yml @@ -308,6 +308,7 @@ public: origineVolume: 0.8 translator: speakDetection: + enabled: true timeout: 60000 delay: 5000 threshold: -70