refactor(FE): Refactor product options handling in

InventoryAdjustmentForm
This commit is contained in:
rstubryan
2026-02-26 15:39:49 +07:00
parent 36f2368e95
commit b4d0ed1537
@@ -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<ProductWarehouse>(
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);