// react modules import {useState} from 'react' import type {FormEvent} from 'react'; // trpc api import { api } from "@/utils/api"; // components import RootLayout from '@/components/RootLayout'; import InputOption from '@/components/InputOption'; export default function CreatePage() { // ui states const [message, setMessage] = useState(null) // trpc hooks const linksMutation = api.links.create.useMutation() function onLinkCreateSubmit(event: FormEvent) { const form = event.target as HTMLFormElement const urlRegex = new RegExp("^((https):\/\/)?(www.)?[a-z0-9]+\.[a-z]+(\/[a-zA-Z0-9#]+\/?)*$") const titleElement = form.elements.namedItem('title') as HTMLInputElement; const urlElement = form.elements.namedItem('url') as HTMLInputElement; const orderElement = form.elements.namedItem("orderNumber") as HTMLInputElement; const urlMatches = urlElement.value.match(urlRegex) if (!titleElement.value || !urlElement.value || (orderElement.value && isNaN(Number(orderElement.value)))) { event.preventDefault(); setMessage("One or more values were missing!") setTimeout(() => setMessage(null), 5000) } else if (urlMatches != null && !urlMatches[1]) { event.preventDefault(); setMessage("An invalid URL was provided!") setTimeout(() => setMessage(null), 5000) } else { const object = { name: titleElement.value, url: urlElement.value, orderNumber: Number(orderElement.value) || 0 } linksMutation.mutate(object) } } function onLinkUpdateSubmit(event: FormEvent) { const form = event.target as HTMLFormElement const urlRegex = new RegExp("^((https):\/\/)?(www.)?[a-z0-9]+\.[a-z]+(\/[a-zA-Z0-9#]+\/?)*$") const idElement = form.elements.namedItem("id") as HTMLInputElement; const titleElement = form.elements.namedItem('title') as HTMLInputElement; const urlElement = form.elements.namedItem('url') as HTMLInputElement; const orderElement = form.elements.namedItem("orderNumber") as HTMLInputElement; const urlMatches = urlElement.value.match(urlRegex) if (!idElement.value || isNaN(Number(idElement.value)) || (orderElement.value && isNaN(Number(orderElement.value)))) { event.preventDefault(); setMessage("One or more values were missing!") setTimeout(() => setMessage(null), 5000) } else if (urlMatches != null && !urlMatches[1]) { event.preventDefault(); setMessage("An invalid URL was provided!") setTimeout(() => setMessage(null), 5000) } else { const object = { id: Number(idElement.value), name: titleElement.value, url: urlElement.value, orderNumber: Number(orderElement.value) || 0 } linksMutation.mutate(object) } } return (

Create Link


{message}

Update Link


{message}

) }