\n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=38743b5e&scoped=true\"\nimport script from \"./Navigation.vue?vue&type=script&lang=js\"\nexport * from \"./Navigation.vue?vue&type=script&lang=js\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=38743b5e&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"38743b5e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"ShareDialogue\",on:{\"click\":function($event){return _vm.toggleSharing()}}},[_c('div',{staticClass:\"sd-container\",on:{\"click\":function($event){return $event.stopPropagation()}}},[_c('h1',{staticClass:\"sd-text\"},[_vm._v(_vm._s(_vm.$t('Raum teilen')))]),_c('input',{staticClass:\"sd-link\",style:({'width': _vm.inputWidth}),attrs:{\"type\":\"text\",\"id\":\"roomlink\",\"readonly\":\"\"},domProps:{\"value\":_vm.roomLink}}),_c('md-button',{staticClass:\"md-icon-button md-primary sd-copy\",on:{\"click\":function($event){return _vm.copy('roomlink')}}},[_c('LinkVariantIcon')],1),_c('h1',{staticClass:\"sd-text\",staticStyle:{\"margin-top\":\"25px\"}},[_vm._v(_vm._s(_vm.$t('Tour teilen')))]),_c('input',{staticClass:\"sd-link\",style:({'width': _vm.inputWidth}),attrs:{\"type\":\"text\",\"id\":\"tourlink\",\"readonly\":\"\"},domProps:{\"value\":_vm.tourLink}}),_c('md-button',{staticClass:\"md-icon-button sd-copy\",on:{\"click\":function($event){return _vm.copy('tourlink')}}},[_c('LinkVariantIcon')],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n
\n
\n\n \n
{{ $t('Raum teilen') }}
\n \n \n \n \n\n \n
{{ $t('Tour teilen')}}
\n \n \n \n \n\n
\n \n
\n\n\n\n \n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareDialogue.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareDialogue.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ShareDialogue.vue?vue&type=template&id=9e10ec4e&scoped=true\"\nimport script from \"./ShareDialogue.vue?vue&type=script&lang=js\"\nexport * from \"./ShareDialogue.vue?vue&type=script&lang=js\"\nimport style0 from \"./ShareDialogue.vue?vue&type=style&index=0&id=9e10ec4e&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9e10ec4e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('md-list',{staticClass:\"ModeratorMenue\"},[_c('md-list-item',{class:{'mm-list-item-active': _vm.screenSharingVisible},on:{\"click\":function($event){_vm.toggleScreenSharing(); _vm.toggleModeratorMenue();}}},[_c('MonitorShareIcon',{staticClass:\"md-list-item-icon\"}),(!_vm.screenSharingVisible)?_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t('Bildschirm teilen')))]):_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t('Bildschirm teilen abbrechen')))])],1),_c('md-list-item',{class:{'mm-list-item-active': _vm.sendingFollowModerator},on:{\"click\":function($event){_vm.toggleFollowModeratorMode(); _vm.toggleModeratorMenue();}}},[_c('Eye',{staticClass:\"md-list-item-icon\"}),(!_vm.sendingFollowModerator)?_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t('Geführter Modus aktivieren')))]):_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t('Geführter Modus deaktivieren')))])],1),_c('md-list-item',{on:{\"click\":function($event){_vm.muteAll(); _vm.toggleModeratorMenue();}}},[_c('VolumeOff',{staticClass:\"md-list-item-icon\"}),_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t('Alle Teilnehmer stummschalten')))])],1),_c('md-list-item',{on:{\"click\":function($event){_vm.stopVideoAll(); _vm.toggleModeratorMenue();}}},[_c('VideoOff',{staticClass:\"md-list-item-icon\"}),_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t('Videos aller Teilnehmer ausstellen')))])],1),_c('md-list-item',{on:{\"click\":function($event){_vm.removeAll(); _vm.toggleModeratorMenue();}}},[_c('AccountOff',{staticClass:\"md-list-item-icon\"}),_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t('Alle Teilnehmer Entfernen')))])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n \n \n \n {{ $t('Bildschirm teilen') }}\n {{ $t('Bildschirm teilen abbrechen') }}\n \n\n \n \n \n {{ $t('Geführter Modus aktivieren') }}\n {{ $t('Geführter Modus deaktivieren') }}\n \n\n \n \n \n {{ $t('Alle Teilnehmer stummschalten') }}\n \n\n \n \n \n {{ $t('Videos aller Teilnehmer ausstellen') }}\n \n\n \n \n \n {{ $t('Alle Teilnehmer Entfernen') }}\n \n\n \n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModeratorMenu.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModeratorMenu.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ModeratorMenu.vue?vue&type=template&id=27889df1&scoped=true\"\nimport script from \"./ModeratorMenu.vue?vue&type=script&lang=js\"\nexport * from \"./ModeratorMenu.vue?vue&type=script&lang=js\"\nimport style0 from \"./ModeratorMenu.vue?vue&type=style&index=0&id=27889df1&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"27889df1\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.localUserIsModerator),expression:\"!localUserIsModerator\"}],staticClass:\"ScreenSharingPanel-Parent\",staticStyle:{\"width\":\"100%\",\"height\":\"100%\"}},[_c('div',{staticClass:\"ScreenSharingPanel\"},[_c('div',{staticClass:\"scs-container\"},[_c('div',{staticClass:\"scs-bar\"},[_c('p',{staticClass:\"scs-bar-name\"},[_vm._v(_vm._s(\"Bildschirmübertragung von \" + (_vm.localUserIsModerator ? _vm.localUserName : _vm.getUserName(_vm.videoStreams[0].connection.data.user_id))))]),_c('div',{staticClass:\"scs-bar-buttons\"},[_c('md-button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.localUserIsModerator),expression:\"localUserIsModerator\"}],staticClass:\"md-icon-button\",staticStyle:{\"margin-right\":\"0\"},on:{\"click\":function($event){return _vm.toggleScreenSharing()}}},[_c('CloseIcon',{staticClass:\"closeIcon\"})],1)],1)]),_c('div',{staticClass:\"scs-content\"},[(_vm.localUserIsModerator && !_vm.openTokStreams.find( x => x.videoType === 'screen'))?_c('FluxComPublisher',{attrs:{\"screencast\":\"\",\"opts\":_vm.publishingProperties,\"where\":\"video-session\"}}):_c('FluxComSubscriber',{attrs:{\"stream\":_vm.videoStreams[0],\"opts\":_vm.videoProperties(_vm.videoStreams[0])}})],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n
\n
\n
\n\n \n
\n
{{\"Bildschirmübertragung von \" + (localUserIsModerator ? localUserName : getUserName(videoStreams[0].connection.data.user_id))}}
\n
\n \n \n \n
\n
\n\n \n
\n x.videoType === 'screen')\"/> \n \n
\n\n
\n
\n
\n\n\n\n \n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScreenSharingPanel.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScreenSharingPanel.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ScreenSharingPanel.vue?vue&type=template&id=29a528b5&scoped=true\"\nimport script from \"./ScreenSharingPanel.vue?vue&type=script&lang=js\"\nexport * from \"./ScreenSharingPanel.vue?vue&type=script&lang=js\"\nimport style0 from \"./ScreenSharingPanel.vue?vue&type=style&index=0&id=29a528b5&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"29a528b5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"login-screen\"},[(!_vm.settingsVisible)?_c('div',{staticClass:\"layout\"},[_c('img',{staticClass:\"ld-logo\",attrs:{\"src\":_vm.publicPath+'/media/'+_vm.mediaURL+_vm.logoURL,\"alt\":\"\"}}),_c('div',{attrs:{\"id\":\"date\"}},[_vm._v(_vm._s(this.date))]),_c('md-tabs',{staticClass:\"md-accent\",staticStyle:{\"background\":\"transparent\",\"color\":\"transparent\"},attrs:{\"id\":\"login-tabs\",\"md-active-tab\":_vm.selectedTab,\"md-alignment\":\"fixed\"},on:{\"md-changed\":_vm.setTab}},[_c('md-tab',{staticStyle:{\"background\":\"transparent\",\"color\":\"transparent\"},attrs:{\"id\":\"visitor\",\"md-label\":_vm.$t('Gast')}},[_c('div',{staticClass:\"ld-content\"},[_c('md-field',[_c('input',{staticClass:\"ld-input\",attrs:{\"id\":\"nickname\",\"autocomplete\":\"off\",\"maxlength\":\"30\",\"required\":\"\",\"placeholder\":_vm.$t('Anzeigename')},on:{\"input\":function($event){return _vm.changeNickname()}}})])],1)]),_c('md-tab',{staticStyle:{\"background-color\":\"transparent\"},attrs:{\"id\":\"moderator\",\"md-label\":_vm.$t('Moderator')}},[_c('div',{staticClass:\"ld-content\"},[_c('div',{staticClass:\"ld-email-container\"},[_c('md-field',[_c('input',{staticClass:\"ld-input inline\",attrs:{\"id\":\"email\",\"autocomplete\":\"off\",\"type\":\"email\",\"required\":\"\",\"placeholder\":_vm.$t('Email')},on:{\"input\":function($event){return _vm.changeEmail()}}})])],1),_c('div',{staticClass:\"ld-password-container\"},[_c('md-field',[_c('input',{staticClass:\"ld-input inline\",attrs:{\"id\":\"password\",\"placeholder\":_vm.$t('Passwort'),\"type\":\"password\",\"required\":\"\"},on:{\"input\":function($event){return _vm.changePassword()}}})])],1)])])],1),_c('span',{staticClass:\"error\",attrs:{\"id\":\"login-error\"}}),_c('div',{staticClass:\"button-container\"},[(!_vm.enableWaitForModerator)?_c('md-button',{staticClass:\"normal-md-button\",staticStyle:{\"font-size\":\"16px\",\"height\":\"45px\",\"width\":\"80%\",\"margin-right\":\"20px\"},on:{\"click\":function($event){return _vm.cancel()}}},[_vm._v(_vm._s(_vm.$t('Abbrechen')))]):_vm._e(),_c('md-button',{staticClass:\"accent-md-button\",staticStyle:{\"font-size\":\"16px\",\"height\":\"45px\"},style:({width: _vm.enableWaitForModerator ? '100%' : '80%'}),attrs:{\"disabled\":!_vm.btnDisabled},on:{\"click\":function($event){return _vm.proceed()}}},[_vm._v(_vm._s(_vm.$t('Weiter')))])],1)],1):_c('AudioVideoDialogue',{attrs:{\"from\":'login',\"loginDialogueVisible\":this.loginDialogueVisible,\"settingsVisible\":this.settingsVisible,\"toggleLogin\":this.toggleLogin,\"toggleSettingsInLogin\":this.toggleSettings}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * Takes a string representing a name and turns it into initials.\n * @param name\n * @return {string}\n */\n export function getInitials(name){\n return name.split(\" \").map((n)=>n[0]).join(\"\").toUpperCase();\n}","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"audio-video-dialogue\"}},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.isLoading)?_c('div',{staticClass:\"audio-video-loading-screen\"},[_c('div',{staticClass:\"big-symbol-container\"},[_c('div',{staticClass:\"flux-animation-circle-one flux-animation-circle\"}),_c('div',{staticClass:\"flux-animation-circle-two flux-animation-circle\"}),_c('div',{staticClass:\"flux-animation-circle-three flux-animation-circle\"})])]):_vm._e()]),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.problemDialogVisible)?_c('TroubleShooting',{attrs:{\"toggleProblemDialog\":_vm.toggleProblemDialog}}):_vm._e()],1),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.ConnectionTestVisible)?_c('ConnectionTest',{attrs:{\"toggleConnectionTest\":this.toggleConnectionTest,\"audioDeviceId\":this.audioDeviceId,\"videoDeviceId\":this.videoDeviceId,\"signIn\":this.signIn}}):_vm._e()],1),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.audioTestDialogVisible)?_c('AudioTest',{attrs:{\"toggleAudioTestDialogue\":_vm.toggleAudioTestDialogue}}):_vm._e()],1),_c('div',{staticClass:\"audio-video-content\"},[_c('div',{staticClass:\"avd-title\"},[_vm._v(_vm._s(_vm.$t('Mikrofon- und Kameraeinstellungen')))]),_c('div',{staticClass:\"avd-content-left\"},[_c('div',{attrs:{\"id\":\"video-container\"}},[(_vm.videoDeviceList.length === 0 || !_vm.videoOn || !_vm.publisher)?_c('div',{staticClass:\"camera-placeholder\"},[_c('img',{staticClass:\"user-badge badge\",attrs:{\"src\":this.localUser.getUserIcon()}}),_c('div',{staticClass:\"user-badge-audio badge\",style:({'background-color':_vm.getUserColor(this.localUser)}),attrs:{\"id\":\"local-user-badge\"}})]):_vm._e(),((_vm.videoDeviceId || _vm.audioDeviceId) && !_vm.isLoading)?_c('FluxComPublisher',{attrs:{\"hidden\":!_vm.videoOn,\"id\":\"publisher-container\",\"where\":\"audio-video-dialogue\",\"opts\":_vm.publisherAndSubscriberProperties}}):_vm._e()],1),_c('md-button',{staticClass:\"normal-md-button avd-audiotest\",on:{\"click\":function($event){return _vm.toggleAudioTestDialogue()}}},[_vm._v(_vm._s(_vm.$t('Audiotest')))])],1),_c('div',{staticClass:\"avd-content-right\"},[_c('div',{staticClass:\"settings-section\"},[(!_vm.isLoading)?_c('div',{staticClass:\"error-access-denied\"},[(_vm.errors.cameraPermissionDenied)?_c('div',{staticClass:\"error-access-denied-content\"},[_vm._v(\" \"+_vm._s(_vm.$t('Browser-Zugriff auf Ihre Kamera wurde nicht erlaubt. Klicken Sie'))+\" \"),_c('span',{staticClass:\"error-access-denied-button\",on:{\"click\":function($event){return _vm.askForPermission()}}},[_vm._v(_vm._s(_vm.$t('hier')))]),_vm._v(\" \"+_vm._s(_vm.$t(', um nach dem Zugriff gefragt zu werden.'))+\" \")]):_vm._e(),(_vm.videoDeviceList.length === 0 && !_vm.errors.cameraPermissionDenied)?_c('div',{staticClass:\"error-access-denied-content\"},[_vm._v(_vm._s(_vm.$t('Es wurde keine Kamera erkannt'))+\".\")]):_vm._e()]):_vm._e(),_c('div',{staticClass:\"avd-switch-container\"},[_c('span',{staticClass:\"subheading\"},[_vm._v(_vm._s(_vm.$t('Kamera'))+\":\")]),_c('md-switch',{staticClass:\"avd-switch\",attrs:{\"disabled\":!_vm.publisher || !_vm.hasVideo},model:{value:(_vm.videoOn),callback:function ($$v) {_vm.videoOn=$$v},expression:\"videoOn\"}})],1),_c('div',[_c('select',{attrs:{\"id\":\"video-selection\",\"disabled\":_vm.videoDeviceList.length === 0 || !_vm.videoOn},on:{\"change\":function($event){return _vm.saveDeviceIds();}}},_vm._l((_vm.videoDeviceList),function(video){return _c('option',{domProps:{\"value\":video.deviceId}},[_vm._v(_vm._s(_vm.getLabelForDevice(video)))])}),0),_c('md-button',{staticClass:\"normal-md-button renew\",attrs:{\"disabled\":_vm.videoDeviceList.length === 0 || !_vm.videoOn},on:{\"click\":_vm.updateDeviceLists}},[_c('Autorenew')],1)],1)]),_c('div',{staticClass:\"settings-section\"},[(!_vm.isLoading)?_c('div',{staticClass:\"error-access-denied\"},[(_vm.errors.microphonePermissionDenied)?_c('div',{staticClass:\"error-access-denied-content\"},[_vm._v(\" \"+_vm._s(_vm.$t('Browser-Zugriff auf Ihr Mikrofon wurde nicht erlaubt. Klicken Sie'))+\" \"),_c('span',{staticClass:\"error-access-denied-button\",on:{\"click\":function($event){return _vm.askForPermission()}}},[_vm._v(_vm._s(_vm.$t('hier')))]),_vm._v(\" \"+_vm._s(_vm.$t(', um nach dem Zugriff gefragt zu werden.'))+\" \")]):_vm._e(),(_vm.videoDeviceList.length === 0 && !_vm.errors.microphonePermissionDenied)?_c('div',{staticClass:\"error-access-denied-content\"},[_vm._v(_vm._s(_vm.$t('Es wurde keine Mikrofon erkannt'))+\".\")]):_vm._e()]):_vm._e(),_c('div',{staticClass:\"avd-switch-container\"},[_c('span',{staticClass:\"subheading\"},[_vm._v(_vm._s(_vm.$t('Mikrofon'))+\":\")]),_c('md-switch',{staticClass:\"avd-switch\",attrs:{\"disabled\":!_vm.publisher || !_vm.hasAudio},model:{value:(_vm.audioOn),callback:function ($$v) {_vm.audioOn=$$v},expression:\"audioOn\"}})],1),_c('div',[_c('select',{attrs:{\"id\":\"audio-selection\",\"disabled\":_vm.audioDeviceList.length === 0 || !_vm.audioOn},on:{\"change\":function($event){return _vm.saveDeviceIds();}}},_vm._l((_vm.audioDeviceList),function(audio){return _c('option',{domProps:{\"value\":audio.deviceId}},[_vm._v(_vm._s(_vm.getLabelForDevice(audio)))])}),0),_c('md-button',{staticClass:\"normal-md-button renew\",attrs:{\"disabled\":_vm.audioDeviceList.length === 0 || !_vm.audioOn},on:{\"click\":_vm.updateDeviceLists}},[_c('Autorenew')],1)],1),_c('meter',{attrs:{\"id\":\"audio-meter\",\"high\":\"1\",\"low\":\"0.2\",\"optimum\":\"0.8\",\"value\":\"0\",\"min\":\"0\",\"max\":\"1\"}})])]),(_vm.from === 'login')?_c('div',{staticClass:\"avd-button-container\"},[_c('md-button',{staticClass:\"accent-md-button avd-login-button\",on:{\"click\":function($event){_vm.saveDeviceIds(); _vm.signIn()}}},[_vm._v(\" \"+_vm._s(_vm.$t('Jetzt teilnehmen'))+\" \")]),_c('div',{staticStyle:{\"padding-bottom\":\"20px\"}},[_c('md-button',{staticClass:\"normal-md-button avd-troubleshooting-button\",attrs:{\"id\":\"problem-button\"},on:{\"click\":_vm.toggleProblemDialog}},[_c('AlertCircle'),_c('div',{staticClass:\"avd-button-text\"},[_vm._v(_vm._s(_vm.$t('Problembehandlung')))])],1),_c('md-button',{staticClass:\"normal-md-button avd-connectiontest-button\",class:{disabled: !_vm.videoDeviceId && !_vm.audioDeviceId},attrs:{\"id\":\"connection-test-button\"},on:{\"click\":function($event){_vm.saveDeviceIds(); _vm.toggleConnectionTest();}}},[_c('Wifi'),_c('div',{staticClass:\"avd-button-text\"},[_vm._v(_vm._s(_vm.$t('Verbindungstest')))])],1)],1)],1):_vm._e()])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"TroubleShooting\",on:{\"click\":function($event){return _vm.toggleProblemDialog()}}},[_c('div',{staticClass:\"tr-container\",on:{\"click\":function($event){return $event.stopPropagation()}}},[_c('div',{staticClass:\"tr-wrapper\"},[_c('div',{staticClass:\"ts-title\"},[_vm._v(_vm._s(_vm.$t('Problembehandlung')))]),_c('md-list',{attrs:{\"md-expand-single\":true}},[_c('md-list-item',{attrs:{\"md-expand\":\"\"}},[_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t('Ich höre niemanden')))]),_c('md-list',{attrs:{\"slot\":\"md-expand\",\"md-expand-single\":true},slot:\"md-expand\"},[_c('md-list',{staticClass:\"sub-list\",attrs:{\"md-expand-single\":true}},[_c('md-list-item',{attrs:{\"md-expand\":\"\"}},[_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t('Das Standardkommunikationsgerät umstellen (Windows 10)')))]),_c('md-list',{attrs:{\"slot\":\"md-expand\",\"md-expand-single\":true},slot:\"md-expand\"},[_c('md-list-item',{staticClass:\"md-inset\"},[_c('div',{staticClass:\"solution-description\"},[_vm._v(\" \"+_vm._s(_vm.$t(`Öffnen Sie die Soundeinstellungen (am besten direkt in die Suche eingeben). Scrollen Sie nach unten, bis Sie zur Überschrift \"Verwandte Einstellungen\" gelangen. Darunter klicken Sie auf \"Sound-Systemsteuerung\". Es öffnet sich ein kleines Fenster, in dem verschiedene Ausgabegeräte zu sehen sind. Machen Sie einen Rechtsklick auf das Gerät, das Sie verwenden möchten und klicken Sie dann auf \"Als Standardkommunikationsgerät auswählen\". Nun sollte das korrekte Gerät für die Ausgabe verwendet werden.`))+\" \")])])],1)],1)],1)],1)],1),_c('md-list-item',{attrs:{\"md-expand\":\"\"}},[_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t(`Ich höre Echogeräusche`)))]),_c('md-list',{attrs:{\"slot\":\"md-expand\",\"md-expand-single\":true},slot:\"md-expand\"},[_c('md-list',{staticClass:\"sub-list\",attrs:{\"md-expand-single\":true}},[_c('md-list-item',{attrs:{\"md-expand\":\"\"}},[_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t(`Ein Headset verwenden`)))]),_c('md-list',{attrs:{\"slot\":\"md-expand\",\"md-expand-single\":true},slot:\"md-expand\"},[_c('md-list-item',{staticClass:\"md-inset\"},[_c('div',{staticClass:\"solution-description\"},[_vm._v(\" \"+_vm._s(_vm.$t(`Wenn Sie ein Notebook oder ein ähnliches Gerät verwenden, kann es sein, dass der Lautsprecher und das Mikrofon zu nah beieinander sind und der Ton aus dem Lautsprecher direkt vom Mikrofon aufgenommen wird. Dadurch hört Ihr Gegenüber die eigene Stimme, was es schwieriger macht, sich auf das Gespräch zu konzentrieren. Wenn dies der Fall ist, schießen Sie bitte ein Headset an.`))+\" \")])])],1)],1),_c('md-list-item',{attrs:{\"md-expand\":\"\"}},[_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t(`Nur ein Mikrofon und einen Lautsprecher pro Raum verwenden`)))]),_c('md-list',{attrs:{\"slot\":\"md-expand\",\"md-expand-single\":true},slot:\"md-expand\"},[_c('md-list-item',{staticClass:\"md-inset\"},[_c('div',{staticClass:\"solution-description\"},[_vm._v(\" \"+_vm._s(_vm.$t(`Wenn Sie mit weiteren Personen an einer Tour teilnehmen und sich diese Personen im selben Raum befinden wie Sie, kann es sein, dass das ihre Stimme mehrmals aufgenommen wird und Echo Geräusche entstehen. Achten Sie daher darauf, dass nur ein Microfon aktiviert ist oder die Personen weitgenug auseinander sitzen.`))+\" \")])])],1)],1)],1)],1)],1),_c('md-list-item',{attrs:{\"md-expand\":\"\"}},[_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t(`Meine Kamera/Mikrofon wird nicht erkannt`)))]),_c('md-list',{attrs:{\"slot\":\"md-expand\",\"md-expand-single\":true},slot:\"md-expand\"},[_c('md-list',{staticClass:\"sub-list\",attrs:{\"md-expand-single\":true}},[_c('md-list-item',{attrs:{\"md-expand\":\"\"}},[_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t(`Erlauben Sie den Zugriff`)))]),_c('md-list',{attrs:{\"slot\":\"md-expand\",\"md-expand-single\":true},slot:\"md-expand\"},[_c('md-list-item',{staticClass:\"md-inset\"},[_c('div',{staticClass:\"solution-description\"},[_vm._v(\" \"+_vm._s(_vm.$t(`Beim Öffnen der Mikrofon- und Kameraeinstellungen fragt der Browser nach dem Zugriff auf Ihre Mikrofone und Kameras. Ohne Ihre Erlaubnis kann die Anwendung ihre Kamera und Mikrofon nicht nutzen. Überprüfen Sie die Mikrofon- und Kameraeinstellungen ihres Browsers, falls Sie nicht nach dem Zugriff gefragt werden.`))+\" \")])])],1)],1),_c('md-list-item',{attrs:{\"md-expand\":\"\"}},[_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t(`Ändern Sie die Datenschutzeinstellungen`)))]),_c('md-list',{attrs:{\"slot\":\"md-expand\",\"md-expand-single\":true},slot:\"md-expand\"},[_c('md-list-item',{staticClass:\"md-inset\"},[_c('div',{staticClass:\"solution-description\"},[_vm._v(\" \"+_vm._s(_vm.$t(`Ihr Betriebssystem kann dem Browser den generellen Zugriff auf die Kamera und Mikrofon blockieren. Überprüfen sie die Datenschutzeinstellungen ihres Betriebssystemes, und erlauben Sie ihrem Browser ggf. Zugriff!`))+\" \")])])],1)],1),_c('md-list-item',{attrs:{\"md-expand\":\"\"}},[_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t(`Kamera/Mikrofon wird bereits genutzt`)))]),_c('md-list',{attrs:{\"slot\":\"md-expand\",\"md-expand-single\":true},slot:\"md-expand\"},[_c('md-list-item',{staticClass:\"md-inset\"},[_c('div',{staticClass:\"solution-description\"},[_vm._v(\" \"+_vm._s(_vm.$t(`Es könnte sein, dass andere Anwendungen wie Microsoft Teams oder ein anderer geöffneter Browser bereits Kamera oder Mikrofon nutzen. Stellen Sie sicher, das ihre Kamera nicht von anderen Anwendungen genutzt wird und schließen Sie diese Anwendungen gegebenenfalls.`))+\" \")])])],1)],1)],1)],1)],1),_c('md-list-item',{attrs:{\"md-expand\":\"\"}},[_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t(`Beim Audiotest wird meine Audio nicht übertragen`)))]),_c('md-list',{attrs:{\"slot\":\"md-expand\",\"md-expand-single\":true},slot:\"md-expand\"},[_c('md-list',{staticClass:\"sub-list\",attrs:{\"md-expand-single\":true}},[_c('md-list-item',{attrs:{\"md-expand\":\"\"}},[_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t(`Die Firewall-Einstellungen anpassen`)))]),_c('md-list',{attrs:{\"slot\":\"md-expand\",\"md-expand-single\":true},slot:\"md-expand\"},[_c('md-list-item',{staticClass:\"md-inset\"},[_c('div',{staticClass:\"solution-description\"},[_vm._v(\" \"+_vm._s(_vm.$t(`Zur Kommunikation mit dem Server ist es notwendig, dass Sie den TCP Port 443 freigeben. Wenn Sie eine Whitelist für Domains pflegen, ist es außerdem wichtig, dass Sie die Domains \"*.tokbox.com\" und \"*.opentok.com\" (ohne Anführungszeichen) in die Liste einfügen.`))+\" \")])])],1)],1),_c('md-list-item',{attrs:{\"md-expand\":\"\"}},[_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t(`Die Proxy-Einstellungen anpassen`)))]),_c('md-list',{attrs:{\"slot\":\"md-expand\",\"md-expand-single\":true},slot:\"md-expand\"},[_c('md-list-item',{staticClass:\"md-inset\"},[_c('div',{staticClass:\"solution-description\"},[_vm._v(\" \"+_vm._s(_vm.$t(`Am besten funktioniert der Videochat ohne einen Proxy. Wenn Sie ohne Proxy keinen Zugang zum Internet haben, sollten Sie einen transparenten Proxy verwenden oder den Proxy im Browser für HTTPS-Verbindungen konfigurieren.`))+\" \")])])],1)],1)],1)],1)],1),_c('md-list-item',{attrs:{\"md-expand\":\"\"}},[_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t(`Sonstiges`)))]),_c('md-list',{attrs:{\"slot\":\"md-expand\",\"md-expand-single\":true},slot:\"md-expand\"},[_c('md-list',{staticClass:\"sub-list\",attrs:{\"md-expand-single\":true}},[_c('md-list-item',{attrs:{\"md-expand\":\"\"}},[_c('span',{staticClass:\"md-list-item-text\"},[_vm._v(_vm._s(_vm.$t(`Unterstützte Browser`)))]),_c('md-list',{attrs:{\"slot\":\"md-expand\",\"md-expand-single\":true},slot:\"md-expand\"},[_c('md-list-item',{staticClass:\"md-inset\"},[_c('div',{staticClass:\"solution-description\"},[_vm._v(\" \"+_vm._s(_vm.$t(`Am besten wird die Anwendung von den Browsern Firefox, Chrome, Safari, Opera und Edge unterstützt. Achten Sie bitte darauf, dass Sie die jeweils aktuelle Version installiert haben und aktualisieren Sie diese ggf. manuel, da die Browser dies nicht immer automatisch tun.`))+\" \")])])],1)],1)],1)],1)],1)],1)],1),_c('md-button',{staticClass:\"normal-md-button\",staticStyle:{\"margin-top\":\"15px\",\"width\":\"150px\",\"height\":\"45px\"},on:{\"click\":function($event){return _vm.toggleProblemDialog();}}},[_vm._v(_vm._s(_vm.$t('Zurück')))])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n
\n {{ $t(`Öffnen Sie die Soundeinstellungen \n (am besten direkt in die Suche eingeben). Scrollen Sie nach unten, bis Sie zur Überschrift \"Verwandte Einstellungen\"\n gelangen. Darunter klicken Sie auf \"Sound-Systemsteuerung\". Es öffnet sich ein kleines Fenster, in dem verschiedene\n Ausgabegeräte zu sehen sind. Machen Sie einen Rechtsklick auf das Gerät, das Sie verwenden möchten und klicken\n Sie dann auf \"Als Standardkommunikationsgerät auswählen\". Nun sollte das korrekte Gerät für die Ausgabe verwendet\n werden.`) }} \n
\n {{ $t(`Wenn Sie ein Notebook oder ein ähnliches Gerät verwenden, kann es sein, dass der Lautsprecher und das\n Mikrofon zu nah beieinander sind und der Ton aus dem Lautsprecher direkt vom Mikrofon aufgenommen wird.\n Dadurch hört Ihr Gegenüber die eigene Stimme, was es schwieriger macht, sich auf das Gespräch zu\n konzentrieren. Wenn dies der Fall ist, schießen Sie bitte ein Headset an.`) }} \n
\n \n \n \n\n \n {{ $t(`Nur ein Mikrofon und einen Lautsprecher pro Raum verwenden`) }}\n \n \n
\n {{ $t(`Wenn Sie mit weiteren Personen an einer Tour teilnehmen und sich diese Personen im selben Raum\n befinden wie Sie, kann es sein, dass das ihre Stimme mehrmals aufgenommen wird und Echo Geräusche entstehen. \n Achten Sie daher darauf, dass nur ein Microfon aktiviert ist oder die Personen weitgenug auseinander sitzen.`) }} \n
\n \n \n \n \n \n \n\n \n \n {{ $t(`Meine Kamera/Mikrofon wird nicht erkannt`) }}\n \n \n \n {{ $t(`Erlauben Sie den Zugriff`) }}\n \n \n
\n {{ $t(`Beim Öffnen der Mikrofon- und Kameraeinstellungen fragt der Browser nach dem Zugriff auf Ihre\n Mikrofone und Kameras. Ohne Ihre Erlaubnis kann die Anwendung ihre Kamera und Mikrofon nicht nutzen.\n Überprüfen Sie die Mikrofon- und Kameraeinstellungen ihres Browsers, falls Sie nicht nach dem Zugriff gefragt werden.`) }} \n
\n \n \n \n\n \n {{ $t(`Ändern Sie die Datenschutzeinstellungen`) }}\n \n \n
\n {{ $t(`Ihr Betriebssystem kann dem Browser den generellen Zugriff auf die Kamera und Mikrofon blockieren. \n Überprüfen sie die Datenschutzeinstellungen ihres Betriebssystemes, und erlauben Sie ihrem Browser ggf. Zugriff!`) }} \n
\n \n \n \n\n \n {{ $t(`Kamera/Mikrofon wird bereits genutzt`) }}\n \n \n
\n {{ $t(`Es könnte sein, dass andere Anwendungen wie Microsoft Teams oder ein anderer geöffneter Browser bereits Kamera oder Mikrofon nutzen. \n Stellen Sie sicher, das ihre Kamera nicht von anderen Anwendungen genutzt wird und schließen Sie diese Anwendungen gegebenenfalls.`) }}\n
\n {{ $t(`Zur Kommunikation mit dem Server ist es notwendig, dass Sie den TCP Port 443 freigeben. Wenn Sie eine\n Whitelist für Domains pflegen, ist es außerdem wichtig, dass Sie die Domains \"*.tokbox.com\" und\n \"*.opentok.com\" (ohne Anführungszeichen) in die Liste einfügen.`) }}\n
\n {{ $t(`Am besten funktioniert der Videochat ohne einen Proxy. Wenn Sie ohne Proxy keinen Zugang zum Internet\n haben, sollten Sie einen transparenten Proxy verwenden oder den Proxy im Browser für HTTPS-Verbindungen\n konfigurieren.`) }}\n
\n {{ $t(`Am besten wird die Anwendung von den Browsern Firefox, Chrome, Safari, Opera und Edge unterstützt. Achten Sie bitte\n darauf, dass Sie die jeweils aktuelle Version installiert haben und aktualisieren Sie diese ggf. manuel, da die Browser dies nicht immer automatisch tun.`) }}\n
\n \n \n \n \n \n \n\n \n
\n {{$t('Zurück')}}\n
\n
\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TroubleShooting.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TroubleShooting.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TroubleShooting.vue?vue&type=template&id=22736b90&scoped=true\"\nimport script from \"./TroubleShooting.vue?vue&type=script&lang=js\"\nexport * from \"./TroubleShooting.vue?vue&type=script&lang=js\"\nimport style0 from \"./TroubleShooting.vue?vue&type=style&index=0&id=22736b90&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"22736b90\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"TestResults\",on:{\"click\":function($event){return _vm.toggleConnectionTest()}}},[_c('div',{staticClass:\"tr-container\",on:{\"click\":function($event){return $event.stopPropagation()}}},[_c('h1',{staticClass:\"tr-title\"},[_vm._v(_vm._s(_vm.$t('Verbindungstest')))]),_c('div',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.connectionTest == null),expression:\"connectionTest == null\"}],staticClass:\"tr-waiting\"},[_vm._v(_vm._s(_vm.$t('Ihre Verbindung wird überprüft'))+\"...\")]),(_vm.connectionTest == 'success')?_c('div',{staticClass:\"tr-success\"},[_vm._v(_vm._s(_vm.$t('Der Verbindungsaufbau war erfolgreich')))]):_vm._e(),(_vm.connectionTest == 'failed')?_c('div',[_c('div',{staticClass:\"tr-failed\"},[_vm._v(_vm._s(_vm.$t('Der Verbindungsaufbau war nicht erfolgreich')))]),_c('div',[_vm._v(_vm._s(_vm.$t('Folgende Fehler sind aufgetreten:')))]),_vm._l((this.connectionResult.failedTests),function(failedTest){return _c('tbody',{key:failedTest.error.message},[_c('td',[_vm._v(_vm._s(failedTest.error.message))])])})],2):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.qualityTest == null),expression:\"qualityTest == null\"}],staticClass:\"tr-waiting\"},[_vm._v(_vm._s(_vm.$t('Ihre Verbindungsqualität wird überprüft'))+\"...\")]),(_vm.qualityTest == 'success')?_c('div',[_c('div',{staticClass:\"tr-success\"},[_vm._v(_vm._s(_vm.$t('Die Überprüfung ihrer Verbindungsqualität war erfolgreich')))]),_c('div',[_vm._v(_vm._s(_vm.$t('Ergebniss des Tests:')))]),_c('table',[_c('div',{staticClass:\"tr-table\"},[(this.qualityResult.video.supported === true)?_c('tbody',[_vm._m(0),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.$t('Qualität'))+\":\")]),_c('td',[_vm._v(_vm._s(this.qualityResult.video.mos.toFixed(1))+\" / 4.5\")])]),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.$t('Durchschnittliche Bitrate'))+\":\")]),_c('td',[_vm._v(_vm._s(this.qualityResult.video.bitrate.toFixed(0))+\" kbps\")])]),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.$t('Durchschnittliche Framerate'))+\":\")]),_c('td',[_vm._v(_vm._s(this.qualityResult.video.frameRate.toFixed(0))+\" fps\")])]),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.$t('Verlustrate der Pakete'))+\":\")]),_c('td',[_vm._v(_vm._s(this.qualityResult.video.packetLossRatio.toFixed(2))+\"%\")])])]):_vm._e()]),_c('div',{staticClass:\"tr-table\"},[(this.qualityResult.video.supported === false)?_c('tbody',[_vm._m(1),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.$t('Fehler bei der Video Übertragung:')))]),_c('td',[_vm._v(_vm._s(this.qualityResult.video.reason))])])]):_vm._e()]),_c('div',{staticClass:\"tr-table\"},[(this.qualityResult.audio.supported === true)?_c('tbody',[_vm._m(2),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.$t('Qualität'))+\":\")]),_c('td',[_vm._v(_vm._s(this.qualityResult.audio.mos.toFixed(1))+\" / 4.5\")])]),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.$t('Durchschnittliche Bitrate'))+\":\")]),_c('td',[_vm._v(_vm._s(this.qualityResult.audio.bitrate.toFixed(0))+\" kbps\")])]),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.$t('Verlustrate der Pakete'))+\":\")]),_c('td',[_vm._v(_vm._s(this.qualityResult.audio.packetLossRatio.toFixed(2))+\"%\")])])]):_vm._e()]),_c('div',{staticClass:\"tr-table\"},[(this.qualityResult.audio.supported === false)?_c('tbody',[_vm._m(3),_c('tr',[_c('td',[_vm._v(_vm._s(_vm.$t('Fehler bei der Audio Übertragung:')))]),_c('td',[_vm._v(_vm._s(this.qualityResult.audio.reason))])])]):_vm._e()])])]):_vm._e(),(_vm.qualityTest == 'failed')?_c('div',[_c('div',{staticClass:\"tr-failed\"},[_vm._v(_vm._s(_vm.$t('Der Qualitäts Test konnte nicht durchgeführt werden!')))]),_c('div',[_vm._v(\"F\"+_vm._s(_vm.$t('Folgender Fehler ist aufgetreten:')))]),_c('tbody',[_c('td',[_vm._v(_vm._s(this.qualityError))])])]):_vm._e(),_c('div',{staticClass:\"tr-buttons\"},[(_vm.qualityTest != null && _vm.connectionTest != null)?_c('md-button',{staticClass:\"normal-md-button\",staticStyle:{\"background-color\":\"rgb(50, 50, 50)\"},on:{\"click\":function($event){return _vm.repeatTest()}}},[_vm._v(\" \"+_vm._s(_vm.$t('Test Wiederholen'))+\" \")]):_vm._e(),(_vm.qualityTest == null || _vm.connectionTest == null)?_c('md-button',{staticClass:\"normal-md-button\",staticStyle:{\"background-color\":\"rgb(50, 50, 50)\"},on:{\"click\":function($event){return _vm.toggleConnectionTest();}}},[_vm._v(\" \"+_vm._s(_vm.$t('Abbrechen'))+\" \")]):_vm._e(),(_vm.qualityTest != null && _vm.connectionTest != null)?_c('md-button',{staticClass:\"accent-md-button\",staticStyle:{\"margin-left\":\"5px\",\"background-color\":\"var(--primaryColor)\"},on:{\"click\":function($event){return _vm.toggleConnectionTest();}}},[_vm._v(\" \"+_vm._s(_vm.$t('Fertig'))+\" \")]):_vm._e()],1)])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('tr',[_c('th',{attrs:{\"colspan\":\"2\"}},[_vm._v(\"Video\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('tr',[_c('th',{attrs:{\"colspan\":\"2\"}},[_vm._v(\"Video\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('tr',[_c('th',{attrs:{\"colspan\":\"2\"}},[_vm._v(\"Audio\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('tr',[_c('th',{attrs:{\"colspan\":\"2\"}},[_vm._v(\"Audio\")])])\n}]\n\nexport { render, staticRenderFns }","//\n// Module for communicating with Raumtaenzer's backend services\n//\n\nconst rp = require('request-promise').defaults({jar: true})\n// import * as rp from 'request-promise';\n\nconst CMS_BASE_URL = \"https://rt-ar-app.ar-cms.de\"\nconst CALLSERVICE_URL = \"https://flux-360-call-server.ar-cms.de:443\" // \"https://flux-360-call-server.ar-cms.de:8002\"\n\n/**\n * Take uri as relative path and return complete url to\n * CMS backend.\n * @param uri\n */\nexport function cmsUrl (uri) {\n return `${CMS_BASE_URL}${uri}`;\n}\n\n/**\n * Make a request asynchronously.\n *\n * @param options\n * @logToConsole {boolean} Log request to console? Defaults to true\n * @return {Promise<*>}\n */\nasync function makeRequest (options, logToConsole = true) {\n if (logToConsole) {\n console.debug(`Making request ${JSON.stringify(options, null)}`);\n }\n let res = null;\n try {\n res = await rp(options);\n } catch(e ) {\n // Safari is always throwing type errors when connecting the ar-cms\n console.log(\"Error: \" + e);\n }\n if (logToConsole) {\n console.debug(`Received response ${JSON.stringify(res, null)}`);\n }\n return res;\n}\n\n/**\n * Take the given json response and make sure that the\n * 'success' flag is true. If not, create an error from\n * the 'description' field. Only for calls that follow\n * the scheme (success flag etc.)\n *\n * @param jsonResponse {Object} Parsed JSON response\n * @throws {Error}\n */\nconst assertSuccess = (jsonResponse) => {\n const success = JSON.parse(jsonResponse.success);\n if (!success) {\n const error = new Error(jsonResponse.description);\n if (jsonResponse.name) {\n error.name = jsonResponse.name;\n }\n if (jsonResponse.code) {\n error.code = jsonResponse.code;\n }\n throw error;\n }\n}\n\n/**\n * Log in with the CMS.\n *\n * @param email\n * @param password\n * @return {Promise<*>}\n */\nexport async function login (email, password) {\n const response = await makeRequest({\n method: 'POST',\n uri: `${CMS_BASE_URL}/flux/api/login`,\n form: {\n 'mail': email,\n 'password': password\n },\n json: true\n });\n assertSuccess(response);\n return response.content;\n}\n\n/**\n * Log off from CMS.\n *\n * @param accessToken\n * @return {Promise<*>}\n */\nexport async function logout (accessToken) {\n return await makeRequest({\n method: 'POST',\n headers: {\n \"x-auth-token\": accessToken\n },\n uri: `${CMS_BASE_URL}/flux/api/logout`,\n json: true\n });\n}\n\nexport async function getRooms (jwt, userId) {\n console.debug(`making call with ${jwt} for ${userId}`);\n // TODO: replace with API call\n return [\n {\n id: 103591,\n name: \"Reception\"\n },\n {\n id: 103592,\n name: \"White\"\n },\n {\n id: 103593,\n name: \"Clivia\"\n },\n {\n id: 103594,\n name: \"Vigour Vogue\"\n },\n ]\n}\n\n/**\n * Get access data to join a tour video session.\n *\n * @param jwt {string} JWT auth token\n * @param data {Object} Necessary information of the structure:\n * \n * {\n * user_id: {string}\n * user_name: {string},\n * role: {string},\n * room_id: {string}\n * }\n * \n * @return {Promise<*>}\n */\nexport async function getVideoSessionInfoForRoom (jwt, data) {\n const response = await makeRequest({\n method: 'GET',\n uri: `${CALLSERVICE_URL}/request_session_connection`,\n qs: data,\n json: true\n });\n assertSuccess(response);\n return response;\n}\n\n/**\n * Sends a heartbeat to the call-service to inform that the given user\n * is still online.\n * @param userId {string} The user_id field given to this OpenTok user\n * when calling @see {getVideoSessionInfoForRoom}\n * @return {Promise}\n */\nexport async function heartbeat (userId) {\n await makeRequest({\n method: 'POST',\n uri: `${CALLSERVICE_URL}/check_for_call?callee=${userId}`,\n json: true\n }, false);\n}\n\n/**\n * Obtain information on the users connected to the rooms listed.\n * The rooms are identified by their room ids as entered in the call\n * to @see #getVideoSessionInfoForRoom\n *\n * @param roomIds {Array<{String}>} room ids\n * @return {Array