import { useState } from "react"; import { ApiResource, TError } from "../utils/types"; import useFetch from "./fetch"; interface IDeleteStore { error: TError; loading: boolean; deleted: Resource | null; setDeleted: (item: Resource | null) => void; del: (item: Resource) => Promise; } const useDelete = (): IDeleteStore => { const {fetch} = useFetch(); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [deleted, setDeleted] = useState(null); return { loading, error, deleted, setDeleted, del(item: Resource) { setLoading(true); return fetch(item["@id"], {method: "DELETE"}) .then(({json}) => json) .then(() => setDeleted(item)) .catch(e => setError(e)) .finally(() => setLoading(false)); }, }; } export default useDelete;