import { KeyIcon, ServerIcon } from '@primer/octicons-react'; import { useEffect, useState } from 'react'; import { Link, useFetcher } from 'react-router'; import Code from '~/components/Code'; import Dialog from '~/components/Dialog'; import Menu from '~/components/Menu'; import Select from '~/components/Select'; import Spinner from '~/components/Spinner'; import TextField from '~/components/TextField'; import { toast } from '~/components/Toaster'; import type { User } from '~/types'; export interface NewProps { server: string; users: User[]; } export default function New(data: NewProps) { const fetcher = useFetcher<{ success?: boolean }>(); const [pushDialog, setPushDialog] = 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]); return ( <> Register Machine Key The machine key is given when you run{' '} tailscale up --login-server= {data.server} {' '} on your device. Add Device setPushDialog(true)}> Register Machine Key Generate Pre-auth Key ); }