diff --git a/src/pages/Signup.jsx b/src/pages/Signup.jsx index d77c65e..5f0498f 100644 --- a/src/pages/Signup.jsx +++ b/src/pages/Signup.jsx @@ -81,6 +81,21 @@ export default function Signup() { setError('') // Validation + if (!formData.businessName.trim()) { + setError('Please enter your business name') + return + } + + if (formData.slug.length < 3) { + setError('URL slug must be at least 3 characters') + return + } + + if (slugAvailable === false) { + setError('This URL is already taken. Please choose another.') + return + } + if (formData.password !== formData.confirmPassword) { setError('Passwords do not match') return @@ -91,18 +106,25 @@ export default function Signup() { return } - if (!slugAvailable) { - setError('Please choose a different URL slug') - return - } - - if (formData.slug.length < 3) { - setError('URL slug must be at least 3 characters') - return - } - setLoading(true) + // Double-check slug availability before creating + try { + const response = await databases.listDocuments( + DATABASE_ID, + COLLECTIONS.CLIENTS, + [Query.equal('slug', formData.slug)] + ) + if (response.documents.length > 0) { + setError('This URL was just taken. Please choose another.') + setSlugAvailable(false) + setLoading(false) + return + } + } catch (err) { + // Continue with creation if check fails + } + try { // Create client record const clientId = generateId() @@ -396,7 +418,7 @@ export default function Signup() { {/* Submit Button */}