Skip to content

Commit fbc213f

Browse files
fix: add validation for conversation name length
1 parent 5953bca commit fbc213f

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

content-gen/src/app/frontend/src/components/ChatHistory.tsx

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,20 @@ function ConversationItem({
335335
const handleRenameConfirm = async () => {
336336
const trimmedValue = renameValue.trim();
337337

338+
// Validate before API call
339+
if (trimmedValue.length < 5) {
340+
setRenameError('Conversation name must be at least 5 characters');
341+
return;
342+
}
343+
if (trimmedValue.length > 50) {
344+
setRenameError('Conversation name cannot exceed 50 characters');
345+
return;
346+
}
347+
if (!/[a-zA-Z0-9]/.test(trimmedValue)) {
348+
setRenameError('Conversation name must contain at least one letter or number');
349+
return;
350+
}
351+
338352
if (trimmedValue === conversation.title) {
339353
setIsRenameDialogOpen(false);
340354
setRenameError('');
@@ -454,11 +468,18 @@ function ConversationItem({
454468
<Input
455469
ref={renameInputRef}
456470
value={renameValue}
471+
maxLength={50}
457472
onChange={(e) => {
458473
const newValue = e.target.value;
459474
setRenameValue(newValue);
460475
if (newValue.trim() === '') {
461476
setRenameError('Conversation name cannot be empty or contain only spaces');
477+
} else if (newValue.trim().length < 5) {
478+
setRenameError('Conversation name must be at least 5 characters');
479+
} else if (!/[a-zA-Z0-9]/.test(newValue)) {
480+
setRenameError('Conversation name must contain at least one letter or number');
481+
} else if (newValue.length > 50) {
482+
setRenameError('Conversation name cannot exceed 50 characters');
462483
} else {
463484
setRenameError('');
464485
}
@@ -473,6 +494,16 @@ function ConversationItem({
473494
placeholder="Enter conversation name"
474495
style={{ width: '100%' }}
475496
/>
497+
<Text
498+
size={200}
499+
style={{
500+
color: tokens.colorNeutralForeground3,
501+
marginTop: '4px',
502+
display: 'block'
503+
}}
504+
>
505+
Maximum 50 characters ({renameValue.length}/50)
506+
</Text>
476507
{renameError && (
477508
<Text
478509
size={200}
@@ -497,7 +528,7 @@ function ConversationItem({
497528
<Button
498529
appearance="primary"
499530
onClick={handleRenameConfirm}
500-
disabled={!renameValue.trim()}
531+
disabled={renameValue.trim().length < 5 || !/[a-zA-Z0-9]/.test(renameValue) || renameValue.length > 50}
501532
>
502533
Rename
503534
</Button>

0 commit comments

Comments
 (0)