import { readItems, readPage, readPageSize, readTotalCount } from "@/api/paginated-response-fields"; export interface PaginatedResult { items: T[]; totalCount: number; page: number; pageSize: number; } function isRecord(value: unknown): value is Record { return typeof value === "object" && value !== null && !Array.isArray(value); } export function handleApiResponse(data: unknown): T { if (Array.isArray(data)) { return data as T; } if (isRecord(data)) { const nested = data.data ?? data.Data ?? data.value; if (nested !== undefined) { return nested as T; } } return data as T; } export function handlePaginatedResponse( data: unknown, params?: { page?: number; pageSize?: number }, ): PaginatedResult { const page = params?.page ?? 1; const pageSize = params?.pageSize ?? 12; if (Array.isArray(data)) { return { items: data as T[], totalCount: data.length, page, pageSize, }; } if (isRecord(data)) { const items = readItems(data); return { items, totalCount: readTotalCount(data, items.length), page: readPage(data, page), pageSize: readPageSize(data, pageSize), }; } return { items: [], totalCount: 0, page, pageSize, }; }