disabling audio/video in jitsi carry over to wa

This commit is contained in:
kharhamel 2020-10-26 15:07:34 +01:00
parent 00ad28f084
commit 65a710d1f4
2 changed files with 29 additions and 4 deletions

View file

@ -27,6 +27,9 @@ const interfaceConfig = {
class JitsiFactory { class JitsiFactory {
private jitsiApi: any; // eslint-disable-line @typescript-eslint/no-explicit-any private jitsiApi: any; // eslint-disable-line @typescript-eslint/no-explicit-any
private audioCallback = this.onAudioChange.bind(this);
private videoCallback = this.onVideoChange.bind(this);
public start(roomName: string, playerName:string, jwt?: string): void { public start(roomName: string, playerName:string, jwt?: string): void {
CoWebsiteManager.insertCoWebsite((cowebsiteDiv => { CoWebsiteManager.insertCoWebsite((cowebsiteDiv => {
const domain = JITSI_URL; const domain = JITSI_URL;
@ -48,13 +51,35 @@ class JitsiFactory {
} }
this.jitsiApi = new window.JitsiMeetExternalAPI(domain, options); this.jitsiApi = new window.JitsiMeetExternalAPI(domain, options);
this.jitsiApi.executeCommand('displayName', playerName); this.jitsiApi.executeCommand('displayName', playerName);
this.jitsiApi.addListener('audioMuteStatusChanged', this.audioCallback);
this.jitsiApi.addListener('videoMuteStatusChanged', this.videoCallback);
})); }));
} }
public stop(): void { public stop(): void {
this.jitsiApi.removeListener('audioMuteStatusChanged', this.audioCallback);
this.jitsiApi.removeListener('videoMuteStatusChanged', this.videoCallback);
this.jitsiApi?.dispose(); this.jitsiApi?.dispose();
CoWebsiteManager.closeCoWebsite(); CoWebsiteManager.closeCoWebsite();
} }
private onAudioChange({muted}: {muted: boolean}): void {
if (muted && mediaManager.constraintsMedia.audio === true) {
mediaManager.disableMicrophone();
} else if(!muted && mediaManager.constraintsMedia.audio === false) {
mediaManager.enableMicrophone();
}
}
private onVideoChange({muted}: {muted: boolean}): void {
if (muted && mediaManager.constraintsMedia.video !== false) {
mediaManager.disableCamera();
} else if(!muted && mediaManager.constraintsMedia.video === false) {
mediaManager.enableCamera();
}
}
} }
export const jitsiFactory = new JitsiFactory(); export const jitsiFactory = new JitsiFactory();

View file

@ -135,7 +135,7 @@ export class MediaManager {
gameOverlay.classList.remove('active'); gameOverlay.classList.remove('active');
} }
private enableCamera() { public enableCamera() {
this.cinemaClose.style.display = "none"; this.cinemaClose.style.display = "none";
this.cinemaBtn.classList.remove("disabled"); this.cinemaBtn.classList.remove("disabled");
this.cinema.style.display = "block"; this.cinema.style.display = "block";
@ -145,7 +145,7 @@ export class MediaManager {
}); });
} }
private async disableCamera() { public async disableCamera() {
this.cinemaClose.style.display = "block"; this.cinemaClose.style.display = "block";
this.cinema.style.display = "none"; this.cinema.style.display = "none";
this.cinemaBtn.classList.add("disabled"); this.cinemaBtn.classList.add("disabled");
@ -161,7 +161,7 @@ export class MediaManager {
} }
} }
private enableMicrophone() { public enableMicrophone() {
this.microphoneClose.style.display = "none"; this.microphoneClose.style.display = "none";
this.microphone.style.display = "block"; this.microphone.style.display = "block";
this.microphoneBtn.classList.remove("disabled"); this.microphoneBtn.classList.remove("disabled");
@ -172,7 +172,7 @@ export class MediaManager {
}); });
} }
private async disableMicrophone() { public async disableMicrophone() {
this.microphoneClose.style.display = "block"; this.microphoneClose.style.display = "block";
this.microphone.style.display = "none"; this.microphone.style.display = "none";
this.microphoneBtn.classList.add("disabled"); this.microphoneBtn.classList.add("disabled");