@@ -9,8 +9,9 @@ interface ReactWebViewProps {
99 workspaceState : vscode . Memento
1010}
1111
12+ let state = { loaded : false }
13+
1214const createReactWebView = ( { extensionPath, workspaceState } : ReactWebViewProps ) => {
13- let loaded = false
1415 // TODO add disposables
1516 const disposables : vscode . Disposable [ ] = [ ]
1617
@@ -27,15 +28,23 @@ const createReactWebView = ({ extensionPath, workspaceState }: ReactWebViewProps
2728 // allows scripts to load external resources (eg. markdown images, fonts)
2829 enableCommandUris : true ,
2930 }
30- loaded = true
31+ state . loaded = true
3132 return vscode . window . createWebviewPanel ( viewType , title , vscode . ViewColumn . Two , config )
3233 }
3334
3435 let panel : vscode . WebviewPanel = createWebViewPanel ( )
3536
3637 // Listen for when the panel is disposed
3738 // This happens when the user closes the panel or when the panel is closed programmatically
38- panel . onDidDispose ( panel . dispose , null , disposables )
39+ panel . onDidDispose (
40+ ( ) => {
41+ console . log ( 'dispose panel' )
42+ panel . dispose ( )
43+ state . loaded = false
44+ } ,
45+ null ,
46+ disposables ,
47+ )
3948
4049 const channel = new Channel ( {
4150 workspaceState,
@@ -49,16 +58,18 @@ const createReactWebView = ({ extensionPath, workspaceState }: ReactWebViewProps
4958
5059 panel . webview . onDidReceiveMessage ( receive , null , disposables )
5160
61+ // panel.onDidDispose(() => {
62+ // // Clean up our resources
63+ // loaded = false
64+ // panel.dispose()
65+ // Promise.all(disposables.map((x) => x.dispose()))
66+ // })
67+
5268 const rootPath = path . join ( extensionPath , 'build' )
5369 render ( panel , rootPath )
5470
5571 return {
56- dispose ( ) {
57- // Clean up our resources
58- loaded = false
59- panel . dispose ( )
60- Promise . all ( disposables . map ( ( x ) => x . dispose ( ) ) )
61- } ,
72+ state,
6273 createOrShow ( ) {
6374 vscode . commands . executeCommand ( 'vscode.setEditorLayout' , {
6475 orientation : 0 ,
@@ -68,10 +79,8 @@ const createReactWebView = ({ extensionPath, workspaceState }: ReactWebViewProps
6879 // Otherwise, create a new panel.
6980
7081 if ( panel && panel . webview ) {
71- if ( ! loaded ) {
72- panel . reveal ( vscode . ViewColumn . Two )
73- loaded = true
74- }
82+ vscode . window . showInformationMessage ( 'CodeRoad already open' )
83+ panel . reveal ( vscode . ViewColumn . Two )
7584 } else {
7685 panel = createWebViewPanel ( )
7786 }
0 commit comments