UNPKG

mediasfu-reactnative

Version:
118 lines 7.99 kB
/** * Modifies the display settings based on the provided parameters. * * @param {ModifyDisplaySettingsOptions} options - The options containing the parameters to modify the display settings. * @param {Object} options.parameters - The parameters for modifying the display settings. * @param {Function} options.parameters.showAlert - Function to show alert messages. * @param {string} options.parameters.meetingDisplayType - The current meeting display type. * @param {boolean} options.parameters.autoWave - Flag indicating if auto wave is enabled. * @param {boolean} options.parameters.forceFullDisplay - Flag indicating if full display is forced. * @param {boolean} options.parameters.meetingVideoOptimized - Flag indicating if the meeting video is optimized. * @param {string} options.parameters.islevel - The current level of the meeting. * @param {boolean} options.parameters.recordStarted - Flag indicating if recording has started. * @param {boolean} options.parameters.recordResumed - Flag indicating if recording has resumed. * @param {boolean} options.parameters.recordStopped - Flag indicating if recording has stopped. * @param {boolean} options.parameters.recordPaused - Flag indicating if recording is paused. * @param {string} options.parameters.recordingDisplayType - The current recording display type. * @param {boolean} options.parameters.recordingVideoOptimized - Flag indicating if the recording video is optimized. * @param {string} options.parameters.prevForceFullDisplay - The previous force full display value. * @param {string} options.parameters.prevMeetingDisplayType - The previous meeting display type. * @param {Function} options.parameters.updateMeetingDisplayType - Function to update the meeting display type. * @param {Function} options.parameters.updateAutoWave - Function to update the auto wave setting. * @param {Function} options.parameters.updateForceFullDisplay - Function to update the force full display setting. * @param {Function} options.parameters.updateMeetingVideoOptimized - Function to update the meeting video optimization setting. * @param {Function} options.parameters.updatePrevForceFullDisplay - Function to update the previous force full display setting. * @param {Function} options.parameters.updatePrevMeetingDisplayType - Function to update the previous meeting display type. * @param {Function} options.parameters.updateIsDisplaySettingsModalVisible - Function to update the visibility of the display settings modal. * @param {Function} options.parameters.updateFirstAll - Function to update the first all setting. * @param {Function} options.parameters.updateUpdateMainWindow - Function to update the main window. * @param {boolean} options.parameters.breakOutRoomStarted - Flag indicating if a breakout room has started. * @param {boolean} options.parameters.breakOutRoomEnded - Flag indicating if a breakout room has ended. * @param {Function} options.parameters.onScreenChanges - Function to handle screen changes. * * @example * ```typescript * const options: ModifyDisplaySettingsOptions = { * parameters: { * showAlert: showAlertFunction, * meetingDisplayType: "video", * autoWave: true, * forceFullDisplay: false, * meetingVideoOptimized: true, * islevel: "2", * recordStarted: true, * recordResumed: false, * recordStopped: false, * recordPaused: false, * recordingDisplayType: "video", * recordingVideoOptimized: true, * prevForceFullDisplay: false, * prevMeetingDisplayType: "media", * updateMeetingDisplayType: updateDisplayTypeFunction, * updateAutoWave: updateAutoWaveFunction, * updateForceFullDisplay: updateForceFullDisplayFunction, * updateMeetingVideoOptimized: updateVideoOptimizedFunction, * updatePrevForceFullDisplay: updatePrevForceFullFunction, * updatePrevMeetingDisplayType: updatePrevDisplayTypeFunction, * updateIsDisplaySettingsModalVisible: setModalVisibilityFunction, * updateFirstAll: setFirstAllFunction, * updateUpdateMainWindow: setMainWindowUpdateFunction, * breakOutRoomStarted: false, * breakOutRoomEnded: true, * onScreenChanges: onScreenChangesFunction * } * }; * * await modifyDisplaySettings(options); * ``` */ export const modifyDisplaySettings = async ({ parameters }) => { // Destructure the parameters let { showAlert, meetingDisplayType, autoWave, forceFullDisplay, meetingVideoOptimized, islevel, recordStarted, recordResumed, recordStopped, recordPaused, recordingDisplayType, recordingVideoOptimized, prevForceFullDisplay, prevMeetingDisplayType, updateMeetingDisplayType, updateAutoWave, updateForceFullDisplay, updateMeetingVideoOptimized, updatePrevForceFullDisplay, updatePrevMeetingDisplayType, updateIsDisplaySettingsModalVisible, updateFirstAll, updateUpdateMainWindow, breakOutRoomStarted, breakOutRoomEnded, onScreenChanges, } = parameters; // Update previous states updateAutoWave(autoWave); updateForceFullDisplay(forceFullDisplay); if (islevel === '2' && (recordStarted || recordResumed) && !recordStopped && !recordPaused) { if (recordingDisplayType === 'video' && meetingDisplayType === 'video' && meetingVideoOptimized && !recordingVideoOptimized) { showAlert === null || showAlert === void 0 ? void 0 : showAlert({ message: 'Meeting display type can be either video, media, or all when recording display type is non-optimized video.', type: 'danger', duration: 3000 }); // Reset to previous values or handle as needed meetingDisplayType = recordingDisplayType; updateMeetingDisplayType(meetingDisplayType); meetingVideoOptimized = recordingVideoOptimized; updateMeetingVideoOptimized(meetingVideoOptimized); return; } if (recordingDisplayType === 'media' && meetingDisplayType === 'video') { showAlert === null || showAlert === void 0 ? void 0 : showAlert({ message: 'Meeting display type can be either media or all when recording display type is media.', type: 'danger', duration: 3000 }); // Reset to previous values or handle as needed meetingDisplayType = recordingDisplayType; updateMeetingDisplayType(meetingDisplayType); return; } if (recordingDisplayType === 'all' && (meetingDisplayType === 'video' || meetingDisplayType === 'media')) { showAlert === null || showAlert === void 0 ? void 0 : showAlert({ message: 'Meeting display type can be only all when recording display type is all.', type: 'danger', duration: 3000 }); // Reset to previous values or handle as needed meetingDisplayType = recordingDisplayType; updateMeetingDisplayType(meetingDisplayType); return; } } updateMeetingDisplayType(meetingDisplayType); updateMeetingVideoOptimized(meetingVideoOptimized); // Close the modal or perform additional actions updateIsDisplaySettingsModalVisible(false); if (prevMeetingDisplayType !== meetingDisplayType || prevForceFullDisplay !== forceFullDisplay) { if (breakOutRoomStarted && !breakOutRoomEnded && meetingDisplayType !== 'all') { showAlert === null || showAlert === void 0 ? void 0 : showAlert({ message: 'Breakout room is active. Display type can only be all.', type: 'danger' }); meetingDisplayType = prevMeetingDisplayType; updateMeetingDisplayType(prevMeetingDisplayType); return; } updateFirstAll(meetingDisplayType !== 'all'); updateUpdateMainWindow(true); await onScreenChanges({ changed: true, parameters: Object.assign(Object.assign({}, parameters), { meetingDisplayType, forceFullDisplay }) }); updatePrevForceFullDisplay(forceFullDisplay); updatePrevMeetingDisplayType(meetingDisplayType); } }; //# sourceMappingURL=modifyDisplaySettings.js.map