diff --git a/app/streams/page.tsx b/app/streams/page.tsx index 2f23e7c..2e4f52f 100644 --- a/app/streams/page.tsx +++ b/app/streams/page.tsx @@ -66,9 +66,37 @@ export default function AddStream() { }, [fetchData]); + const extractTwitchUsername = (input: string): string => { + const trimmed = input.trim(); + + // If it's a URL, extract username + const urlPatterns = [ + /^https?:\/\/(www\.)?twitch\.tv\/([a-zA-Z0-9_]+)\/?$/, + /^(www\.)?twitch\.tv\/([a-zA-Z0-9_]+)\/?$/, + /^twitch\.tv\/([a-zA-Z0-9_]+)\/?$/ + ]; + + for (const pattern of urlPatterns) { + const match = trimmed.match(pattern); + if (match) { + return match[match.length - 1]; // Last capture group is always the username + } + } + + // Otherwise assume it's just a username + return trimmed; + }; + const handleInputChange = (e: React.ChangeEvent) => { const { name, value } = e.target; - setFormData((prev) => ({ ...prev, [name]: value })); + + // Special handling for twitch_username to extract from URL if needed + if (name === 'twitch_username') { + const username = extractTwitchUsername(value); + setFormData((prev) => ({ ...prev, [name]: username })); + } else { + setFormData((prev) => ({ ...prev, [name]: value })); + } // Clear validation error when user starts typing if (validationErrors[name]) { @@ -213,7 +241,7 @@ export default function AddStream() { {/* Twitch Username */}
{validationErrors.twitch_username && (