@@ -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,17 +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- loaded,
57- dispose() {
58- // Clean up our resources
59- loaded = false
60- panel.dispose()
61- Promise.all(disposables.map((x) => x.dispose()))
62- },
72+ state,
6373 createOrShow() {
6474 vscode.commands.executeCommand('vscode.setEditorLayout', {
6575 orientation: 0,
@@ -69,10 +79,8 @@ const createReactWebView = ({ extensionPath, workspaceState }: ReactWebViewProps
6979 // Otherwise, create a new panel.
7080
7181 if (panel && panel.webview) {
72- if (!loaded) {
73- panel.reveal(vscode.ViewColumn.Two)
74- loaded = true
75- }
82+ vscode.window.showInformationMessage('CodeRoad already open')
83+ panel.reveal(vscode.ViewColumn.Two)
7684 } else {
7785 panel = createWebViewPanel()
7886 }