veza/apps/web/src/features/auth/hooks/useUsernameAvailability.ts
senke 8d74de447d scalability: replace direct auth API calls with authApi service
- Replaced imports in VerifyEmailPage.tsx (verifyEmail, resendVerificationEmail → authApi.verifyEmail, authApi.resendVerification)
- Replaced imports in useUsernameAvailability.ts (checkUsernameAvailability → authApi.checkUsername with response.available extraction)
- Replaced imports in usePasswordReset.ts (requestPasswordReset, resetPassword → authApi.requestPasswordReset, authApi.resetPassword)
- Replaced imports in RegisterPage.tsx (resendVerificationEmail → authApi.resendVerification)
- All function calls updated to use authApi methods with proper request object wrapping
- Test files still use direct imports (acceptable - tests can use implementation details)
- AuthContext.tsx uses services/authService (legacy service, separate from features/auth/services/authService)
- No TypeScript errors related to authApi
- Action 6.1.1.8 complete
2026-01-15 20:40:46 +01:00

30 lines
787 B
TypeScript

import { useState, useEffect } from 'react';
import { authApi } from '@/services/api/auth';
export function useUsernameAvailability(username: string) {
const [available, setAvailable] = useState<boolean | null>(null);
const [checking, setChecking] = useState(false);
useEffect(() => {
if (!username || username.length < 3) {
setAvailable(null);
return;
}
const timer = setTimeout(async () => {
setChecking(true);
try {
const response = await authApi.checkUsername({ username });
setAvailable(response.available);
} catch (error) {
setAvailable(null);
} finally {
setChecking(false);
}
}, 500);
return () => clearTimeout(timer);
}, [username]);
return { available, checking };
}