@@ -154,6 +154,7 @@ interface ICodeSnippetDisplayProps {
154154 getCurrentWidget : ( ) => Widget ;
155155 openCodeSnippetEditor : ( args : any ) => void ;
156156 editorServices : IEditorServices ;
157+ updateCodeSnippetWidget : ( ) => void ;
157158}
158159
159160/**
@@ -179,7 +180,7 @@ export class CodeSnippetDisplay extends React.Component<
179180 constructor ( props : ICodeSnippetDisplayProps ) {
180181 super ( props ) ;
181182 this . state = {
182- codeSnippets : this . props . codeSnippets ,
183+ codeSnippets : props . codeSnippets ,
183184 matchIndices : [ ] ,
184185 searchValue : '' ,
185186 filterTags : [ ]
@@ -398,10 +399,13 @@ export class CodeSnippetDisplay extends React.Component<
398399 new_element . onblur = async ( ) : Promise < void > => {
399400 if ( target . innerHTML !== new_element . value ) {
400401 const newName = new_element . value ;
401- try {
402- await this . props . codeSnippetManager . renameSnippet ( oldName , newName ) ;
403- } catch ( error ) {
404- if ( error . message === 'Duplicate Name of Code Snippet' ) {
402+ this . props . codeSnippetManager . renameSnippet ( oldName , newName ) . then ( async ( res :boolean ) => {
403+ if ( res ) {
404+ console . log ( target ) ;
405+ console . log ( new_element ) ;
406+ target . innerHTML = new_element . value ;
407+ }
408+ else {
405409 new_element . replaceWith ( target ) ;
406410
407411 await showDialog ( {
@@ -411,8 +415,7 @@ export class CodeSnippetDisplay extends React.Component<
411415 } ) ;
412416 return ;
413417 }
414- }
415- target . innerHTML = new_element . value ;
418+ } ) ;
416419 }
417420 new_element . replaceWith ( target ) ;
418421 } ;
@@ -1217,19 +1220,24 @@ export class CodeSnippetDisplay extends React.Component<
12171220 } ;
12181221
12191222 static getDerivedStateFromProps (
1220- props : ICodeSnippetDisplayProps ,
1221- state : ICodeSnippetDisplayState
1223+ nextProps : ICodeSnippetDisplayProps ,
1224+ prevState : ICodeSnippetDisplayState
12221225 ) : ICodeSnippetDisplayState {
1223- if ( state . searchValue === '' && state . filterTags . length === 0 ) {
1226+ console . log ( 'getDerivedStateFromProps' ) ;
1227+ console . log ( prevState ) ;
1228+ console . log ( nextProps ) ;
1229+
1230+ // this is why state doesn't change
1231+ if ( prevState . searchValue === '' && prevState . filterTags . length === 0 ) {
12241232 return {
1225- codeSnippets : props . codeSnippets ,
1233+ codeSnippets : nextProps . codeSnippetManager . snippets ,
12261234 matchIndices : [ ] ,
12271235 searchValue : '' ,
12281236 filterTags : [ ]
12291237 } ;
12301238 }
12311239
1232- if ( state . searchValue !== '' || state . filterTags . length !== 0 ) {
1240+ if ( prevState . searchValue !== '' || prevState . filterTags . length !== 0 ) {
12331241 // const newSnippets = props.codeSnippets.filter(codeSnippet => {
12341242 // return (
12351243 // state.matchIndices[codeSnippet.id] !== null ||
@@ -1242,10 +1250,10 @@ export class CodeSnippetDisplay extends React.Component<
12421250 // );
12431251 // });
12441252 return {
1245- codeSnippets : state . codeSnippets ,
1246- matchIndices : state . matchIndices ,
1247- searchValue : state . searchValue ,
1248- filterTags : state . filterTags
1253+ codeSnippets : prevState . codeSnippets ,
1254+ matchIndices : prevState . matchIndices ,
1255+ searchValue : prevState . searchValue ,
1256+ filterTags : prevState . filterTags
12491257 } ;
12501258 }
12511259 return null ;
@@ -1360,22 +1368,24 @@ export class CodeSnippetDisplay extends React.Component<
13601368 if ( editor ) {
13611369 editor . dispose ( ) ;
13621370 }
1363-
13641371 // deleting snippets when there is one snippet active
1365- this . props . codeSnippetManager . deleteSnippet ( codeSnippet . id ) . then ( snippets => {
1366-
1367- console . log ( 'delete' ) ;
1368- console . log ( snippets ) ;
1369- console . log ( this . props . codeSnippetManager . snippets ) ;
1372+ this . props . codeSnippetManager . deleteSnippet ( codeSnippet . id ) . then ( ( result : boolean ) => {
1373+ if ( result ) {
1374+ this . props . updateCodeSnippetWidget ( ) ;
1375+ }
1376+ else {
1377+ console . log ( 'Error in deleting the snippet' ) ;
1378+ return ;
1379+ }
13701380
13711381 // active tags after delete
1372- const activeTags = this . getActiveTags ( ) ;
1382+ // const activeTags = this.getActiveTags();
13731383
13741384 // filterTags: only the tags that are still being used
1375- this . setState ( state => ( {
1376- codeSnippets : snippets ,
1377- filterTags : state . filterTags . filter ( tag => activeTags . includes ( tag ) )
1378- } ) , ( ) => console . log ( this . state ) ) ;
1385+ // this.setState(state => ({
1386+ // codeSnippets: snippets,
1387+ // filterTags: state.filterTags.filter(tag => activeTags.includes(tag))
1388+ // }), () => console.log(this.state));
13791389 } ) ;
13801390 // this.props._codeSnippetWidgetModel.deleteSnippet(codeSnippet.id);
13811391 // this.props._codeSnippetWidgetModel.reorderSnippet();
@@ -1467,7 +1477,7 @@ export class CodeSnippetDisplay extends React.Component<
14671477 description : '' ,
14681478 language : 'Python' ,
14691479 code : [ ] ,
1470- id : - 1 ,
1480+ id : 0 ,
14711481 allTags : this . getActiveTags ( ) ,
14721482 fromScratch : true
14731483 } ) ;
0 commit comments