diff --git a/backend/src/routes/auth.js b/backend/src/routes/auth.js index b92fe2f..a2c5be7 100644 --- a/backend/src/routes/auth.js +++ b/backend/src/routes/auth.js @@ -33,8 +33,16 @@ router.get('/check-username', async (req, res) => { const existingUser = await User.findOne({ username: username.toLowerCase() }); + if (existingUser) { + return res.json({ + available: false, + username: username.toLowerCase(), + error: 'Username is not available' + }); + } + res.json({ - available: !existingUser, + available: true, username: username.toLowerCase() }); } catch (error) { diff --git a/frontend/src/pages/UsernameSelection.jsx b/frontend/src/pages/UsernameSelection.jsx index cca12ef..24c69aa 100644 --- a/frontend/src/pages/UsernameSelection.jsx +++ b/frontend/src/pages/UsernameSelection.jsx @@ -54,15 +54,19 @@ function UsernameSelection() { useEffect(() => { if (!username || username.length < 3) { setIsAvailable(null) + setError('') return } const timer = setTimeout(async () => { setIsChecking(true) + setError('') try { const { data } = await checkUsername(username) setIsAvailable(data.available) - setError(data.error || '') + setError( + data.error || (data.available === false ? 'Username is not available' : '') + ) } catch (err) { setError(err.response?.data?.error || 'Failed to check username') setIsAvailable(false) @@ -99,6 +103,8 @@ function UsernameSelection() { const value = e.target.value.toLowerCase().replace(/[^a-z0-9_]/g, '') if (value.length <= MAX_USERNAME_LENGTH) { setUsername(value) + setIsAvailable(null) + setError('') } } @@ -154,7 +160,7 @@ function UsernameSelection() { )} {!isChecking && isAvailable === false && ( - + )} @@ -175,7 +181,12 @@ function UsernameSelection() { ✓ Username is available!

)} - {error && ( + {isAvailable === false && !isChecking && ( +

+ ✗ {error || 'Username is not available'} +

+ )} + {error && isAvailable !== false && (

{error}

diff --git a/frontend/src/portfolio/components/Footer.jsx b/frontend/src/portfolio/components/Footer.jsx index 72955f4..5718748 100644 --- a/frontend/src/portfolio/components/Footer.jsx +++ b/frontend/src/portfolio/components/Footer.jsx @@ -26,7 +26,7 @@ function Footer({ profile, compact = false }) { const customBranding = profile?.customBranding return ( -