mediasfu-angular
Version:
MediaSFU Prebuilt Angular SDK
174 lines (173 loc) • 9.21 kB
TypeScript
import { CheckPermissionType, DisconnectSendTransportAudioParameters, DisconnectSendTransportAudioType, Participant, RequestPermissionAudioType, ResumeSendTransportAudioParameters, ResumeSendTransportAudioType, ShowAlert, StreamSuccessAudioParameters, StreamSuccessAudioType } from '../../@types/types';
import { Socket } from 'socket.io-client';
import * as i0 from "@angular/core";
export interface ClickAudioParameters extends DisconnectSendTransportAudioParameters, ResumeSendTransportAudioParameters, StreamSuccessAudioParameters {
checkMediaPermission: boolean;
hasAudioPermission: boolean;
audioPaused: boolean;
audioAlreadyOn: boolean;
audioOnlyRoom: boolean;
recordStarted: boolean;
recordResumed: boolean;
recordPaused: boolean;
recordStopped: boolean;
recordingMediaOptions: string;
islevel: string;
youAreCoHost: boolean;
adminRestrictSetting: boolean;
audioRequestState: string | null;
audioRequestTime: number;
member: string;
socket: Socket;
localSocket?: Socket;
roomName: string;
userDefaultAudioInputDevice: string;
micAction: boolean;
localStream: MediaStream | null;
audioSetting: string;
videoSetting: string;
screenshareSetting: string;
chatSetting: string;
updateRequestIntervalSeconds: number;
participants: Participant[];
transportCreated: boolean;
transportCreatedAudio: boolean;
updateAudioAlreadyOn: (status: boolean) => void;
updateAudioRequestState: (state: string | null) => void;
updateAudioPaused: (status: boolean) => void;
updateLocalStream: (stream: MediaStream | null) => void;
updateParticipants: (participants: Participant[]) => void;
updateTransportCreated: (status: boolean) => void;
updateTransportCreatedAudio: (status: boolean) => void;
updateMicAction: (action: boolean) => void;
showAlert?: ShowAlert;
checkPermission: CheckPermissionType;
streamSuccessAudio: StreamSuccessAudioType;
disconnectSendTransportAudio: DisconnectSendTransportAudioType;
requestPermissionAudio: RequestPermissionAudioType;
resumeSendTransportAudio: ResumeSendTransportAudioType;
getUpdatedAllParams: () => ClickAudioParameters;
[key: string]: any;
}
export interface ClickAudioOptions {
parameters: ClickAudioParameters;
}
export type ClickAudioType = (options: ClickAudioOptions) => Promise<void>;
/**
* Handles the click event for toggling audio in a media session.
*
* @param {ClickAudioOptions} options - The parameters required for handling the audio click event.
* @param {Object} options.parameters - The parameters for toggling audio.
* @param {boolean} options.parameters.checkMediaPermission - Flag indicating whether to check media permission.
* @param {boolean} options.parameters.hasAudioPermission - Flag indicating if the user has audio permission.
* @param {boolean} options.parameters.audioPaused - Flag indicating if audio is paused.
* @param {boolean} options.parameters.audioAlreadyOn - Flag indicating if audio is already turned on.
* @param {boolean} options.parameters.audioOnlyRoom - Flag indicating if the room is audio-only.
* @param {boolean} options.parameters.recordStarted - Flag indicating if recording has started.
* @param {boolean} options.parameters.recordResumed - Flag indicating if recording has resumed.
* @param {boolean} options.parameters.recordPaused - Flag indicating if recording is paused.
* @param {boolean} options.parameters.recordStopped - Flag indicating if recording is stopped.
* @param {string} options.parameters.recordingMediaOptions - Media options for recording (e.g., "video", "audio").
* @param {string} options.parameters.islevel - User's level in the application.
* @param {boolean} options.parameters.youAreCoHost - Flag indicating if the user is a co-host.
* @param {boolean} options.parameters.adminRestrictSetting - Flag indicating if admin restrictions are set.
* @param {string | null} options.parameters.audioRequestState - Current state of the audio request.
* @param {number} options.parameters.audioRequestTime - Timestamp of the audio request.
* @param {string} options.parameters.member - Current member's name.
* @param {Socket} options.parameters.socket - The socket instance for communication.
* @param {Socket} options.parameters.localSocket - The local socket instance for communication.
* @param {string} options.parameters.roomName - The name of the room.
* @param {string} options.parameters.userDefaultAudioInputDevice - The default audio input device for the user.
* @param {boolean} options.parameters.micAction - Flag indicating if the microphone action is in progress.
* @param {MediaStream | null} options.parameters.localStream - The user's local media stream.
* @param {string} options.parameters.audioSetting - Current audio setting.
* @param {string} options.parameters.videoSetting - Current video setting.
* @param {string} options.parameters.screenshareSetting - Current screenshare setting.
* @param {string} options.parameters.chatSetting - Current chat setting.
* @param {number} options.parameters.updateRequestIntervalSeconds - Interval for updating request states.
* @param {Participant[]} options.parameters.participants - List of participants in the room.
* @param {boolean} options.parameters.transportCreated - Flag indicating if the transport has been created.
* @param {boolean} options.parameters.transportCreatedAudio - Flag indicating if audio transport has been created.
*
* @returns {Promise<void>} A promise that resolves when the audio click event has been handled.
*
* @remarks
* This function performs the following actions:
* - If the event is audio-only, it shows an alert and exits.
* - If the audio is already on, it handles the logic for turning it off, including checking recording states and permissions.
* - If the audio is off, it checks for admin restrictions, user permissions, and handles the logic for turning the audio on.
* - It updates various states and emits socket events as necessary.
*
* @example
* ```typescript
* const options: ClickAudioOptions = {
* parameters: {
* checkMediaPermission: true,
* hasAudioPermission: false,
* audioPaused: false,
* audioAlreadyOn: false,
* audioOnlyRoom: false,
* recordStarted: false,
* recordResumed: false,
* recordPaused: false,
* recordStopped: false,
* recordingMediaOptions: 'audio',
* islevel: '1',
* youAreCoHost: false,
* adminRestrictSetting: false,
* audioRequestState: null,
* audioRequestTime: 0,
* member: 'John Doe',
* socket: socketInstance,
* localSocket: socketInstance,
* roomName: 'exampleRoom',
* userDefaultAudioInputDevice: 'default',
* micAction: false,
* localStream: null,
* audioSetting: 'enabled',
* videoSetting: 'disabled',
* screenshareSetting: 'disabled',
* chatSetting: 'enabled',
* updateRequestIntervalSeconds: 30,
* participants: [],
* transportCreated: false,
* transportCreatedAudio: false,
* updateAudioAlreadyOn: (status) => console.log(status),
* updateAudioRequestState: (state) => console.log(state),
* updateAudioPaused: (status) => console.log(status),
* updateLocalStream: (stream) => console.log(stream),
* updateParticipants: (participants) => console.log(participants),
* updateTransportCreated: (status) => console.log(status),
* updateTransportCreatedAudio: (status) => console.log(status),
* updateMicAction: (action) => console.log(action),
* checkPermission: async () => 'granted',
* streamSuccessAudio: async () => console.log('Audio streaming success'),
* disconnectSendTransportAudio: async () => console.log('Audio transport disconnected'),
* requestPermissionAudio: async () => 'granted',
* resumeSendTransportAudio: async () => console.log('Audio transport resumed'),
* },
* };
*
* const clickAudioService = new ClickAudio();
* await clickAudioService.clickAudio(options);
* ```
*/
export declare class ClickAudio {
/**
* Handles the click event for toggling audio in a media session.
*
* @param {ClickAudioOptions} parameters - The parameters required for handling the audio click event.
* @returns {Promise<void>} A promise that resolves when the audio click event has been handled.
*
* The function performs the following actions:
* - If the event is audio-only, it shows an alert and exits.
* - If the audio is already on, it handles the logic for turning it off, including checking recording states and permissions.
* - If the audio is off, it checks for admin restrictions, user permissions, and handles the logic for turning the audio on.
* - It updates various states and emits socket events as necessary.
*
* The function makes use of several helper functions and state update functions passed in through the parameters.
*/
clickAudio({ parameters }: ClickAudioOptions): Promise<void>;
static ɵfac: i0.ɵɵFactoryDeclaration<ClickAudio, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<ClickAudio>;
}