Skip to content

Commit

Permalink
fix: reuse code
Browse files Browse the repository at this point in the history
  • Loading branch information
raviteja83 committed Feb 3, 2025
1 parent 612539c commit af44914
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 20 deletions.
13 changes: 3 additions & 10 deletions packages/hms-video-store/src/media/tracks/HMSLocalAudioTrack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { HMSAudioPlugin, HMSPluginSupportResult } from '../../plugins';
import { HMSAudioPluginsManager } from '../../plugins/audio';
import Room from '../../sdk/models/HMSRoom';
import HMSLogger from '../../utils/logger';
import { getAudioTrack, isEmptyTrack } from '../../utils/track';
import { getAudioTrack, isEmptyTrack, listenToPermissionChange } from '../../utils/track';
import { TrackAudioLevelMonitor } from '../../utils/track-audio-level-monitor';
import { HMSAudioTrackSettings, HMSAudioTrackSettingsBuilder } from '../settings';
import { HMSLocalStream } from '../streams';
Expand Down Expand Up @@ -317,15 +317,8 @@ export class HMSLocalAudioTrack extends HMSAudioTrack {
}

private trackPermissions = () => {
if (!navigator.permissions) {
HMSLogger.d(this.TAG, 'Permissions API not supported');
return;
}
// @ts-ignore
navigator.permissions.query({ name: 'microphone' }).then(permission => {
permission.onchange = () => {
this.eventBus.analytics.publish(AnalyticsEventFactory.permissionChange('audio', permission.state));
};
listenToPermissionChange('microphone', (state: PermissionState) => {
this.eventBus.analytics.publish(AnalyticsEventFactory.permissionChange(this.type, state));
});
};

Expand Down
13 changes: 3 additions & 10 deletions packages/hms-video-store/src/media/tracks/HMSLocalVideoTrack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { LocalTrackManager } from '../../sdk/LocalTrackManager';
import Room from '../../sdk/models/HMSRoom';
import HMSLogger from '../../utils/logger';
import { isBrowser, isMobile } from '../../utils/support';
import { getVideoTrack, isEmptyTrack } from '../../utils/track';
import { getVideoTrack, isEmptyTrack, listenToPermissionChange } from '../../utils/track';
import { HMSVideoTrackSettings, HMSVideoTrackSettingsBuilder } from '../settings';
import { HMSLocalStream } from '../streams';

Expand Down Expand Up @@ -528,15 +528,8 @@ export class HMSLocalVideoTrack extends HMSVideoTrack {
}

private trackPermissions = () => {
if (!navigator.permissions) {
HMSLogger.d(this.TAG, 'Permissions API not supported');
return;
}
// @ts-ignore
navigator.permissions.query({ name: 'camera' }).then(permission => {
permission.onchange = () => {
this.eventBus.analytics.publish(AnalyticsEventFactory.permissionChange('video', permission.state));
};
listenToPermissionChange('camera', (state: PermissionState) => {
this.eventBus.analytics.publish(AnalyticsEventFactory.permissionChange(this.type, state));
});
};

Expand Down
17 changes: 17 additions & 0 deletions packages/hms-video-store/src/utils/track.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import HMSLogger from './logger';
import { BuildGetMediaError } from '../error/utils';
import { HMSAudioTrackSettings, HMSVideoTrackSettings } from '../media/settings';
import { HMSTrackExceptionTrackType } from '../media/tracks/HMSTrackExceptionTrackType';
Expand Down Expand Up @@ -29,3 +30,19 @@ export function isEmptyTrack(track: MediaStreamTrack) {
// Firefox gives '' as label for empty track(created from audio context)
return 'canvas' in track || track.label === 'MediaStreamAudioDestinationNode' || track.label === '';
}

export const listenToPermissionChange = (
permissionName: 'camera' | 'microphone',
onChange: (state: PermissionState) => any,
) => {
if (!navigator.permissions) {
HMSLogger.d('Permissions API not supported');
return;
}
// @ts-ignore
navigator.permissions.query({ name: permissionName }).then(permission => {
permission.onchange = () => {
onChange(permission.state);
};
});
};

0 comments on commit af44914

Please sign in to comment.