Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitcaaa39d

Browse files
committed
prevent multiple open versions
Signed-off-by: shmck <shawn.j.mckay@gmail.com>
1 parent056ad79 commitcaaa39d

File tree

2 files changed

+30
-34
lines changed

2 files changed

+30
-34
lines changed

‎src/commands.ts

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import logger from './services/logger'
88

99
exportconstCOMMANDS={
1010
START:'coderoad.start',
11-
OPEN_WEBVIEW:'coderoad.open_webview',
1211
CONFIG_TEST_RUNNER:'coderoad.config_test_runner',
1312
RUN_TEST:'coderoad.run_test',
1413
SET_CURRENT_POSITION:'coderoad.set_current_position',
@@ -29,27 +28,16 @@ export const createCommands = ({ extensionPath, workspaceState }: CreateCommandP
2928
return{
3029
// initialize
3130
[COMMANDS.START]:async()=>{
32-
letwebviewState:'INITIALIZING'|'RESTARTING'
33-
if(!webview){
34-
webviewState='INITIALIZING'
35-
}elseif(webview.loaded){
36-
// already loaded
37-
vscode.window.showInformationMessage('CodeRoad already open')
38-
return
31+
console.log('start')
32+
if(webview&&webview.state.loaded){
33+
webview.createOrShow()
3934
}else{
40-
webviewState='RESTARTING'
35+
// activate machine
36+
webview=createWebView({
37+
extensionPath,
38+
workspaceState,
39+
})
4140
}
42-
43-
// activate machine
44-
webview=createWebView({
45-
extensionPath,
46-
workspaceState,
47-
})
48-
},
49-
// open React webview
50-
[COMMANDS.OPEN_WEBVIEW]:()=>{
51-
// setup 1x1 horizontal layout
52-
webview.createOrShow()
5341
},
5442
[COMMANDS.CONFIG_TEST_RUNNER]:async(data:TT.Tutorial)=>{
5543
consttestRunnerConfig=data.config.testRunner

‎src/services/webview/index.ts

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ interface ReactWebViewProps {
99
workspaceState:vscode.Memento
1010
}
1111

12+
letstate={loaded:false}
13+
1214
constcreateReactWebView=({ extensionPath, workspaceState}:ReactWebViewProps)=>{
13-
letloaded=false
1415
// TODO add disposables
1516
constdisposables: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
returnvscode.window.createWebviewPanel(viewType,title,vscode.ViewColumn.Two,config)
3233
}
3334

3435
letpanel: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
constchannel=newChannel({
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
constrootPath=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
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp