Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | /** * @file useDataFetchingLogic.ts * @module pages/inventory/handlers/useDataFetchingLogic * * @summary * Custom hook that prepares data fetching parameters from board state. * Transforms UI state into server-compatible query parameters. * * @enterprise * - Separation of concerns: data parameter transformation isolated * - Single responsibility: converts state to API query format * - Memoized calculations for sorting */ import { useMemo } from 'react'; import { useInventoryData } from '../hooks/useInventoryData'; import type { InventoryState, InventoryStateSetters } from '../hooks/useInventoryState'; type InventoryStateReturn = InventoryState & InventoryStateSetters; /** * Hook that prepares and executes data fetching with transformed state parameters. * * Responsibilities: * - Convert 0-based pagination to 1-based for server * - Format sort model into server query string * - Execute useInventoryData with prepared parameters * * @param state - Inventory board state object * @returns Data fetching result from useInventoryData * * @example * ```tsx * const data = useDataFetchingLogic(state); * ``` */ export function useDataFetchingLogic(state: InventoryStateReturn) { // Prepare sort parameter for server const serverSort = useMemo(() => { return state.sortModel.length ? `${state.sortModel[0].field},${state.sortModel[0].sort ?? 'asc'}` : 'name,asc'; }, [state.sortModel]); // Execute data fetching with prepared parameters const data = useInventoryData( state.supplierId, state.q, state.belowMinOnly, state.paginationModel.page + 1, // Convert 0-based to 1-based state.paginationModel.pageSize, serverSort ); return data; } |