import { useState, FormEvent, useEffect } from 'react'; import createStyles from '../styles/Create.module.css'; import styles from '../styles/Auth.module.css'; import { Link } from 'react-router-dom'; import axios from 'axios'; import Navbar from './Navbar'; import { useNavigate } from 'react-router-dom'; function CreateLink() { document.title = 'LinkLogger | Create Short Link'; const [link, setLink] = useState(''); const [url, setURL] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); const [isCopied, setIsCopied] = useState(false); const [error, setError] = useState(null); const navigate = useNavigate(); // Get /api/users/me to make sure the user is logged in, and // to get the username for rendering on screen useEffect(() => { axios .get('/api/users/me') .then((res) => { if (res.status != 200) { navigate('/login'); } }) .catch(() => { navigate('/login'); }); }, []); const handleSubmit = async (e: FormEvent) => { e.preventDefault(); setIsSubmitting(true); try { const res = await axios.post('/api/links', { url }); if (res.status === 200) { setLink(res.data.link); } } catch (error) { setError('STRANGE'); } }; const copyLink = () => { navigator.clipboard.writeText(`${window.location.origin}/c/${link}`); setIsCopied(true); // Wait 5 seconds, then set isCopied back to false setTimeout(() => { setIsCopied(false); }, 5000); }; return ( <>

Create a new short link by entering the long URL below

{error}


setURL(e.target.value)} required /> {link.length === 0 ? ( ) : ( )}

Click here {' '} to visit your dashboard.

); } export default CreateLink;