import { useEffect, useState } from 'react'; import { useSession } from 'next-auth/react'; import Link from 'next/link'; import Input from '../../components/input'; import styles from '../../styles/create.module.scss'; import { Category } from '../../types'; import { BuildCategory } from '../../utils/front'; import { PrismaClient } from '@prisma/client'; import Selector from '../../components/selector'; import Head from 'next/head'; const prisma = new PrismaClient(); export default function CreateLink({ categories }: { categories: Category[]; }) { const { status } = useSession({ required: true }); const [name, setName] = useState(''); const [url, setUrl] = useState(''); const [categoryId, setCategoryId] = useState(categories?.[0].id || null); const [canSubmit, setCanSubmit] = useState(false); useEffect(() => { const regex = new RegExp('https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,}'); if (name !== '' && url.match(regex) && categoryId !== null) { setCanSubmit(false); } else { setCanSubmit(true); } }, [name, url, categoryId]); if (status === 'loading') { return (

Chargement de la session en cours

) } const handleSubmit = (event) => { event.preventDefault(); console.log('On peut envoyer la requête pour créer un lien'); } return (<> Superpipo — Créer un lien

Créer un lien

setName(value)} value={name} fieldClass={styles['input-field']} placeholder='Label du lien' /> setUrl(value)} value={name} fieldClass={styles['input-field']} placeholder='URL du lien' /> setCategoryId(value)} > {categories.map((category, key) => ( ))}
← Revenir à l'accueil
); } export async function getStaticProps() { const categoriesDB = await prisma.category.findMany(); const categories = categoriesDB.map((categoryDB) => BuildCategory(categoryDB)); return { props: { categories: JSON.parse(JSON.stringify(categories)) } } }