in src/providers/MeetingProvider/MeetingManager.ts [142:185]
async join(
meetingSessionConfiguration: MeetingSessionConfiguration,
options?: MeetingManagerJoinOptions
): Promise<void> {
const {
deviceLabels,
eventController,
enableWebAudio,
activeSpeakerPolicy,
skipDeviceSelection
} = this.parseJoinParams(options);
this.meetingSessionConfiguration = meetingSessionConfiguration;
this.meetingId = this.meetingSessionConfiguration.meetingId;
const deviceController = new DefaultDeviceController(this.logger, {
enableWebAudio: enableWebAudio,
});
this.meetingSession = new DefaultMeetingSession(
meetingSessionConfiguration,
this.logger,
deviceController,
eventController
);
this.audioVideo = this.meetingSession.audioVideo;
if (eventController) {
eventController.addObserver(this.eventDidReceiveRef);
} else {
this.meetingSession.eventController.addObserver(this.eventDidReceiveRef);
}
this.setupAudioVideoObservers();
this.setupDeviceLabelTrigger(deviceLabels);
if (!skipDeviceSelection) {
this.logger.info('[MeetingManager.join] listing and selecting devices');
await this.listAndSelectDevices(deviceLabels);
}
this.publishAudioVideo();
this.setupActiveSpeakerDetection(activeSpeakerPolicy);
this.meetingStatus = MeetingStatus.Loading;
this.publishMeetingStatus();
}