@@ -414,6 +414,20 @@ function ConversationItem({
414414 const handleRenameConfirm = async ( ) => {
415415 const trimmedValue = renameValue . trim ( ) ;
416416
417+ // Validate before API call
418+ if ( trimmedValue . length < 5 ) {
419+ setRenameError ( 'Conversation name must be at least 5 characters' ) ;
420+ return ;
421+ }
422+ if ( trimmedValue . length > 50 ) {
423+ setRenameError ( 'Conversation name cannot exceed 50 characters' ) ;
424+ return ;
425+ }
426+ if ( ! / [ a - z A - Z 0 - 9 ] / . test ( trimmedValue ) ) {
427+ setRenameError ( 'Conversation name must contain at least one letter or number' ) ;
428+ return ;
429+ }
430+
417431 if ( trimmedValue === conversation . title ) {
418432 setIsRenameDialogOpen ( false ) ;
419433 setRenameError ( '' ) ;
@@ -533,11 +547,18 @@ function ConversationItem({
533547 < Input
534548 ref = { renameInputRef }
535549 value = { renameValue }
550+ maxLength = { 50 }
536551 onChange = { ( e ) => {
537552 const newValue = e . target . value ;
538553 setRenameValue ( newValue ) ;
539554 if ( newValue . trim ( ) === '' ) {
540555 setRenameError ( 'Conversation name cannot be empty or contain only spaces' ) ;
556+ } else if ( newValue . trim ( ) . length < 5 ) {
557+ setRenameError ( 'Conversation name must be at least 5 characters' ) ;
558+ } else if ( ! / [ a - z A - Z 0 - 9 ] / . test ( newValue ) ) {
559+ setRenameError ( 'Conversation name must contain at least one letter or number' ) ;
560+ } else if ( newValue . length > 50 ) {
561+ setRenameError ( 'Conversation name cannot exceed 50 characters' ) ;
541562 } else {
542563 setRenameError ( '' ) ;
543564 }
@@ -552,6 +573,16 @@ function ConversationItem({
552573 placeholder = "Enter conversation name"
553574 style = { { width : '100%' } }
554575 />
576+ < Text
577+ size = { 200 }
578+ style = { {
579+ color : tokens . colorNeutralForeground3 ,
580+ marginTop : '4px' ,
581+ display : 'block'
582+ } }
583+ >
584+ Maximum 50 characters ({ renameValue . length } /50)
585+ </ Text >
555586 { renameError && (
556587 < Text
557588 size = { 200 }
@@ -576,7 +607,7 @@ function ConversationItem({
576607 < Button
577608 appearance = "primary"
578609 onClick = { handleRenameConfirm }
579- disabled = { ! renameValue . trim ( ) }
610+ disabled = { renameValue . trim ( ) . length < 5 || ! / [ a - z A - Z 0 - 9 ] / . test ( renameValue ) || renameValue . length > 50 }
580611 >
581612 Rename
582613 </ Button >
0 commit comments