// 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 postMutation = api.post.create.useMutation() const linksMutation = api.links.create.useMutation() function sanitizeTitleForLink(title: string) { return title.replaceAll(" ", "-").toLowerCase() } function onPostSubmit(event: FormEvent) { const form = event.target as HTMLFormElement const titleElement = form.elements.namedItem('title') as HTMLInputElement; const reviewElement = form.elements.namedItem('review') as HTMLInputElement; const imageElement = form.elements.namedItem('image') as HTMLInputElement; const typeElement = form.elements.namedItem('type') as HTMLInputElement; if (!titleElement.value || !reviewElement.value || !imageElement.value || !typeElement.value) { event.preventDefault(); setMessage("One or more values were missing!") setTimeout(() => setMessage(null), 5000) } else { const object = { name: sanitizeTitleForLink(titleElement.value), reviewContents: reviewElement.value, image: imageElement.value, type: typeElement.value } postMutation.mutate(object) } } function onLinkSubmit(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 urlMatches = urlElement.value.match(urlRegex) if (!titleElement.value || !urlElement.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 } linksMutation.mutate(object) } } return (

Create Review Post


{message}

Create Link


{message}

) }