UNPKG

mediasfu-angular

Version:
109 lines (108 loc) 5.61 kB
import { CloseAndResizeParameters, CloseAndResizeType, PrepopulateUserMediaParameters, PrepopulateUserMediaType, ReorderStreamsParameters, ReorderStreamsType, Transport } from '../../@types/types'; import * as i0 from "@angular/core"; export interface ProducerMediaClosedParameters extends CloseAndResizeParameters, PrepopulateUserMediaParameters, ReorderStreamsParameters { consumerTransports: Transport[]; updateConsumerTransports: (transports: Transport[]) => void; hostLabel: string; shared: boolean; updateShared: (shared: boolean) => void; updateShareScreenStarted: (started: boolean) => void; updateScreenId: (screenId: string) => void; updateShareEnded: (ended: boolean) => void; closeAndResize: CloseAndResizeType; prepopulateUserMedia: PrepopulateUserMediaType; reorderStreams: ReorderStreamsType; getUpdatedAllParams: () => ProducerMediaClosedParameters; [key: string]: any; } export interface ProducerMediaClosedOptions { producerId: string; kind: 'video' | 'screen' | 'audio' | 'screenshare'; parameters: ProducerMediaClosedParameters; } export type ProducerMediaClosedType = (options: ProducerMediaClosedOptions) => Promise<void>; /** * Service to handle closing a media producer and associated UI and state updates. * * @class * @name ProducerMediaClosed * @description * Manages the closure of a media producer by identifying associated consumer transports, closing necessary resources, * and updating the user interface to reflect the change. For screen sharing, it resets the shared state and adjusts the main view. * * @method * producerMediaClosed * * @param {ProducerMediaClosedOptions} options - Contains details on the producer and parameters for state updates: * - `producerId` {string}: ID of the producer to close. * - `kind` {string}: The type of media to close (e.g., "screenshare" or "audio"). * - `parameters` {ProducerMediaClosedParameters}: Settings and update functions to manage the closure process. * - `consumerTransports` {Transport[]}: List of active transports for consumers. * - `updateConsumerTransports` {Function}: Updates the list of active consumer transports. * - `hostLabel` {string}: Label of the host to revert to if screen sharing ends. * - `shared` {boolean}: Indicates whether a screen is currently shared. * - `updateShared` {Function}: Updates the shared screen state. * - `updateShareScreenStarted` {Function}: Marks the start or end of screen sharing. * - `updateScreenId` {Function}: Clears the screen ID when screen sharing ends. * - `updateShareEnded` {Function}: Marks the end of screen sharing. * - `closeAndResize` {Function}: Adjusts the screen display upon closing the media. * - `prepopulateUserMedia` {Function}: Loads default media after screen sharing ends. * - `reorderStreams` {Function}: Reorders streams to optimize layout when media is closed. * * @returns {Promise<void>} Resolves when all updates are complete and the producer closure is handled. * * @example * const options = { * producerId: '12345', * kind: 'screenshare', * parameters: { * consumerTransports: [...], * updateConsumerTransports: (transports) => { ... }, * hostLabel: 'Host', * shared: true, * updateShared: (shared) => { ... }, * updateShareScreenStarted: (started) => { ... }, * updateScreenId: (id) => { ... }, * updateShareEnded: (ended) => { ... }, * closeAndResize: ({ producerId, kind, parameters }) => { ... }, * prepopulateUserMedia: ({ name, parameters }) => { ... }, * reorderStreams: ({ add, screenChanged, parameters }) => { ... }, * } * }; * * producerMediaClosedService.producerMediaClosed(options) * .then(() => console.log('Producer closed successfully')) * .catch(error => console.error('Error:', error)); * * @remarks * This service performs the following steps: * 1. Retrieves updated parameters. * 2. Finds and closes the transport associated with the producer. * 3. Updates the list of consumer transports. * 4. Adjusts the display layout with `closeAndResize`. * 5. If the producer is a screen share, resets shared state and reloads default media. */ export declare class ProducerMediaClosed { /** * Handles the closure of a media producer. * * @param {ProducerMediaClosedOptions} options - The options for closing the media producer. * @param {string} options.producerId - The ID of the producer to close. * @param {string} options.kind - The kind of media (e.g., "screenshare" or "screen"). * @param {Parameters} options.parameters - The parameters object containing various methods and properties. * * @returns {Promise<void>} - A promise that resolves when the producer has been closed and necessary updates are made. * * @remarks * This function performs the following steps: * 1. Retrieves updated parameters. * 2. Finds the transport associated with the producer to close. * 3. Closes the consumer transport and consumer if found. * 4. Updates the consumer transports list. * 5. Calls `closeAndResize` with the necessary parameters. * 6. If the producer kind is "screenshare" or "screen", updates shared state and calls various update methods. */ producerMediaClosed: ({ producerId, kind, parameters, }: ProducerMediaClosedOptions) => Promise<void>; static ɵfac: i0.ɵɵFactoryDeclaration<ProducerMediaClosed, never>; static ɵprov: i0.ɵɵInjectableDeclaration<ProducerMediaClosed>; }