From c76b04a32c956bac0489e03427ccc35d62b6d3d0 Mon Sep 17 00:00:00 2001 From: THIS ONE IS A LITTLE BIT TRICKY KRUB Date: Wed, 2 Apr 2025 22:26:38 +0700 Subject: [PATCH] feat: add deleteInventoryItem function and integrate with DeleteInventoryItem component --- frontend/api/inventory.ts | 18 +++++++++++------ .../inventory/delete-inventory-item.tsx | 20 ++++++++++++++++--- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/frontend/api/inventory.ts b/frontend/api/inventory.ts index 1d0e786..0c44e4e 100644 --- a/frontend/api/inventory.ts +++ b/frontend/api/inventory.ts @@ -96,12 +96,6 @@ export async function fetchInventoryItems(): Promise { } } -/** - * Simulates creating a new inventory item. - * Uses axios POST and if unavailable, returns a simulated response. - * - * Note: The function accepts all fields except id, lastUpdated, and status. - */ export async function createInventoryItem( item: Omit ): Promise { @@ -116,3 +110,15 @@ export async function createInventoryItem( throw new Error("Failed to create inventory item: " + error); } } + +export async function deleteInventoryItem(id: string) { + try { + const response = await axiosInstance.delete( + "/inventory/" + id + ); + return response.data; + } catch (error) { + console.error("Error while deleting Inventory Item! " + error); + throw new Error("Failed to deleting inventory item: " + error); + } +} diff --git a/frontend/app/(sidebar)/inventory/delete-inventory-item.tsx b/frontend/app/(sidebar)/inventory/delete-inventory-item.tsx index 56163eb..677c095 100644 --- a/frontend/app/(sidebar)/inventory/delete-inventory-item.tsx +++ b/frontend/app/(sidebar)/inventory/delete-inventory-item.tsx @@ -8,13 +8,26 @@ import { DialogFooter, } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { deleteInventoryItem } from "@/api/inventory"; export function DeleteInventoryItem({ id }: { id: string }) { const [open, setOpen] = useState(false); + const queryClient = useQueryClient(); + + const { mutate: deleteItem, status } = useMutation({ + mutationFn: deleteInventoryItem, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ["inventoryItems"] }); + setOpen(false); // Close dialog on success + }, + onError: (error) => { + console.error("Failed to delete item:", error); + }, + }); const handleDelete = () => { - console.log(`Item with ID ${id} deleted.`); - setOpen(false); + deleteItem(id.toString()); }; return ( @@ -47,8 +60,9 @@ export function DeleteInventoryItem({ id }: { id: string }) {