import React, { useEffect } from 'react'; import cn from 'classnames'; import { connect } from 'react-redux'; import withPageTitle from 'HOCs/withPageTitle'; import { Button, Loader, NoContent, Icon, Tooltip, Divider } from 'UI'; import { init, fetchList, save, remove } from 'Duck/customField'; import SiteDropdown from 'Shared/SiteDropdown'; import styles from './customFields.module.css'; import CustomFieldForm from './CustomFieldForm'; import ListItem from './ListItem'; import { confirm } from 'UI'; import AnimatedSVG, { ICONS } from 'Shared/AnimatedSVG/AnimatedSVG'; import { useModal } from 'App/components/Modal'; import { toast } from 'react-toastify'; function CustomFields(props) { const [currentSite, setCurrentSite] = React.useState(props.sites.get(0)); const [deletingItem, setDeletingItem] = React.useState(null); const { showModal, hideModal } = useModal(); useEffect(() => { const activeSite = props.sites.get(0); if (!activeSite) return; props.fetchList(activeSite.id); }, []); const save = (field) => { props.save(currentSite.id, field).then((response) => { if (!response || !response.errors || response.errors.size === 0) { hideModal(); toast.success('Metadata added successfully!'); } else { toast.error(response.errors[0]); } }); }; const init = (field) => { props.init(field); showModal( removeMetadata(field)} />); }; const onChangeSelect = ({ value }) => { const site = props.sites.find((s) => s.id === value.value); setCurrentSite(site); props.fetchList(site.id); }; const removeMetadata = async (field) => { if ( await confirm({ header: 'Metadata', confirmation: `Are you sure you want to remove?`, }) ) { setDeletingItem(field.index); props .remove(currentSite.id, field.index) .then(() => { hideModal(); }) .finally(() => { setDeletingItem(null); }); } }; const { fields, loading } = props; return (

{'Metadata'}

See additonal user information in sessions. Learn more
{/*
*/}
None added yet
} size="small" show={fields.size === 0} >
{fields .filter((i) => i.index) .map((field) => ( <> removeMetadata(field) } /> ))}
); } export default connect( (state) => ({ fields: state.getIn(['customFields', 'list']).sortBy((i) => i.index), field: state.getIn(['customFields', 'instance']), loading: state.getIn(['customFields', 'fetchRequest', 'loading']), sites: state.getIn(['site', 'list']), errors: state.getIn(['customFields', 'saveRequest', 'errors']), }), { init, fetchList, save, remove, } )(withPageTitle('Metadata - OpenReplay Preferences')(CustomFields));