@@ -9,8 +9,9 @@ interface ReactWebViewProps {
99workspaceState :vscode . Memento
1010}
1111
12+ let state = { loaded :false }
13+
1214const createReactWebView = ( { extensionPath, workspaceState} :ReactWebViewProps ) => {
13- let loaded = false
1415// TODO add disposables
1516const disposables :vscode . Disposable [ ] = [ ]
1617
@@ -27,15 +28,23 @@ const createReactWebView = ({ extensionPath, workspaceState }: ReactWebViewProps
2728// allows scripts to load external resources (eg. markdown images, fonts)
2829enableCommandUris :true ,
2930}
30- loaded = true
31+ state . loaded = true
3132return vscode . window . createWebviewPanel ( viewType , title , vscode . ViewColumn . Two , config )
3233}
3334
3435let 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
4049const channel = new Channel ( {
4150 workspaceState,
@@ -49,16 +58,18 @@ const createReactWebView = ({ extensionPath, workspaceState }: ReactWebViewProps
4958
5059panel . 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+
5268const rootPath = path . join ( extensionPath , 'build' )
5369render ( panel , rootPath )
5470
5571return {
56- dispose ( ) {
57- // Clean up our resources
58- loaded = false
59- panel . dispose ( )
60- Promise . all ( disposables . map ( ( x ) => x . dispose ( ) ) )
61- } ,
72+ state,
6273createOrShow ( ) {
6374vscode . commands . executeCommand ( 'vscode.setEditorLayout' , {
6475orientation :0 ,
@@ -68,10 +79,8 @@ const createReactWebView = ({ extensionPath, workspaceState }: ReactWebViewProps
6879// Otherwise, create a new panel.
6980
7081if ( 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 {
7685panel = createWebViewPanel ( )
7786}