import { OnInit } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; import { Socket } from 'socket.io-client'; import { ConnectSocketType, ShowAlert, ConnectLocalSocketType, ResponseLocalConnectionData, RecordingParams, MeetingRoomParams, CreateMediaSFURoomOptions, JoinMediaSFURoomOptions } from '../../../@types/types'; import { CheckLimitsAndMakeRequest } from '../../../methods/utils/check-limits-and-make-request.service'; import { CreateRoomOnMediaSFU } from '../../../methods/utils/create-room-on-media-sfu.service'; import { CreateRoomOnMediaSFUType, JoinRoomOnMediaSFUType, JoinRoomOnMediaSFU } from '../../../methods/utils/join-room-on-media-sfu.service'; import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; import { type ModernFieldOption } from '../../../modern/primitives/modern-field.component'; import * as i0 from "@angular/core"; export interface JoinLocalEventRoomParameters { eventID: string; userName: string; secureCode?: string; videoPreference?: string | null; audioPreference?: string | null; audioOutputPreference?: string | null; } export interface JoinLocalEventRoomOptions { joinData: JoinLocalEventRoomParameters; link?: string; } export interface CreateLocalRoomParameters { eventID: string; duration: number; capacity: number; userName: string; scheduledDate: Date; secureCode: string; waitRoom?: boolean; recordingParams?: RecordingParams; eventRoomParams?: MeetingRoomParams; videoPreference?: string | null; audioPreference?: string | null; audioOutputPreference?: string | null; mediasfuURL?: string; } export interface CreateLocalRoomOptions { createData: CreateLocalRoomParameters; link?: string; } export interface CreateJoinLocalRoomResponse { success: boolean; secret: string; reason?: string; url?: string; } export interface PreJoinPageParameters { imgSrc?: string; showAlert?: ShowAlert; updateIsLoadingModalVisible: (visible: boolean) => void; connectSocket: ConnectSocketType; connectLocalSocket?: ConnectLocalSocketType; updateSocket: (socket: Socket) => void; updateLocalSocket?: (socket: Socket) => void; updateValidated: (validated: boolean) => void; updateApiUserName: (userName: string) => void; updateApiToken: (token: string) => void; updateLink: (link: string) => void; updateRoomName: (roomName: string) => void; updateMember: (member: string) => void; } export interface Credentials { apiUserName: string; apiKey: string; } export interface PreJoinPageOptions { localLink?: string; connectMediaSFU?: boolean; parameters: PreJoinPageParameters; credentials?: Credentials; returnUI?: boolean; noUIPreJoinOptions?: CreateMediaSFURoomOptions | JoinMediaSFURoomOptions; createMediaSFURoom?: CreateRoomOnMediaSFUType; joinMediaSFURoom?: JoinRoomOnMediaSFUType; } export type PreJoinPageType = (options: PreJoinPageOptions) => HTMLElement; /** * @fileoverview PreJoinPage component for handling room creation and joining on MediaSFU. * * @component * @selector app-pre-join-page * @standalone true * @templateUrl ./pre-join-page.component.html * @styleUrls ./pre-join-page.component.css * @imports [CommonModule, ReactiveFormsModule] * * @description * This component provides functionality for users to create or join a room on MediaSFU. * It includes form validation, error handling, and API requests to the MediaSFU service. * * @property {any} parameters - Input parameters for the component. * @property {Object} credentials - API credentials for MediaSFU. * @property {string} credentials.apiUserName - API username. * @property {string} credentials.apiKey - API key. * @property {boolean} isCreateMode - Flag to toggle between create and join modes. * @property {FormGroup} preJoinForm - Form group for pre-join form. * @property {string} error - Error message to display. * * @constructor * @param {FormBuilder} fb - FormBuilder service for creating form groups. * @param {HttpClient} http - HttpClient service for making HTTP requests. * @param {CookieService} cookieService - CookieService for managing cookies. * * @method ngOnInit * @description Lifecycle hook that is called after data-bound properties are initialized. * * @method toggleMode * @description Toggles between create and join modes and resets the error message. * * @method handleCreateRoom * @description Handles the creation of a room on MediaSFU. Validates form inputs, sends a request to create a room, and handles the response. * * @method handleJoinRoom * @description Handles joining a room on MediaSFU. Validates form inputs, sends a request to join a room, and handles the response. * * @method checkLimitsAndMakeRequest * @description Checks rate limits and makes a request to connect to a room. Handles unsuccessful attempts and updates the state accordingly. * * @method createRoomOnMediaSFU * @description Sends a request to create a room on MediaSFU. * @param {Object} params - Parameters for the request. * @param {any} params.payload - Payload for the request. * @param {string} params.apiUserName - API username. * @param {string} params.apiKey - API key. * @returns {Promise<{ data: CreateJoinRoomResponse | CreateJoinRoomError | null; success: boolean }>} Response from the API. * * @method joinRoomOnMediaSFU * @description Sends a request to join a room on MediaSFU. * @param {Object} params - Parameters for the request. * @param {any} params.payload - Payload for the request. * @param {string} params.apiUserName - API username. * @param {string} params.apiKey - API key. * @returns {Promise<{ data: CreateJoinRoomResponse | CreateJoinRoomError | null; success: boolean }>} Response from the API. * * @example * ```html * * ``` */ export declare class PreJoinPage implements OnInit { private fb; private checkLimitsService; private createRoomService; private joinRoomService; parameters: PreJoinPageParameters; credentials: Credentials; localLink: string | undefined; connectMediaSFU: boolean | undefined; returnUI?: boolean; noUIPreJoinOptions?: CreateMediaSFURoomOptions | JoinMediaSFURoomOptions; createMediaSFURoom?: CreateRoomOnMediaSFUType; joinMediaSFURoom?: JoinRoomOnMediaSFUType; isCreateMode: boolean; preJoinForm: FormGroup; error: string; imgSrc: string; localConnected: boolean; localData: ResponseLocalConnectionData | undefined; initSocket: Socket | undefined; pending: BehaviorSubject; readonly eventTypeOptions: ReadonlyArray; private hasCloudCredentials; private failMissingCloudCredentials; constructor(fb: FormBuilder, injectedParameters: PreJoinPageParameters, injectedCredentials: Credentials, injectedLocalLink: string, injectedConnectMediaSFU: boolean, injectedReturnUI: boolean, injectedNoUIPreJoinOptions: CreateMediaSFURoomOptions | JoinMediaSFURoomOptions, injectedCreateMediaSFURoom: CreateRoomOnMediaSFUType, injectedJoinMediaSFURoom: JoinRoomOnMediaSFUType, checkLimitsService: CheckLimitsAndMakeRequest, createRoomService: CreateRoomOnMediaSFU, joinRoomService: JoinRoomOnMediaSFU); ngOnInit(): void; private connectLocalSocket; private checkProceed; toggleMode(): void; joinLocalRoom(options: JoinLocalEventRoomOptions): Promise; createLocalRoom(options: CreateLocalRoomOptions): Promise; roomCreator(options: { payload: any; apiUserName: string; apiKey: string; validate?: boolean; }): Promise; handleCreateRoom(): Promise; handleJoinRoom(): Promise; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }