@@ -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 - z A - Z 0 - 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 - z A - Z 0 - 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 - z A - Z 0 - 9 ] / . test ( renameValue ) || renameValue . length > 50 }
501532 >
502533 Rename
503534 </ Button >
0 commit comments