UNPKG

mediasfu-reactnative

Version:
135 lines (134 loc) 4.08 kB
import React from 'react'; import { Socket } from 'socket.io-client'; import { ShowAlert } from '../../@types/types'; import { ModifySettingsOptions } from '../../methods/settingsMethods/modifySettings'; /** * Interface defining the parameters required by the EventSettingsModal component. */ export interface EventSettingsModalParameters { meetingDisplayType: string; autoWave: boolean; forceFullDisplay: boolean; meetingVideoOptimized: boolean; roomName: string; socket: Socket; showAlert?: ShowAlert; } /** * Interface defining the options (props) for the EventSettingsModal component. */ export interface EventSettingsModalOptions { /** * Determines if the modal is visible. */ isEventSettingsModalVisible: boolean; /** * Callback function to close the modal. */ onEventSettingsClose: () => void; /** * Callback function to modify event settings. * @default modifySettings */ onModifyEventSettings?: (options: ModifySettingsOptions) => Promise<void>; /** * Position of the modal on the screen. * @default "topRight" */ position?: 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight'; /** * Background color of the modal. * @default "#83c0e9" */ backgroundColor?: string; /** * Initial audio setting. */ audioSetting: string; /** * Initial video setting. */ videoSetting: string; /** * Initial screenshare setting. */ screenshareSetting: string; /** * Initial chat setting. */ chatSetting: string; /** * Callback function to update audio setting. */ updateAudioSetting: (setting: string) => void; /** * Callback function to update video setting. */ updateVideoSetting: (setting: string) => void; /** * Callback function to update screenshare setting. */ updateScreenshareSetting: (setting: string) => void; /** * Callback function to update chat setting. */ updateChatSetting: (setting: string) => void; /** * Callback function to update modal visibility. */ updateIsSettingsModalVisible: (isVisible: boolean) => void; /** * Name of the room. */ roomName: string; /** * Socket object for communication. */ socket: Socket; /** * Callback function to show alerts. */ showAlert?: ShowAlert; } export type EventSettingsModalType = (options: EventSettingsModalOptions) => JSX.Element; /** * EventSettingsModal provides an interface to configure event-related settings such as audio, video, screenshare, and chat permissions. * * @example * ```tsx * import React, { useState } from 'react'; * import { EventSettingsModal } from 'mediasfu-reactnative'; * import { io } from 'socket.io-client'; * * const socket = io('https://your-server-url.com'); * * function App() { * const [isModalVisible, setModalVisible] = useState(false); * * return ( * <View> * <Button title="Open Event Settings" onPress={() => setModalVisible(true)} /> * <EventSettingsModal * isEventSettingsModalVisible={isModalVisible} * onEventSettingsClose={() => setModalVisible(false)} * audioSetting="allow" * videoSetting="approval" * screenshareSetting="disallow" * chatSetting="allow" * updateAudioSetting={(setting) => console.log('Audio setting updated:', setting)} * updateVideoSetting={(setting) => console.log('Video setting updated:', setting)} * updateScreenshareSetting={(setting) => console.log('Screenshare setting updated:', setting)} * updateChatSetting={(setting) => console.log('Chat setting updated:', setting)} * roomName="meeting-room" * socket={socket} * showAlert={(alert) => console.log('Alert:', alert)} * /> * </View> * ); * } * * export default App; * ``` */ declare const EventSettingsModal: React.FC<EventSettingsModalOptions>; export default EventSettingsModal;