- 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
30 lines
787 B
TypeScript
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 };
|
|
}
|