import { ActionIcon, Button, Card, Group, Stack, Text, TextInput, Tooltip, } from '@mantine/core'; import { useDebouncedValue, useDisclosure } from '@mantine/hooks'; import { useCommonHooks, useMutationAPI } from 'hooks'; import { useEffect, useState } from 'react'; import { FiTrash } from 'react-icons/fi'; import { cardClasses, textInputClasses } from 'styles'; import type { Provider } from 'types'; import DeleteItemModal from '../Shared/DeleteItemModal'; function DebouncedSearchProvider({ searchProvider }: any) { const { theme, handleDelete } = useCommonHooks(); const [modalOpened, { open: openModal, close: closeModal }] = useDisclosure(false); const { mutateAsync } = useMutationAPI(); const [provider, setProvider] = useState(searchProvider); const [update, setUpdate] = useState({}); const [debounced] = useDebouncedValue(update, 1000); useEffect(() => { if (Object.keys(debounced).length) { mutateAsync({ method: 'PATCH', endpoint: 'api/providers', body: debounced }); } }, [debounced]); useEffect(() => { if (update !== provider && Object.keys(update).length) { setProvider(update); } }, [update]); return ( Are you sure you want to delete this Search Provider? {`"${provider.name}"`} This action cannot be undone! } /> { openModal(); }} > { setUpdate({ ...provider, name: event.target.value, }); }} /> { setUpdate({ ...provider, prefix: event.target.value, }); }} /> { setUpdate({ ...provider, url: event.target.value, }); }} /> ); } export default DebouncedSearchProvider;