import { Fragment, useState } from 'react'; // Redux import { useDispatch, useSelector } from 'react-redux'; import { State } from '../../../../store/reducers'; import { bindActionCreators } from 'redux'; import { actionCreators } from '../../../../store'; // Typescript import { Query } from '../../../../interfaces'; // CSS import classes from './CustomQueries.module.css'; // UI import { Modal, Icon, Button } from '../../../UI'; // Components import { QueriesForm } from './QueriesForm'; export const CustomQueries = (): JSX.Element => { const { customQueries, config } = useSelector((state: State) => state.config); const dispatch = useDispatch(); const { deleteQuery, createNotification } = bindActionCreators( actionCreators, dispatch ); const [modalIsOpen, setModalIsOpen] = useState(false); const [editableQuery, setEditableQuery] = useState(null); const updateHandler = (query: Query) => { setEditableQuery(query); setModalIsOpen(true); }; const deleteHandler = (query: Query) => { const currentProvider = 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)}> ))}
); };