Skip to content

Commit cfdb3b3

Browse files
authored
Merge pull request #211 from cnblogs/fix-webview-is-disposed
fix: 'webview is disposed'
2 parents 3a56f22 + 59673af commit cfdb3b3

File tree

1 file changed

+2
-31
lines changed

1 file changed

+2
-31
lines changed

src/service/post/post-cfg-panel.ts

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ async function getAuthedPostTagReq() {
2525
return new PostTagReq(new Token(token, isPatToken))
2626
}
2727

28-
const panels: Map<string, WebviewPanel> = new Map()
29-
3028
type PostCfgPanelOpenOption = {
3129
post: Post
3230
panelTitle?: string
@@ -40,6 +38,7 @@ export namespace PostCfgPanel {
4038
export async function open(option: PostCfgPanelOpenOption) {
4139
const { post, breadcrumbs, localFileUri } = option
4240
const panelTitle = option.panelTitle !== undefined ? option.panelTitle : `博文设置 - ${post.title}`
41+
4342
await openPostFile(
4443
post,
4544
{
@@ -48,24 +47,11 @@ export namespace PostCfgPanel {
4847
true
4948
)
5049

51-
let panel = findPanelById(`${post.id}-${post.title}`)
52-
if (panel !== undefined) {
53-
try {
54-
revealPanel(panel, option)
55-
return
56-
} catch (e) {
57-
console.log(e)
58-
panels.delete(panel.viewType)
59-
}
60-
}
61-
62-
const panelId = `${post.id}-${post.title}`
63-
panel = vscode.window.createWebviewPanel(panelId, panelTitle, vscode.ViewColumn.Two, {
50+
const panel = vscode.window.createWebviewPanel('post-cfg-panel', panelTitle, vscode.ViewColumn.Two, {
6451
enableScripts: true,
6552
retainContextWhenHidden: true,
6653
})
6754
panel.iconPath = Uri.joinPath(globalCtx.extCtx.extensionUri, 'dist', 'assets', 'favicon.svg')
68-
panels.set(panelId, panel)
6955

7056
const webview = panel.webview
7157

@@ -109,19 +95,6 @@ const setHtml = async (webview: vscode.Webview): Promise<void> => {
10995
webview.html = await parseWebviewHtml('post-cfg', webview)
11096
}
11197

112-
export const findPanelById = (panelId: string) => panels.get(panelId)
113-
114-
const revealPanel = (panel: WebviewPanel, options: PostCfgPanelOpenOption) => {
115-
const { breadcrumbs } = options
116-
const { webview } = panel
117-
void webview.postMessage({
118-
command: Webview.Cmd.Ui.updateBreadcrumbs,
119-
breadcrumbs,
120-
} as WebviewMsg.UpdateBreadcrumbMsg)
121-
122-
panel.reveal()
123-
}
124-
12598
const doUploadImg = async (webview: CodeWebview, message: WebviewMsg.UploadImgMsg) => {
12699
const selected = await Alert.info(
127100
'上传图片到博客园',
@@ -201,7 +174,5 @@ const observeWebviewMsg = (panel: WebviewPanel, options: PostCfgPanelOpenOption)
201174

202175
const observePanelDispose = (panel: WebviewPanel, disposables: Disposable[]) =>
203176
panel.onDidDispose(() => {
204-
const panelId = panel.viewType
205-
panels.delete(panelId)
206177
disposables.forEach(disposable => void disposable?.dispose())
207178
})

0 commit comments

Comments
 (0)