@@ -327,9 +327,9 @@ export class CodeSnippetDisplay extends React.Component<
327
327
328
328
// rename snippet on double click
329
329
// TODO: duplicate name check!
330
- private handleRenameSnippet (
330
+ private async handleRenameSnippet (
331
331
event : React . MouseEvent < HTMLSpanElement , MouseEvent >
332
- ) : void {
332
+ ) : Promise < void > {
333
333
const contentsService = CodeSnippetContentsService . getInstance ( ) ;
334
334
console . log ( event . currentTarget ) ;
335
335
console . log ( event . target ) ;
@@ -339,28 +339,38 @@ export class CodeSnippetDisplay extends React.Component<
339
339
const new_element = document . createElement ( 'input' ) ;
340
340
new_element . setAttribute ( 'type' , 'text' ) ;
341
341
new_element . id = 'jp-codeSnippet-rename' ;
342
- // new_element.innerHTML = target.innerHTML;
342
+ new_element . innerHTML = target . innerHTML ;
343
343
344
344
target . replaceWith ( new_element ) ;
345
345
new_element . value = target . innerHTML ;
346
346
347
347
new_element . focus ( ) ;
348
348
new_element . setSelectionRange ( 0 , new_element . value . length ) ;
349
349
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 ) ;
353
353
if ( target . innerHTML !== new_element . value ) {
354
354
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
+ }
357
367
this . props . _codeSnippetWidgetModel . renameSnippet (
358
368
target . innerHTML ,
359
369
new_element . value
360
370
) ;
361
-
362
371
target . innerHTML = new_element . value ;
363
372
}
373
+ new_element . replaceWith ( target ) ;
364
374
} ;
365
375
new_element . onkeydown = ( event : KeyboardEvent ) : void => {
366
376
switch ( event . code ) {
0 commit comments