Show own talking state in UI
This commit is contained in:
parent
fd4f2ecc22
commit
9ad548e105
18
app/index.js
18
app/index.js
|
@ -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))
|
||||
|
|
14
app/voice.js
14
app/voice.js
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue