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() {
+ ✗ {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 ( -