mediasfu-reactnative
Version:
MediaSFU Prebuilt React Native SDK
110 lines • 4.44 kB
JavaScript
/**
* Connects the send transport based on the specified option.
*
* @param {ConnectSendTransportOptions} options - The options for connecting the send transport.
* @param {string} options.option - The type of transport to connect ('audio', 'video', 'screen', or 'all').
* @param {boolean} options.targetOption - The target option to connect ('local', 'remote', or 'all').
* @param {ConnectSendTransportParameters} options.parameters - The parameters required for connecting the transport.
* @param {ProducerOptions} options.parameters.audioParams - The audio parameters.
* @param {ProducerOptions} options.parameters.videoParams - The video parameters.
* @param {MediaStream} options.parameters.localStreamScreen - The local screen stream.
* @param {MediaStream} options.parameters.canvasStream - The canvas stream.
* @param {boolean} options.parameters.whiteboardStarted - Indicates if the whiteboard has started.
* @param {boolean} options.parameters.whiteboardEnded - Indicates if the whiteboard has ended.
* @param {boolean} options.parameters.shared - Indicates if the screen is shared.
* @param {string} options.parameters.islevel - The level of the screen sharing.
* @param {Function} options.parameters.connectSendTransportAudio - Function to connect the audio send transport.
* @param {Function} options.parameters.connectSendTransportVideo - Function to connect the video send transport.
* @param {Function} options.parameters.connectSendTransportScreen - Function to connect the screen send transport.
*
* @returns {Promise<void>} A promise that resolves when the transport is connected.
*
* @throws Will throw an error if the connection fails.
*
* @example
* const options = {
* option: 'audio',
* targetOption: 'local',
* parameters: {
* audioParams: audioProducerOptions,
* videoParams: videoProducerOptions,
* localStreamScreen: localStream,
* canvasStream: canvasStream,
* whiteboardStarted: false,
* whiteboardEnded: false,
* shared: false,
* islevel: '1',
* connectSendTransportAudio: connectAudioFunction,
* connectSendTransportVideo: connectVideoFunction,
* connectSendTransportScreen: connectScreenFunction,
* },
* };
*
* connectSendTransport(options)
* .then(() => {
* console.log('Transport connected successfully');
* })
* .catch((error) => {
* console.error('Error connecting transport:', error);
* });
*/
export const connectSendTransport = async ({ option, targetOption = 'all', parameters }) => {
try {
let { audioParams, videoParams, localStreamScreen, canvasStream, whiteboardStarted, whiteboardEnded, shared, islevel,
//media functions
connectSendTransportAudio, connectSendTransportVideo, connectSendTransportScreen, } = parameters;
// Connect send transport based on the specified option
if (option === 'audio') {
await connectSendTransportAudio({
targetOption,
audioParams,
parameters,
});
}
else if (option === 'video') {
await connectSendTransportVideo({
targetOption,
videoParams,
parameters,
});
}
else if (option === 'screen') {
if (whiteboardStarted &&
!whiteboardEnded &&
canvasStream &&
islevel === '2' &&
!shared) {
await connectSendTransportScreen({
targetOption,
stream: canvasStream,
parameters,
});
}
else {
await connectSendTransportScreen({
targetOption,
stream: localStreamScreen,
parameters,
});
}
}
else {
// Connect both audio and video send transports
await connectSendTransportAudio({
targetOption,
audioParams,
parameters,
});
await connectSendTransportVideo({
targetOption,
videoParams,
parameters,
});
}
}
catch (error) {
console.log('connectSendTransport error', error);
// throw error;
}
};
//# sourceMappingURL=connectSendTransport.js.map