@@ -327,9 +327,9 @@ export class CodeSnippetDisplay extends React.Component<
327327
328328 // rename snippet on double click
329329 // TODO: duplicate name check!
330- private handleRenameSnippet (
330+ private async handleRenameSnippet (
331331 event : React . MouseEvent < HTMLSpanElement , MouseEvent >
332- ) : void {
332+ ) : Promise < void > {
333333 const contentsService = CodeSnippetContentsService . getInstance ( ) ;
334334 console . log ( event . currentTarget ) ;
335335 console . log ( event . target ) ;
@@ -339,28 +339,38 @@ export class CodeSnippetDisplay extends React.Component<
339339 const new_element = document . createElement ( 'input' ) ;
340340 new_element . setAttribute ( 'type' , 'text' ) ;
341341 new_element . id = 'jp-codeSnippet-rename' ;
342- // new_element.innerHTML = target.innerHTML;
342+ new_element . innerHTML = target . innerHTML ;
343343
344344 target . replaceWith ( new_element ) ;
345345 new_element . value = target . innerHTML ;
346346
347347 new_element . focus ( ) ;
348348 new_element . setSelectionRange ( 0 , new_element . value . length ) ;
349349
350- new_element . onblur = ( ) : void => {
351- new_element . replaceWith ( target ) ;
352-
350+ new_element . onblur = async ( ) : Promise < void > => {
351+ console . log ( target . innerHTML ) ;
352+ console . log ( new_element . value ) ;
353353 if ( target . innerHTML !== new_element . value ) {
354354 const newPath = 'snippets/' + new_element . value + '.json' ;
355-
356- contentsService . rename ( oldPath , newPath ) ;
355+ try {
356+ await contentsService . rename ( oldPath , newPath ) ;
357+ } catch ( error ) {
358+ new_element . replaceWith ( target ) ;
359+
360+ await showDialog ( {
361+ title : 'Duplicate Name of Code Snippet' ,
362+ body : < p > { `"${ newPath } " already exists.` } </ p > ,
363+ buttons : [ Dialog . okButton ( { label : 'Dismiss' } ) ]
364+ } ) ;
365+ return ;
366+ }
357367 this . props . _codeSnippetWidgetModel . renameSnippet (
358368 target . innerHTML ,
359369 new_element . value
360370 ) ;
361-
362371 target . innerHTML = new_element . value ;
363372 }
373+ new_element . replaceWith ( target ) ;
364374 } ;
365375 new_element . onkeydown = ( event : KeyboardEvent ) : void => {
366376 switch ( event . code ) {
0 commit comments