Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 32 additions & 1 deletion content-gen/src/app/frontend/src/components/ChatHistory.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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('');
Expand Down Expand Up @@ -454,11 +468,18 @@ function ConversationItem({
<Input
ref={renameInputRef}
value={renameValue}
maxLength={50}
onChange={(e) => {
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('');
}
Expand All @@ -473,6 +494,16 @@ function ConversationItem({
placeholder="Enter conversation name"
style={{ width: '100%' }}
/>
<Text
size={200}
style={{
color: tokens.colorNeutralForeground3,
marginTop: '4px',
display: 'block'
}}
>
Maximum 50 characters ({renameValue.length}/50)
</Text>
{renameError && (
<Text
size={200}
Expand All @@ -497,7 +528,7 @@ function ConversationItem({
<Button
appearance="primary"
onClick={handleRenameConfirm}
disabled={!renameValue.trim()}
disabled={renameValue.trim().length < 5 || !/[a-zA-Z0-9]/.test(renameValue) || renameValue.length > 50}
>
Rename
</Button>
Expand Down