Refactor API layer into structured domain-specific modules
- Created new api/ directory with domain-specific API modules: - api/client.ts: Base API client with error handling - api/auth.ts: Authentication endpoints - api/exchange.ts: Exchange/price endpoints - api/trades.ts: User trade endpoints - api/profile.ts: Profile management endpoints - api/invites.ts: Invite endpoints - api/admin.ts: Admin endpoints - api/index.ts: Centralized exports - Migrated all API calls from ad-hoc api.get/post/put to typed domain APIs - Updated all imports across codebase - Fixed test mocks to use new API structure - Fixed type issues in validation utilities - Removed old api.ts file Benefits: - Type-safe endpoints (no more string typos) - Centralized API surface (easy to discover endpoints) - Better organization (domain-specific modules) - Uses generated OpenAPI types automatically
This commit is contained in:
parent
6d0f125536
commit
a6fa6a8012
24 changed files with 529 additions and 255 deletions
|
|
@ -9,16 +9,19 @@ import { useEffect, useRef, useState } from "react";
|
|||
* @param delay - Debounce delay in milliseconds (default: 500)
|
||||
* @returns Object containing current errors and a function to manually trigger validation
|
||||
*/
|
||||
export function useDebouncedValidation<T>(
|
||||
export function useDebouncedValidation<
|
||||
T,
|
||||
E extends Record<string, string | undefined> = Record<string, string>,
|
||||
>(
|
||||
formData: T,
|
||||
validator: (data: T) => Record<string, string>,
|
||||
validator: (data: T) => E,
|
||||
delay: number = 500
|
||||
): {
|
||||
errors: Record<string, string>;
|
||||
setErrors: React.Dispatch<React.SetStateAction<Record<string, string>>>;
|
||||
errors: E;
|
||||
setErrors: React.Dispatch<React.SetStateAction<E>>;
|
||||
validate: (data?: T) => void;
|
||||
} {
|
||||
const [errors, setErrors] = useState<Record<string, string>>({});
|
||||
const [errors, setErrors] = useState<E>({} as E);
|
||||
const validationTimeoutRef = useRef<NodeJS.Timeout | null>(null);
|
||||
const formDataRef = useRef<T>(formData);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue