import React, { useEffect } from 'react'; import ModuleCard from 'Components/Client/Modules/ModuleCard'; import { modules as list } from './'; import withPageTitle from 'HOCs/withPageTitle'; import { connect } from 'react-redux'; import { userService } from 'App/services'; import { toast } from 'react-toastify'; import { updateModule } from 'Duck/user'; interface Props { modules: string[]; updateModule: (moduleKey: string) => void; isEnterprise: boolean; } function Modules(props: Props) { const { modules } = props; const [modulesState, setModulesState, isEnterprise = false] = React.useState([]); const onToggle = async (module: any) => { try { const isEnabled = !module.isEnabled; module.isEnabled = isEnabled; setModulesState((prevState) => [...prevState]); await userService.saveModules({ module: module.key, status: isEnabled, }); props.updateModule(module.key); toast.success(`Module ${module.label} ${!isEnabled ? 'enabled' : 'disabled'}`); } catch (err) { console.error(err); toast.error(`Failed to ${module.isEnabled ? 'disable' : 'enable'} module ${module.label}`); module.isEnabled = !module.isEnabled; setModulesState((prevState) => [...prevState]); } }; useEffect(() => { list.forEach((module) => { module.isEnabled = modules.includes(module.key); }); setModulesState(list.filter((module) => !module.hidden && (!module.enterprise || isEnterprise))); }, [modules]); return (

Modules

  • OpenReplay's modules are a collection of advanced features that provide enhanced functionality.
  • Easily enable any desired module within the user interface to access its capabilities
{modulesState.map((module) => (
))}
); } export default withPageTitle('Modules - OpenReplay Preferences')(connect((state: any) => ({ modules: state.getIn(['user', 'account', 'settings', 'modules']) || [], isEnterprise: state.getIn(['user', 'account', 'edition']) === 'ee' }), { updateModule })(Modules));