import { Form, useFetcher, Link } from 'react-router'; import { Dispatch, SetStateAction, useState, useEffect } from 'react'; import { PlusIcon, ServerIcon, KeyIcon } from '@primer/octicons-react'; import { cn } from '~/utils/cn'; import Code from '~/components/Code'; import Dialog from '~/components/Dialog'; import TextField from '~/components/TextField'; import Select from '~/components/Select'; import Menu from '~/components/Menu'; import Spinner from '~/components/Spinner'; import { toast } from '~/components/Toaster'; import { Machine, type User } from '~/types'; export interface NewProps { server: string; users: User[]; } export default function New(data: NewProps) { const fetcher = useFetcher<{ success?: boolean }>(); const mkeyState = useState(false); const [mkey, setMkey] = useState(''); const [user, setUser] = useState(''); const [toasted, setToasted] = useState(false); useEffect(() => { if (!fetcher.data || toasted) { return; } if (fetcher.data.success) { toast('Registered new machine'); } else { toast('Failed to register machine due to an invalid key'); } setToasted(true); }, [fetcher.data, toasted, mkey]); return ( <>
> ); }