From a2e04dad9feae8eefc67e4e3d099762189d75830 Mon Sep 17 00:00:00 2001 From: ValdiANS Date: Thu, 15 Jan 2026 16:55:16 +0700 Subject: [PATCH] chore: implement delete error message toast --- .../pages/master-data/area/AreasTable.tsx | 11 +++++++++-- .../pages/master-data/bank/BanksTable.tsx | 11 +++++++++-- .../pages/master-data/customer/CustomersTable.tsx | 13 +++++++++++-- .../pages/master-data/fcr/FcrsTable.tsx | 11 +++++++++-- .../pages/master-data/flock/FlocksTable.tsx | 11 +++++++++-- .../pages/master-data/kandang/KandangsTable.tsx | 13 +++++++++++-- .../pages/master-data/location/LocationsTable.tsx | 13 +++++++++++-- .../pages/master-data/nonstock/NonstocksTable.tsx | 13 +++++++++++-- .../product-category/ProductCategoryTable.tsx | 13 +++++++++++-- .../pages/master-data/product/ProductTable.tsx | 15 +++++++++++++-- .../ProductionStandardTable.tsx | 11 +++++++++-- .../pages/master-data/supplier/SupplierTable.tsx | 13 +++++++++++-- .../pages/master-data/uom/UomsTable.tsx | 11 +++++++++-- .../master-data/warehouse/WarehousesTable.tsx | 13 +++++++++++-- 14 files changed, 144 insertions(+), 28 deletions(-) diff --git a/src/components/pages/master-data/area/AreasTable.tsx b/src/components/pages/master-data/area/AreasTable.tsx index 45c4fdff..d92c7840 100644 --- a/src/components/pages/master-data/area/AreasTable.tsx +++ b/src/components/pages/master-data/area/AreasTable.tsx @@ -20,7 +20,7 @@ import RequirePermission from '@/components/helper/RequirePermission'; import { Area } from '@/types/api/master-data/area'; import { AreaApi } from '@/services/api/master-data'; import { cn } from '@/lib/helper'; -import { isResponseSuccess } from '@/lib/api-helper'; +import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; import { useTableFilter } from '@/services/hooks/useTableFilter'; import { ROWS_OPTIONS } from '@/config/constant'; @@ -164,7 +164,14 @@ const AreasTable = () => { const confirmationModalDeleteClickHandler = async () => { setIsDeleteLoading(true); - await AreaApi.delete(selectedArea?.id as number); + const deleteResponse = await AreaApi.delete(selectedArea?.id as number); + + if (isResponseError(deleteResponse)) { + toast.error(deleteResponse.message); + setIsDeleteLoading(false); + return; + } + refreshAreas(); deleteModal.closeModal(); diff --git a/src/components/pages/master-data/bank/BanksTable.tsx b/src/components/pages/master-data/bank/BanksTable.tsx index f28f4bd0..c5a564fe 100644 --- a/src/components/pages/master-data/bank/BanksTable.tsx +++ b/src/components/pages/master-data/bank/BanksTable.tsx @@ -20,7 +20,7 @@ import RequirePermission from '@/components/helper/RequirePermission'; import { Bank } from '@/types/api/master-data/bank'; import { BankApi } from '@/services/api/master-data'; import { cn } from '@/lib/helper'; -import { isResponseSuccess } from '@/lib/api-helper'; +import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; import { useTableFilter } from '@/services/hooks/useTableFilter'; import { ROWS_OPTIONS } from '@/config/constant'; @@ -177,7 +177,14 @@ const BanksTable = () => { const confirmationModalDeleteClickHandler = async () => { setIsDeleteLoading(true); - await BankApi.delete(selectedBank?.id as number); + const deleteResponse = await BankApi.delete(selectedBank?.id as number); + + if (isResponseError(deleteResponse)) { + toast.error(deleteResponse.message); + setIsDeleteLoading(false); + return; + } + refreshBanks(); deleteModal.closeModal(); diff --git a/src/components/pages/master-data/customer/CustomersTable.tsx b/src/components/pages/master-data/customer/CustomersTable.tsx index 3e442620..e605d9f7 100644 --- a/src/components/pages/master-data/customer/CustomersTable.tsx +++ b/src/components/pages/master-data/customer/CustomersTable.tsx @@ -11,7 +11,7 @@ import RowDropdownOptions from '@/components/table/RowDropdownOptions'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; import RequirePermission from '@/components/helper/RequirePermission'; import { ROWS_OPTIONS } from '@/config/constant'; -import { isResponseSuccess } from '@/lib/api-helper'; +import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; import { cn } from '@/lib/helper'; import { CustomerApi } from '@/services/api/master-data'; import { useTableFilter } from '@/services/hooks/useTableFilter'; @@ -186,7 +186,16 @@ const CustomersTable = () => { const confirmationModalDeleteClickHandler = async () => { setIsDeleteLoading(true); - await CustomerApi.delete(selectedCustomer?.id as number); + const deleteResponse = await CustomerApi.delete( + selectedCustomer?.id as number + ); + + if (isResponseError(deleteResponse)) { + toast.error(deleteResponse.message); + setIsDeleteLoading(false); + return; + } + refreshCustomers(); deleteModal.closeModal(); diff --git a/src/components/pages/master-data/fcr/FcrsTable.tsx b/src/components/pages/master-data/fcr/FcrsTable.tsx index 2d65a406..2eb8d8da 100644 --- a/src/components/pages/master-data/fcr/FcrsTable.tsx +++ b/src/components/pages/master-data/fcr/FcrsTable.tsx @@ -20,7 +20,7 @@ import RequirePermission from '@/components/helper/RequirePermission'; import { Fcr } from '@/types/api/master-data/fcr'; import { FcrApi } from '@/services/api/master-data'; import { cn } from '@/lib/helper'; -import { isResponseSuccess } from '@/lib/api-helper'; +import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; import { useTableFilter } from '@/services/hooks/useTableFilter'; import { ROWS_OPTIONS } from '@/config/constant'; @@ -164,7 +164,14 @@ const FcrsTable = () => { const confirmationModalDeleteClickHandler = async () => { setIsDeleteLoading(true); - await FcrApi.delete(selectedFcr?.id as number); + const deleteResponse = await FcrApi.delete(selectedFcr?.id as number); + + if (isResponseError(deleteResponse)) { + toast.error(deleteResponse.message); + setIsDeleteLoading(false); + return; + } + refreshFcrs(); deleteModal.closeModal(); diff --git a/src/components/pages/master-data/flock/FlocksTable.tsx b/src/components/pages/master-data/flock/FlocksTable.tsx index ce8f701a..baeaa69e 100644 --- a/src/components/pages/master-data/flock/FlocksTable.tsx +++ b/src/components/pages/master-data/flock/FlocksTable.tsx @@ -19,7 +19,7 @@ import DebouncedTextInput from '@/components/input/DebouncedTextInput'; import SelectInput, { OptionType } from '@/components/input/SelectInput'; import { ROWS_OPTIONS } from '@/config/constant'; import Table from '@/components/Table'; -import { isResponseSuccess } from '@/lib/api-helper'; +import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; import ConfirmationModal from '@/components/modal/ConfirmationModal'; const RowsOptions = ({ @@ -182,7 +182,14 @@ const FlockTable = () => { const confirmationModalDeleteClickHandler = async () => { setIsDeleteLoading(true); - await FlockApi.delete(selectedFlock?.id as number); + const deleteResponse = await FlockApi.delete(selectedFlock?.id as number); + + if (isResponseError(deleteResponse)) { + toast.error(deleteResponse.message); + setIsDeleteLoading(false); + return; + } + refreshFlocks(); deleteModal.closeModal(); diff --git a/src/components/pages/master-data/kandang/KandangsTable.tsx b/src/components/pages/master-data/kandang/KandangsTable.tsx index 1bd7badb..7d79d456 100644 --- a/src/components/pages/master-data/kandang/KandangsTable.tsx +++ b/src/components/pages/master-data/kandang/KandangsTable.tsx @@ -25,7 +25,7 @@ import RequirePermission from '@/components/helper/RequirePermission'; import { Kandang } from '@/types/api/master-data/kandang'; import { KandangApi } from '@/services/api/master-data'; import { cn, formatNumber } from '@/lib/helper'; -import { isResponseSuccess } from '@/lib/api-helper'; +import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; import { useTableFilter } from '@/services/hooks/useTableFilter'; import { ROWS_OPTIONS } from '@/config/constant'; @@ -199,7 +199,16 @@ const KandangsTable = () => { const confirmationModalDeleteClickHandler = async () => { setIsDeleteLoading(true); - await KandangApi.delete(selectedKandang?.id as number); + const deleteResponse = await KandangApi.delete( + selectedKandang?.id as number + ); + + if (isResponseError(deleteResponse)) { + toast.error(deleteResponse.message); + setIsDeleteLoading(false); + return; + } + refreshKandangs(); deleteModal.closeModal(); diff --git a/src/components/pages/master-data/location/LocationsTable.tsx b/src/components/pages/master-data/location/LocationsTable.tsx index 10fe46c9..a35ffd09 100644 --- a/src/components/pages/master-data/location/LocationsTable.tsx +++ b/src/components/pages/master-data/location/LocationsTable.tsx @@ -25,7 +25,7 @@ import RequirePermission from '@/components/helper/RequirePermission'; import { Location } from '@/types/api/master-data/location'; import { LocationApi } from '@/services/api/master-data'; import { cn } from '@/lib/helper'; -import { isResponseSuccess } from '@/lib/api-helper'; +import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; import { useTableFilter } from '@/services/hooks/useTableFilter'; import { ROWS_OPTIONS } from '@/config/constant'; @@ -186,7 +186,16 @@ const LocationsTable = () => { const confirmationModalDeleteClickHandler = async () => { setIsDeleteLoading(true); - await LocationApi.delete(selectedLocation?.id as number); + const deleteResponse = await LocationApi.delete( + selectedLocation?.id as number + ); + + if (isResponseError(deleteResponse)) { + toast.error(deleteResponse.message); + setIsDeleteLoading(false); + return; + } + refreshLocations(); deleteModal.closeModal(); diff --git a/src/components/pages/master-data/nonstock/NonstocksTable.tsx b/src/components/pages/master-data/nonstock/NonstocksTable.tsx index 7066c19a..6aeb3f99 100644 --- a/src/components/pages/master-data/nonstock/NonstocksTable.tsx +++ b/src/components/pages/master-data/nonstock/NonstocksTable.tsx @@ -25,7 +25,7 @@ import RequirePermission from '@/components/helper/RequirePermission'; import { Nonstock } from '@/types/api/master-data/nonstock'; import { NonstockApi } from '@/services/api/master-data'; import { cn } from '@/lib/helper'; -import { isResponseSuccess } from '@/lib/api-helper'; +import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; import { useTableFilter } from '@/services/hooks/useTableFilter'; import { ROWS_OPTIONS } from '@/config/constant'; @@ -198,7 +198,16 @@ const NonstocksTable = () => { const confirmationModalDeleteClickHandler = async () => { setIsDeleteLoading(true); - await NonstockApi.delete(selectedNonstock?.id as number); + const deleteResponse = await NonstockApi.delete( + selectedNonstock?.id as number + ); + + if (isResponseError(deleteResponse)) { + toast.error(deleteResponse.message); + setIsDeleteLoading(false); + return; + } + refreshNonstocks(); deleteModal.closeModal(); diff --git a/src/components/pages/master-data/product-category/ProductCategoryTable.tsx b/src/components/pages/master-data/product-category/ProductCategoryTable.tsx index a9b98bcb..e25dfd56 100644 --- a/src/components/pages/master-data/product-category/ProductCategoryTable.tsx +++ b/src/components/pages/master-data/product-category/ProductCategoryTable.tsx @@ -20,7 +20,7 @@ import RequirePermission from '@/components/helper/RequirePermission'; import { ProductCategory } from '@/types/api/master-data/product-category'; import { ProductCategoryApi } from '@/services/api/master-data'; import { cn } from '@/lib/helper'; -import { isResponseSuccess } from '@/lib/api-helper'; +import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; import { useTableFilter } from '@/services/hooks/useTableFilter'; import { ROWS_OPTIONS } from '@/config/constant'; @@ -170,7 +170,16 @@ const ProductCategoryTable = () => { const confirmationModalDeleteClickHandler = async () => { setIsDeleteLoading(true); - await ProductCategoryApi.delete(selectedProductCategory?.id as number); + const deleteResponse = await ProductCategoryApi.delete( + selectedProductCategory?.id as number + ); + + if (isResponseError(deleteResponse)) { + toast.error(deleteResponse.message); + setIsDeleteLoading(false); + return; + } + refreshProductCategories(); deleteModal.closeModal(); diff --git a/src/components/pages/master-data/product/ProductTable.tsx b/src/components/pages/master-data/product/ProductTable.tsx index 957d0551..74137a14 100644 --- a/src/components/pages/master-data/product/ProductTable.tsx +++ b/src/components/pages/master-data/product/ProductTable.tsx @@ -25,7 +25,7 @@ import RequirePermission from '@/components/helper/RequirePermission'; import { Product } from '@/types/api/master-data/product'; import { ProductApi } from '@/services/api/master-data'; import { cn } from '@/lib/helper'; -import { isResponseSuccess } from '@/lib/api-helper'; +import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; import { useTableFilter } from '@/services/hooks/useTableFilter'; import { ROWS_OPTIONS } from '@/config/constant'; @@ -230,8 +230,19 @@ const ProductsTable = () => { const confirmationModalDeleteClickHandler = async () => { setIsDeleteLoading(true); - await ProductApi.delete(selectedProduct?.id as number); + + const deleteResponse = await ProductApi.delete( + selectedProduct?.id as number + ); + + if (isResponseError(deleteResponse)) { + toast.error(deleteResponse.message); + setIsDeleteLoading(false); + return; + } + refreshProducts(); + deleteModal.closeModal(); toast.success('Successfully delete Product!'); setIsDeleteLoading(false); diff --git a/src/components/pages/master-data/production-standard/ProductionStandardTable.tsx b/src/components/pages/master-data/production-standard/ProductionStandardTable.tsx index afa41295..b56e31bd 100644 --- a/src/components/pages/master-data/production-standard/ProductionStandardTable.tsx +++ b/src/components/pages/master-data/production-standard/ProductionStandardTable.tsx @@ -7,7 +7,7 @@ import { ProductionStandard } from '@/types/api/master-data/production-standard' import { Icon } from '@iconify/react'; import useSWR from 'swr'; import { ProductionStandardApi } from '@/services/api/master-data'; -import { isResponseSuccess } from '@/lib/api-helper'; +import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; import { CellContext } from '@tanstack/react-table'; import { useModal } from '@/components/Modal'; @@ -94,9 +94,16 @@ const ProductionStandardTable = () => { const confirmationModalDeleteClickHandler = async () => { setIsDeleteLoading(true); - await ProductionStandardApi.delete( + const deleteResponse = await ProductionStandardApi.delete( selectedProductionStandard?.id as number ); + + if (isResponseError(deleteResponse)) { + toast.error(deleteResponse.message); + setIsDeleteLoading(false); + return; + } + refreshProductionStandards(); deleteModal.closeModal(); diff --git a/src/components/pages/master-data/supplier/SupplierTable.tsx b/src/components/pages/master-data/supplier/SupplierTable.tsx index 3e10c9c8..2620c9e6 100644 --- a/src/components/pages/master-data/supplier/SupplierTable.tsx +++ b/src/components/pages/master-data/supplier/SupplierTable.tsx @@ -11,7 +11,7 @@ import RowDropdownOptions from '@/components/table/RowDropdownOptions'; import RowOptionsMenuWrapper from '@/components/table/RowOptionsMenuWrapper'; import RequirePermission from '@/components/helper/RequirePermission'; import { ROWS_OPTIONS } from '@/config/constant'; -import { isResponseSuccess } from '@/lib/api-helper'; +import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; import { cn } from '@/lib/helper'; import { SupplierApi } from '@/services/api/master-data'; import { useTableFilter } from '@/services/hooks/useTableFilter'; @@ -205,7 +205,16 @@ const SuppliersTable = () => { const confirmationModalDeleteClickHandler = async () => { setIsDeleteLoading(true); - await SupplierApi.delete(selectedSupplier?.id as number); + const deleteResponse = await SupplierApi.delete( + selectedSupplier?.id as number + ); + + if (isResponseError(deleteResponse)) { + toast.error(deleteResponse.message); + setIsDeleteLoading(false); + return; + } + refreshSuppliers(); deleteModal.closeModal(); diff --git a/src/components/pages/master-data/uom/UomsTable.tsx b/src/components/pages/master-data/uom/UomsTable.tsx index 851647b9..51e95661 100644 --- a/src/components/pages/master-data/uom/UomsTable.tsx +++ b/src/components/pages/master-data/uom/UomsTable.tsx @@ -20,7 +20,7 @@ import RequirePermission from '@/components/helper/RequirePermission'; import { Uom } from '@/types/api/master-data/uom'; import { UomApi } from '@/services/api/master-data'; import { cn } from '@/lib/helper'; -import { isResponseSuccess } from '@/lib/api-helper'; +import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; import { useTableFilter } from '@/services/hooks/useTableFilter'; import { ROWS_OPTIONS } from '@/config/constant'; @@ -164,7 +164,14 @@ const UomsTable = () => { const confirmationModalDeleteClickHandler = async () => { setIsDeleteLoading(true); - await UomApi.delete(selectedUom?.id as number); + const deleteResponse = await UomApi.delete(selectedUom?.id as number); + + if (isResponseError(deleteResponse)) { + toast.error(deleteResponse.message); + setIsDeleteLoading(false); + return; + } + refreshUoms(); deleteModal.closeModal(); diff --git a/src/components/pages/master-data/warehouse/WarehousesTable.tsx b/src/components/pages/master-data/warehouse/WarehousesTable.tsx index fe694322..62c39574 100644 --- a/src/components/pages/master-data/warehouse/WarehousesTable.tsx +++ b/src/components/pages/master-data/warehouse/WarehousesTable.tsx @@ -25,7 +25,7 @@ import RequirePermission from '@/components/helper/RequirePermission'; import { Warehouse } from '@/types/api/master-data/warehouse'; import { WarehouseApi } from '@/services/api/master-data'; import { cn } from '@/lib/helper'; -import { isResponseSuccess } from '@/lib/api-helper'; +import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; import { useTableFilter } from '@/services/hooks/useTableFilter'; import { ROWS_OPTIONS } from '@/config/constant'; @@ -220,7 +220,16 @@ const WarehousesTable = () => { const confirmationModalDeleteClickHandler = async () => { setIsDeleteLoading(true); - await WarehouseApi.delete(selectedWarehouse?.id as number); + const deleteResponse = await WarehouseApi.delete( + selectedWarehouse?.id as number + ); + + if (isResponseError(deleteResponse)) { + toast.error(deleteResponse.message); + setIsDeleteLoading(false); + return; + } + refreshWarehouses(); deleteModal.closeModal();