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) {
|
if (!this.client) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if (voiceHandler) {
|
||||||
|
voiceHandler.end()
|
||||||
|
voiceHandler = null
|
||||||
|
}
|
||||||
let mode = this.settings.voiceMode
|
let mode = this.settings.voiceMode
|
||||||
if (mode === 'cont') {
|
if (mode === 'cont') {
|
||||||
voiceHandler = new ContinuousVoiceHandler(this.client)
|
voiceHandler = new ContinuousVoiceHandler(this.client)
|
||||||
|
@ -310,7 +314,18 @@ class GlobalBindings {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
log('Unknown voice mode:', mode)
|
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(() => {
|
this.messageBoxHint = ko.pureComputed(() => {
|
||||||
|
@ -525,6 +540,9 @@ var voiceHandler
|
||||||
|
|
||||||
initVoice(data => {
|
initVoice(data => {
|
||||||
if (!ui.client) {
|
if (!ui.client) {
|
||||||
|
if (voiceHandler) {
|
||||||
|
voiceHandler.end()
|
||||||
|
}
|
||||||
voiceHandler = null
|
voiceHandler = null
|
||||||
} else if (voiceHandler) {
|
} else if (voiceHandler) {
|
||||||
voiceHandler.write(new Float32Array(data.buffer, data.byteOffset, data.byteLength / 4))
|
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 () {
|
_getOrCreateOutbound () {
|
||||||
if (!this._outbound) {
|
if (!this._outbound) {
|
||||||
this._outbound = this._client.createVoiceStream()
|
this._outbound = this._client.createVoiceStream()
|
||||||
|
this.emit('started_talking')
|
||||||
}
|
}
|
||||||
return this._outbound
|
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 {
|
export class ContinuousVoiceHandler extends VoiceHandler {
|
||||||
|
|
Loading…
Reference in a new issue