import { Fragment, useState } from 'react'; import { connect } from 'react-redux'; import classes from './CustomQueries.module.css'; import Modal from '../../../UI/Modal/Modal'; import Icon from '../../../UI/Icons/Icon/Icon'; import { Config, GlobalState, NewNotification, Query, } from '../../../../interfaces'; import QueriesForm from './QueriesForm'; import { deleteQuery, createNotification } from '../../../../store/actions'; import Button from '../../../UI/Buttons/Button/Button'; interface Props { customQueries: Query[]; deleteQuery: (prefix: string) => {}; createNotification: (notification: NewNotification) => void; config: Config; } const CustomQueries = (props: Props): JSX.Element => { const { customQueries, deleteQuery, createNotification } = props; const [modalIsOpen, setModalIsOpen] = useState(false); const [editableQuery, setEditableQuery] = useState(null); const updateHandler = (query: Query) => { setEditableQuery(query); setModalIsOpen(true); }; const deleteHandler = (query: Query) => { const currentProvider = props.config.defaultSearchProvider; const isCurrent = currentProvider === query.prefix; if (isCurrent) { createNotification({ title: 'Error', message: 'Cannot delete active provider', }); } else if ( window.confirm(`Are you sure you want to delete this provider?`) ) { deleteQuery(query.prefix); } }; return ( setModalIsOpen(!modalIsOpen)} > {editableQuery ? ( setModalIsOpen(!modalIsOpen)} query={editableQuery} /> ) : ( setModalIsOpen(!modalIsOpen)} /> )}
{customQueries.length > 0 && ( Name Prefix Actions
)} {customQueries.map((q: Query, idx) => ( {q.name} {q.prefix} updateHandler(q)}> deleteHandler(q)}> ))}
); }; const mapStateToProps = (state: GlobalState) => { return { customQueries: state.config.customQueries, config: state.config.config, }; }; export default connect(mapStateToProps, { deleteQuery, createNotification })( CustomQueries );