import { useMutation } from '@apollo/client' import { gql } from 'graphql-tag' import { useState } from 'react' import Alert from 'react-bootstrap/Alert' import Button from 'react-bootstrap/Button' import Dropdown from 'react-bootstrap/Dropdown' import { useShowModal } from './modal' import { useToast } from './toast' export default function Delete ({ itemId, children, onDelete, type = 'post' }) { const showModal = useShowModal() const [deleteItem] = useMutation( gql` mutation deleteItem($id: ID!) { deleteItem(id: $id) { text title url pollCost deletedAt } }`, { update (cache, { data: { deleteItem } }) { cache.modify({ id: `Item:${itemId}`, fields: { text: () => deleteItem.text, title: () => deleteItem.title, url: () => deleteItem.url, pollCost: () => deleteItem.pollCost, deletedAt: () => deleteItem.deletedAt } }) } } ) return ( { showModal(onClose => { return ( { const { error } = await deleteItem({ variables: { id: itemId } }) if (error) { throw new Error({ message: error.toString() }) } if (onDelete) { onDelete() } onClose() }} /> ) }) }} >{children} ) } export function DeleteConfirm ({ onConfirm, type }) { const [error, setError] = useState() const toaster = useToast() return ( <> {error && setError(undefined)} dismissible>{error}}

Are you sure? This is a gone forever kind of delete.

) } export function DeleteDropdownItem (props) { return ( delete ) }