diff --git a/content-gen/src/app/frontend/src/components/ChatHistory.tsx b/content-gen/src/app/frontend/src/components/ChatHistory.tsx index ed9f97762..e3e24b99f 100644 --- a/content-gen/src/app/frontend/src/components/ChatHistory.tsx +++ b/content-gen/src/app/frontend/src/components/ChatHistory.tsx @@ -335,6 +335,20 @@ function ConversationItem({ const handleRenameConfirm = async () => { const trimmedValue = renameValue.trim(); + // Validate before API call + if (trimmedValue.length < 5) { + setRenameError('Conversation name must be at least 5 characters'); + return; + } + if (trimmedValue.length > 50) { + setRenameError('Conversation name cannot exceed 50 characters'); + return; + } + if (!/[a-zA-Z0-9]/.test(trimmedValue)) { + setRenameError('Conversation name must contain at least one letter or number'); + return; + } + if (trimmedValue === conversation.title) { setIsRenameDialogOpen(false); setRenameError(''); @@ -454,11 +468,18 @@ function ConversationItem({ { const newValue = e.target.value; setRenameValue(newValue); if (newValue.trim() === '') { setRenameError('Conversation name cannot be empty or contain only spaces'); + } else if (newValue.trim().length < 5) { + setRenameError('Conversation name must be at least 5 characters'); + } else if (!/[a-zA-Z0-9]/.test(newValue)) { + setRenameError('Conversation name must contain at least one letter or number'); + } else if (newValue.length > 50) { + setRenameError('Conversation name cannot exceed 50 characters'); } else { setRenameError(''); } @@ -473,6 +494,16 @@ function ConversationItem({ placeholder="Enter conversation name" style={{ width: '100%' }} /> + + Maximum 50 characters ({renameValue.length}/50) + {renameError && ( 50} > Rename