mediasfu-reactnative
Version:
MediaSFU Prebuilt React Native SDK
135 lines (134 loc) • 4.08 kB
TypeScript
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;