- Split frontend/src/lib/api.ts (2042 lines) into 12 focused domain modules: client.ts (base HTTP/auth), calendar.ts, documents.ts, employees.ts, equipment.ts, feed.ts, messages.ts, notifications.ts, procurement.ts, requests.ts, utils.ts, and index.ts barrel that preserves all existing imports - Extract calendar modal state from AppShell into useCalendarModals hook - Extract CalendarModals and MobileDrawers into components/layout/ - AppShell: 745 → 460 lines, focused on layout concerns only - Fix setState-in-effect lint error with startTransition pattern - Stabilize notifications memo to prevent unnecessary re-renders - Fix flaky WS test: handle CancelledError in channels-testing cleanup - All 609 backend tests pass, TypeScript typecheck clean, ESLint clean
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
/**
|
|
* API Client — assembled from domain modules.
|
|
* Import: import { apiClient } from "@/lib/api"
|
|
*/
|
|
import { ApiClientBase } from './client';
|
|
import { createEmployeesApi } from './employees';
|
|
import { createDocumentsApi } from './documents';
|
|
import { createMessagesApi } from './messages';
|
|
import { createNotificationsApi } from './notifications';
|
|
import { createCalendarApi } from './calendar';
|
|
import { createFeedApi } from './feed';
|
|
import { createRequestsApi } from './requests';
|
|
import { createEquipmentApi } from './equipment';
|
|
import { createProcurementApi } from './procurement';
|
|
|
|
const base = new ApiClientBase();
|
|
const req = base.request.bind(base);
|
|
const tok = base.getToken.bind(base);
|
|
|
|
export const apiClient = Object.assign(base, {
|
|
...createEmployeesApi(req),
|
|
...createDocumentsApi(req),
|
|
...createMessagesApi(req, tok),
|
|
...createNotificationsApi(req),
|
|
...createCalendarApi(req, tok),
|
|
...createFeedApi(req, tok),
|
|
...createRequestsApi(req, tok),
|
|
...createEquipmentApi(req, tok),
|
|
...createProcurementApi(req),
|
|
});
|
|
|
|
export default apiClient;
|