DisplaySettingsModal - Visual display and optimization settings interface

DisplaySettingsModal is a React Native component that provides controls for configuring how the meeting content is displayed and rendered. It offers settings for display mode, participant animations, full-screen forcing, and video performance optimization.

Key Features:

  • Display mode selection (video, media, all)
  • Auto-wave animation toggle for participants
  • Force full-screen display option
  • Video rendering optimization toggle
  • Position-configurable modal (4 corners)
  • Real-time settings persistence
  • Custom settings handler support

UI Customization: This component can be replaced via uiOverrides.displaySettingsModal to provide a completely custom display settings interface.

// Basic usage with default settings
import React, { useState } from 'react';
import { DisplaySettingsModal } from 'mediasfu-reactnative-expo';

const [showSettings, setShowSettings] = useState(false);

const displayParams = {
meetingDisplayType: 'video',
autoWave: true,
forceFullDisplay: false,
meetingVideoOptimized: false,
getUpdatedAllParams: () => ({ ...displayParams }),
};

return (
<DisplaySettingsModal
isDisplaySettingsModalVisible={showSettings}
onDisplaySettingsClose={() => setShowSettings(false)}
parameters={displayParams}
/>
);
// With custom position and styling
const handleModifySettings = async (options: ModifyDisplaySettingsOptions) => {
await modifyDisplaySettings(options);
console.log('Display settings updated');
};

return (
<DisplaySettingsModal
isDisplaySettingsModalVisible={showDisplaySettings}
onDisplaySettingsClose={() => setShowDisplaySettings(false)}
onModifyDisplaySettings={handleModifySettings}
parameters={displayParameters}
position="bottomRight"
backgroundColor="#2c3e50"
/>
);
// With performance optimization enabled
const optimizedParams = {
meetingDisplayType: 'video',
autoWave: false, // Disable for better performance
forceFullDisplay: true,
meetingVideoOptimized: true, // Enable video optimization
getUpdatedAllParams: () => ({ ...optimizedParams }),
};

return (
<DisplaySettingsModal
isDisplaySettingsModalVisible={isVisible}
onDisplaySettingsClose={handleClose}
parameters={optimizedParams}
/>
);
// Using custom UI via uiOverrides
const config = {
uiOverrides: {
displaySettingsModal: {
component: MyCustomDisplaySettings,
injectedProps: {
theme: 'dark',
showAdvancedOptions: true,
},
},
},
};

return <MyMeetingComponent config={config} />;

Properties

propTypes?: WeakValidationMap<DisplaySettingsModalOptions>

Used to declare the types of the props accepted by the component. These types will be checked during rendering and in development only.

We recommend using TypeScript instead of checking prop types at runtime.

contextTypes?: ValidationMap<any>

Lets you specify which legacy context is consumed by this component.

defaultProps?: Partial<DisplaySettingsModalOptions>

Used to define default values for the props accepted by the component.

type Props = { name?: string }

const MyComponent: FC<Props> = (props) => {
return <div>{props.name}</div>
}

MyComponent.defaultProps = {
name: 'John Doe'
}
displayName?: string

Used in debugging messages. You might want to set it explicitly if you want to display a different name for debugging purposes.


const MyComponent: FC = () => {
return <div>Hello!</div>
}

MyComponent.displayName = 'MyAwesomeComponent'