import { useEffect, useState } from 'react'; import { Link } from 'react-router-dom'; import { RedditUsernameLink } from '../../components/reddit-username-link.js'; import { useStartConversationMutation } from './conversation-queries.js'; import { useRedditAccountsQuery } from '../settings/settings-queries.js'; import { ownedConversationId } from './conversation-identity.js'; const SUCCESS_NOTICE_DISMISS_MS = 5_000; interface StartConversationFormProps { onStarted(conversationId: string): void; } export function StartConversationForm({ onStarted }: StartConversationFormProps) { const [username, setUsername] = useState(''); const [message, setMessage] = useState(''); const accountsQuery = useRedditAccountsQuery(); const runningAccounts = (accountsQuery.data ?? []).filter((account) => account.isRunning); const [selectedAccountId, setSelectedAccountId] = useState(''); const accountId = selectedAccountId || runningAccounts[0]?.accountId || ''; const [successUsername, setSuccessUsername] = useState(null); const mutation = useStartConversationMutation(); const canSubmit = accountId.length > 0 && username.trim().length > 0 && message.trim().length > 0 && !mutation.isPending; useEffect(() => { if (successUsername === null) return; const timer = window.setTimeout(() => setSuccessUsername(null), SUCCESS_NOTICE_DISMISS_MS); return () => window.clearTimeout(timer); }, [successUsername]); if (accountsQuery.isPending) { return

Loading Reddit accounts…

; } if (accountsQuery.isError) { return
{accountsQuery.error.message}
; } if (runningAccounts.length === 0) { return (

No running accounts — start one in Accounts.

); } function submit(event: React.FormEvent) { event.preventDefault(); if (!canSubmit) return; mutation.mutate( { accountId, username, message }, { onSuccess(chat) { setSuccessUsername(chat.username); setUsername(''); setMessage(''); onStarted(ownedConversationId(chat)); }, }, ); } return (
setUsername(event.target.value)} placeholder="username" value={username} />