import { useQueryClient } from '@tanstack/react-query'; import { useListSupplierItems, createSupplierItem, updateSupplyType, deleteSupplierItem, getListSupplierItemsQueryKey, } from '@/api/generated/supplier-item/supplier-item'; import type { SupplierItemData } from '@/api/generated/model/supplierItemData'; // 협력사 취급상품(매핑) 서버 데이터 + CRUD. 협력사 상세(PartnerFormSheet)에서 쓴다. // supplierId 가 없으면(신규 등록 폼) 쿼리는 비활성. export function useSupplierItems(supplierId: string | undefined) { const queryClient = useQueryClient(); const listQuery = useListSupplierItems(supplierId ?? '', { query: { enabled: !!supplierId } }); const refresh = () => supplierId ? queryClient.invalidateQueries({ queryKey: getListSupplierItemsQueryKey(supplierId) }) : Promise.resolve(); const items: SupplierItemData[] = listQuery.data?.supplier_items ?? []; const addItem = async (itemId: string, supplyType: number) => { if (!supplierId) return; const res = await createSupplierItem({ supplier_id: supplierId, item_id: itemId, supply_type: supplyType }); const r = res.result; if (r && r.success === false) { throw new Error(r.desc === 'DB_ALREADY_SAME_KEY' ? '이미 등록된 취급상품입니다.' : r.desc || '취급상품 추가 실패'); } await refresh(); }; const changeType = async (supplierItemId: string, supplyType: number) => { await updateSupplyType(supplierItemId, { supply_type: supplyType }); await refresh(); }; const removeItem = async (supplierItemId: string) => { await deleteSupplierItem(supplierItemId); await refresh(); }; return { items, isLoading: listQuery.isLoading, addItem, changeType, removeItem }; }