fix(desktop): add defaultValues to form dialogs to prevent crash (#737)

useForm() without defaultValues causes watch() to return undefined on first render, crashing with undefined.trim(). Adds defaultValues to all 5 affected dialogs: Agent, Channel, MCP, Provider, TeamSettings.

Closes #732, closes #735
This commit is contained in:
Duc Nguyen authored and GitHub committed 2026-04-08 15:26:33 +07:00
1 parent 0e2282be8f
commit 329b150902
5 files changed
+5

No files matched your search

@@ -25,6 +25,7 @@ export function AgentFormDialog({ open, onOpenChange, agent, onSubmit }: AgentFo
const { register, handleSubmit, watch, setValue, reset, formState: { errors, isSubmitting } } = useForm<AgentFormData>({
resolver: zodResolver(agentFormSchema),
mode: 'onChange',
defaultValues: { displayName: '', emoji: '🦊', agentKey: '', providerName: '', model: '', description: '', isDefault: false },
})
// UI-only state (not form data)
@@ -25,6 +25,7 @@ export function ChannelFormDialog({ open, onOpenChange, agents, telegramExists,
const { handleSubmit, watch, setValue, reset, formState: { errors, isSubmitting } } = useForm<ChannelFormData>({
resolver: zodResolver(channelFormSchema),
mode: 'onChange',
defaultValues: { displayName: '', channelType: '', agentId: '', enabled: true, credentials: {} },
})
const channelType = watch('channelType')
@@ -26,6 +26,7 @@ export function McpFormDialog({ open, onOpenChange, server, onSubmit, onTest }:
const { register, handleSubmit, watch, setValue, reset, formState: { errors, isSubmitting } } = useForm<MCPFormData>({
resolver: zodResolver(mcpFormSchema),
mode: 'onChange',
defaultValues: { name: '', displayName: '', transport: 'stdio', command: '', args: '', url: '', headers: {}, env: {}, toolPrefix: '', timeoutSec: 30, enabled: true },
})
// Test connection state (UI-only, not form data)
@@ -23,6 +23,7 @@ export function ProviderFormDialog({ open, onOpenChange, provider, onSubmit }: P
const { register, handleSubmit, watch, setValue, reset, formState: { errors, isSubmitting } } = useForm<ProviderFormData>({
resolver: zodResolver(providerFormSchema),
mode: 'onChange',
defaultValues: { providerType: '', displayName: '', apiBase: '', apiKey: '', enabled: true },
})
// Reset form when dialog opens
@@ -35,6 +35,7 @@ export function TeamSettingsModal({ teamId, onClose, onSaved }: TeamSettingsModa
const { watch, setValue, reset, handleSubmit, formState: { isSubmitting } } = useForm<TeamSettingsFormData>({
resolver: zodResolver(teamSettingsSchema),
mode: 'onChange',
defaultValues: { name: '', description: '', notify: { dispatched: true, progress: true, failed: true, completed: true, new_task: true }, notifyMode: 'direct' },
})
useEffect(() => {