diff --git a/src/resources/js/meet/app.js b/src/resources/js/meet/app.js
--- a/src/resources/js/meet/app.js
+++ b/src/resources/js/meet/app.js
@@ -1012,8 +1012,8 @@
+ ''
+ ''
+ '
'
- + '' + svgIcon('microphone-slash') + ''
- + '' + svgIcon('video-slash') + ''
+ + '' + svgIcon('microphone-slash') + ''
+ + '' + svgIcon('video-slash') + ''
+ '
'
+ ''
)
diff --git a/src/resources/vue/Meet/Room.vue b/src/resources/vue/Meet/Room.vue
--- a/src/resources/vue/Meet/Room.vue
+++ b/src/resources/vue/Meet/Room.vue
@@ -3,20 +3,20 @@
-
@@ -269,7 +269,11 @@
429: 'Too many requests. Please, wait.',
500: 'Failed to connect to the room. Server error.'
},
- session: {}
+ session: {},
+ audioActive: false,
+ videoActive: false,
+ handRaised: false,
+ screenShareActive: false
}
},
mounted() {
@@ -503,10 +507,6 @@
$('#app').addClass('meet')
$('#meet-setup').addClass('hidden')
$('#meet-session-toolbar,#meet-session-layout').removeClass('hidden')
-
- if (!this.canShareScreen) {
- this.setMenuItem('screen', false, true)
- }
}
this.session.onError = () => {
this.roomState = 500
@@ -615,15 +615,6 @@
roomOptions() {
$('#room-options-dialog').modal()
},
- setMenuItem(type, state, disabled) {
- let button = $('#meet-session-menu').find('.link-' + type)
-
- button[state ? 'removeClass' : 'addClass']('text-danger')
-
- if (disabled !== undefined) {
- button.prop('disabled', disabled)
- }
- },
setupMedia() {
let dialog = $('#media-setup-dialog')
@@ -644,23 +635,23 @@
this.microphone = setup.audioSource
this.camera = setup.videoSource
- this.setMenuItem('audio', setup.audioActive)
- this.setMenuItem('video', setup.videoActive)
+ this.audioActive = setup.audioActive
+ this.videoActive = setup.videoActive
},
onError: error => {
- this.setMenuItem('audio', false, true)
- this.setMenuItem('video', false, true)
+ this.audioActive = false
+ this.videoActive = false
}
})
},
setupCameraChange() {
this.meet.setupSetVideoDevice(this.camera).then(enabled => {
- this.setMenuItem('video', enabled)
+ this.videoActive = enabled
})
},
setupMicrophoneChange() {
this.meet.setupSetAudioDevice(this.microphone).then(enabled => {
- this.setMenuItem('audio', enabled)
+ this.audioActive = enabled
})
},
switchChannel(e) {
@@ -672,8 +663,7 @@
switchChat() {
let chat = $('#meet-chat')
let enabled = chat.is('.open')
-
- this.setMenuItem('chat', !enabled)
+
chat.toggleClass('open')
if (!enabled) {
@@ -701,21 +691,20 @@
}
},
switchHand() {
- let enabled = $('#meet-session-menu').find('.link-hand').is('.text-danger')
- this.updateSelf({ hand: enabled }, () => { this.setMenuItem('hand', enabled) })
+ this.updateSelf({ hand: !this.handRaised })
},
switchSound() {
const enabled = this.meet.switchAudio()
- this.setMenuItem('audio', enabled)
+ this.audioActive = enabled
},
switchVideo() {
const enabled = this.meet.switchVideo()
- this.setMenuItem('video', enabled)
+ this.videoActive = enabled
},
switchScreen() {
const switchScreenAction = () => {
this.meet.switchScreen((enabled, error) => {
- this.setMenuItem('screen', enabled)
+ this.screenShareActive = enabled
if (!enabled && !error) {
// Closing a screen sharing connection invalidates the token
delete this.session.shareToken
@@ -723,7 +712,7 @@
})
}
- if (this.session.shareToken || !$('#meet-session-menu').find('.link-screen').is('.text-danger')) {
+ if (this.session.shareToken || this.screenShareActive) {
switchScreenAction()
} else {
axios.post('/api/v4/openvidu/rooms/' + this.room + '/connections')
@@ -753,9 +742,10 @@
const isPublisher = this.isPublisher()
- this.setMenuItem('video', isPublisher ? data.videoActive : false)
- this.setMenuItem('audio', isPublisher ? data.audioActive : false)
- this.setMenuItem('hand', data.hand)
+ this.videoActive = isPublisher ? data.videoActive : false
+ this.audioActive = isPublisher ? data.audioActive : false
+
+ this.handRaised = data.hand
}
}
}