async join()

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();
  }