diff --git a/src/components/inventory/Inventory.tsx b/src/components/inventory/Inventory.tsx index 2abbb56..3cf3792 100644 --- a/src/components/inventory/Inventory.tsx +++ b/src/components/inventory/Inventory.tsx @@ -11,8 +11,7 @@ import { useDeleteSource } from '../../hooks/sources/useDeleteSource'; import styles from './Inventory.module.scss'; export default function Inventory() { - const [itemToDelete, setItemToDelete] = useState(null); - const [loading, deleteComplete] = useDeleteSource(itemToDelete); + const [deleteSource, deleteComplete] = useDeleteSource(); const [updatedSource, setUpdatedSource] = useState< SourceWithId | undefined >(); @@ -31,7 +30,6 @@ export default function Inventory() { useEffect(() => { if (deleteComplete) { - setItemToDelete(null); setCurrentSource(null); } }, [deleteComplete]); @@ -86,18 +84,20 @@ export default function Inventory() { {currentSource ? ( -
+
setUpdatedSource(source)} close={() => setCurrentSource(null)} - deleteInventorySource={(source) => setItemToDelete(source)} + deleteInventorySource={(source) => deleteSource(source)} />
) : null} diff --git a/src/hooks/sources/useDeleteSource.tsx b/src/hooks/sources/useDeleteSource.tsx index d67e9ae..29c4bb1 100644 --- a/src/hooks/sources/useDeleteSource.tsx +++ b/src/hooks/sources/useDeleteSource.tsx @@ -1,13 +1,14 @@ -import { useEffect, useState } from 'react'; +import { useState } from 'react'; import { SourceWithId } from '../../interfaces/Source'; +import { CallbackHook } from '../types'; -export function useDeleteSource(source: SourceWithId | null) { - const [loading, setLoading] = useState(true); +export function useDeleteSource(): CallbackHook< + (source: SourceWithId) => void +> { const [deleteComplete, setDeleteComplete] = useState(false); - useEffect(() => { + const setSourceToPurge = (source: SourceWithId) => { if (source && source.status === 'gone') { - setLoading(true); setDeleteComplete(false); fetch(`/api/manager/inventory/${source._id}`, { @@ -17,22 +18,19 @@ export function useDeleteSource(source: SourceWithId | null) { }) .then((response) => { if (!response.ok) { - setLoading(false); setDeleteComplete(true); return response.text().then((message) => { throw new Error(`Error ${response.status}: ${message}`); }); } - setLoading(false); setDeleteComplete(true); }) .catch((e) => { console.log(`Failed to delete source-item: ${e}`); }); } else { - setLoading(false); setDeleteComplete(false); } - }, [source]); - return [loading, deleteComplete]; + }; + return [setSourceToPurge, deleteComplete]; }