@@ -50,6 +50,8 @@ export class DataExtensionsEditorView extends AbstractWebview<
5050> {
5151 private readonly autoModeler : AutoModeler ;
5252
53+ private externalApiUsages : ExternalApiUsage [ ] ;
54+
5355 public constructor (
5456 ctx : ExtensionContext ,
5557 private readonly app : App ,
@@ -66,6 +68,15 @@ export class DataExtensionsEditorView extends AbstractWebview<
6668 databaseItem : DatabaseItem ,
6769 ) => Promise < void > ,
6870 private readonly revealItemInDetailsPanel : ( usage : Usage ) => Promise < void > ,
71+ private readonly handleViewBecameActive : (
72+ view : DataExtensionsEditorView ,
73+ ) => void ,
74+ private readonly handleViewWasDisposed : (
75+ view : DataExtensionsEditorView ,
76+ ) => void ,
77+ private readonly isMostRecentlyActiveView : (
78+ view : DataExtensionsEditorView ,
79+ ) => boolean ,
6980 ) {
7081 super ( ctx ) ;
7182
@@ -86,12 +97,27 @@ export class DataExtensionsEditorView extends AbstractWebview<
8697 await this . postMessage ( { t : "addModeledMethods" , modeledMethods } ) ;
8798 } ,
8899 ) ;
100+ this . externalApiUsages = [ ] ;
89101 }
90102
91103 public async openView ( ) {
92104 const panel = await this . getPanel ( ) ;
93105 panel . reveal ( undefined , true ) ;
94106
107+ panel . onDidChangeViewState ( async ( ) => {
108+ if ( panel . active ) {
109+ this . handleViewBecameActive ( this ) ;
110+ await this . updateModelDetailsPanelState (
111+ this . externalApiUsages ,
112+ this . databaseItem ,
113+ ) ;
114+ }
115+ } ) ;
116+
117+ panel . onDidDispose ( async ( ) => {
118+ this . handleViewWasDisposed ( this ) ;
119+ } ) ;
120+
95121 await this . waitForPanelLoaded ( ) ;
96122 }
97123
@@ -280,16 +306,18 @@ export class DataExtensionsEditorView extends AbstractWebview<
280306 maxStep : 1500 ,
281307 } ) ;
282308
283- const externalApiUsages = decodeBqrsToExternalApiUsages ( bqrsChunk ) ;
309+ this . externalApiUsages = decodeBqrsToExternalApiUsages ( bqrsChunk ) ;
284310
285311 await this . postMessage ( {
286312 t : "setExternalApiUsages" ,
287- externalApiUsages,
313+ externalApiUsages : this . externalApiUsages ,
288314 } ) ;
289- await this . updateModelDetailsPanelState (
290- externalApiUsages ,
291- this . databaseItem ,
292- ) ;
315+ if ( this . isMostRecentlyActiveView ( this ) ) {
316+ await this . updateModelDetailsPanelState (
317+ this . externalApiUsages ,
318+ this . databaseItem ,
319+ ) ;
320+ }
293321 } catch ( err ) {
294322 void showAndLogExceptionWithTelemetry (
295323 this . app . logger ,
@@ -409,6 +437,9 @@ export class DataExtensionsEditorView extends AbstractWebview<
409437 Mode . Framework ,
410438 this . updateModelDetailsPanelState ,
411439 this . revealItemInDetailsPanel ,
440+ this . handleViewBecameActive ,
441+ this . handleViewWasDisposed ,
442+ this . isMostRecentlyActiveView ,
412443 ) ;
413444 await view . openView ( ) ;
414445 } ) ;
0 commit comments