Show own talking state in UI

This commit is contained in:
Jonas Herzig 2017-09-19 20:53:48 +02:00
parent fd4f2ecc22
commit 9ad548e105
2 changed files with 32 additions and 0 deletions

View file

@ -301,6 +301,10 @@ class GlobalBindings {
if (!this.client) {
return
}
if (voiceHandler) {
voiceHandler.end()
voiceHandler = null
}
let mode = this.settings.voiceMode
if (mode === 'cont') {
voiceHandler = new ContinuousVoiceHandler(this.client)
@ -310,7 +314,18 @@ class GlobalBindings {
} else {
log('Unknown voice mode:', mode)
return
}
voiceHandler.on('started_talking', () => {
if (this.thisUser()) {
this.thisUser().talking('on')
}
})
voiceHandler.on('stopped_talking', () => {
if (this.thisUser()) {
this.thisUser().talking('off')
}
})
}
this.messageBoxHint = ko.pureComputed(() => {
@ -525,6 +540,9 @@ var voiceHandler
initVoice(data => {
if (!ui.client) {
if (voiceHandler) {
voiceHandler.end()
}
voiceHandler = null
} else if (voiceHandler) {
voiceHandler.write(new Float32Array(data.buffer, data.byteOffset, data.byteLength / 4))

View file

@ -15,9 +15,23 @@ class VoiceHandler extends Writable {
_getOrCreateOutbound () {
if (!this._outbound) {
this._outbound = this._client.createVoiceStream()
this.emit('started_talking')
}
return this._outbound
}
_stopOutbound () {
if (this._outbound) {
this.emit('stopped_talking')
this._outbound.end()
this._outbound = null
}
}
_final (callback) {
this._stopOutbound()
callback()
}
}
export class ContinuousVoiceHandler extends VoiceHandler {