Skip to content

Commit

Permalink
fix: update device selector state as per media permission state
Browse files Browse the repository at this point in the history
  • Loading branch information
vaibhavshn committed Oct 6, 2024
1 parent 6365933 commit 655a505
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ export class DyteCameraSelector {

meeting.self?.addListener('deviceListUpdate', this.deviceListUpdateListener);
meeting.self?.addListener('deviceUpdate', this.deviceUpdateListener);
meeting.self?.addListener('mediaPermissionUpdate', this.mediaPermissionUpdateListener);

writeTask(async () => {
const videoDevices = await meeting.self.getVideoDevices();
Expand All @@ -75,6 +76,7 @@ export class DyteCameraSelector {
this.meeting?.stage?.removeListener('stageStatusUpdate', this.stageStateListener);
this.meeting?.self.removeListener('deviceListUpdate', this.deviceListUpdateListener);
this.meeting?.self.removeListener('deviceUpdate', this.deviceUpdateListener);
this.meeting?.self.removeListener('mediaPermissionUpdate', this.mediaPermissionUpdateListener);
}

private stageStateListener = () => {
Expand All @@ -90,6 +92,13 @@ export class DyteCameraSelector {
this.currentDevice = device;
};

private mediaPermissionUpdateListener = async ({ kind, message }) => {
if (!this.meeting) return;
if (kind === 'video' && message === 'ACCEPTED') {
this.videoDevices = await this.meeting.self.getVideoDevices();
}
};

private async setDevice(deviceId: string) {
const device = this.videoDevices.find((d) => d.deviceId === deviceId);
this.currentDevice = device;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ export class DyteMicrophoneSelector {
this.meeting?.stage?.removeListener('stageStatusUpdate', this.stageStateListener);
this.meeting?.self.removeListener('deviceListUpdate', this.deviceListUpdateListener);
this.meeting?.self.removeListener('deviceUpdate', this.deviceUpdateListener);
this.meeting?.self.removeListener('mediaPermissionUpdate', this.mediaPermissionUpdateListener);
}

private stageStateListener = () => {
Expand All @@ -77,6 +78,13 @@ export class DyteMicrophoneSelector {
}
};

private mediaPermissionUpdateListener = async ({ kind, message }) => {
if (!this.meeting) return;
if (kind === 'audio' && message === 'ACCEPTED') {
this.audioinputDevices = await this.meeting.self.getAudioDevices();
}
};

@Watch('meeting')
meetingChanged(meeting: Meeting) {
if (meeting == null) return;
Expand All @@ -93,6 +101,7 @@ export class DyteMicrophoneSelector {
stage?.addListener('stageStatusUpdate', this.stageStateListener);
self.addListener('deviceListUpdate', this.deviceListUpdateListener);
self.addListener('deviceUpdate', this.deviceUpdateListener);
self.addListener('mediaPermissionUpdate', this.mediaPermissionUpdateListener);

if (currentAudioDevice != undefined) {
this.audioinputDevices = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ export class DyteSpeakerSelector {
disconnectedCallback() {
this.meeting?.self.removeListener('deviceListUpdate', this.deviceListUpdateListener);
this.meeting?.self.removeListener('deviceUpdate', this.deviceUpdateListener);
this.meeting?.self.addListener('mediaPermissionUpdate', this.mediaPermissionUpdate);
}

private deviceListUpdateListener = ({ devices }) => {
Expand All @@ -77,6 +78,13 @@ export class DyteSpeakerSelector {
}
};

private mediaPermissionUpdate = async ({ kind, message }) => {
if (!this.meeting) return;
if (kind === 'audio' && message === 'ACCEPTED') {
this.speakerDevices = await this.meeting.self.getSpeakerDevices();
}
};

@Watch('meeting')
meetingChanged(meeting: Meeting) {
if (meeting == null) return;
Expand All @@ -91,6 +99,7 @@ export class DyteSpeakerSelector {

self.addListener('deviceListUpdate', this.deviceListUpdateListener);
self.addListener('deviceUpdate', this.deviceUpdateListener);
self.addListener('mediaPermissionUpdate', this.mediaPermissionUpdate);

if (currentSpeakerDevice != undefined) {
this.speakerDevices = [
Expand Down

0 comments on commit 655a505

Please sign in to comment.