From b4d0ed1537ba9f61472a0c35701ae662ff09a68b Mon Sep 17 00:00:00 2001 From: rstubryan Date: Thu, 26 Feb 2026 15:39:49 +0700 Subject: [PATCH] refactor(FE): Refactor product options handling in InventoryAdjustmentForm --- .../form/InventoryAdjustmentForm.tsx | 32 +++++++------------ 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/src/components/pages/inventory/adjustment/form/InventoryAdjustmentForm.tsx b/src/components/pages/inventory/adjustment/form/InventoryAdjustmentForm.tsx index 6beeb793..7efc184a 100644 --- a/src/components/pages/inventory/adjustment/form/InventoryAdjustmentForm.tsx +++ b/src/components/pages/inventory/adjustment/form/InventoryAdjustmentForm.tsx @@ -1,6 +1,6 @@ 'use client'; -import { isResponseError } from '@/lib/api-helper'; +import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; import { InventoryAdjustmentApi, ProductWarehouseApi, @@ -182,10 +182,9 @@ const InventoryAdjustmentForm = ({ const { setInputValue: setProductInputValue, - options: productOptions, - rawData: productWarehouseRawData, isLoadingOptions: isLoadingProductOptions, loadMore: loadMoreProducts, + rawData: productWarehouses, } = useSelect( selectedKandang && selectedProjectFlockLocationId ? ProductWarehouseApi.basePath @@ -199,6 +198,15 @@ const InventoryAdjustmentForm = ({ } ); + const productOptions = useMemo(() => { + return isResponseSuccess(productWarehouses) + ? productWarehouses.data.map((pw) => ({ + value: pw.product.id, + label: pw.product.name, + })) + : []; + }, [productWarehouses]); + const kandangOptions = useMemo(() => { let options: OptionType[] = []; @@ -345,23 +353,7 @@ const InventoryAdjustmentForm = ({ const productChangeHandler = (val: OptionType | OptionType[] | null) => { const product = val as OptionType | null; - const productWarehouseId = product?.value ?? 0; - - let productId = 0; - if ( - productWarehouseId && - productWarehouseRawData && - 'data' in productWarehouseRawData - ) { - const productWarehouses = - productWarehouseRawData.data as ProductWarehouse[]; - const selectedProductWarehouse = productWarehouses.find( - (pw) => pw.id === productWarehouseId - ); - if (selectedProductWarehouse) { - productId = selectedProductWarehouse.product_id; - } - } + const productId = (product?.value as number) ?? 0; formik.setFieldTouched('product', true); formik.setFieldValue('product', product);