From 2e81938d1c7bd35e203caacc145a434bad3515b5 Mon Sep 17 00:00:00 2001
From: Alex <apuret@e-biz.fr>
Date: Tue, 28 Jul 2020 18:08:13 +0200
Subject: [PATCH] fix: error when panel open twice

---
 plugins/deadlock-extension/src/view/briefingView.ts | 2 +-
 plugins/deadlock-extension/src/view/view.ts         | 7 ++++---
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/plugins/deadlock-extension/src/view/briefingView.ts b/plugins/deadlock-extension/src/view/briefingView.ts
index c5059725..b8ee9e1b 100644
--- a/plugins/deadlock-extension/src/view/briefingView.ts
+++ b/plugins/deadlock-extension/src/view/briefingView.ts
@@ -32,7 +32,7 @@ export default class BriefingView extends View {
 
   render() {
     if (this.briefingContent) {
-      return `<h1>Mission Goal 🕶</h1>${marked(this.briefingContent)}`;
+      return `<h2>Mission Goal 🕶</h2>${marked(this.briefingContent)}`;
     } else if (this.loaded) {
       return 'Cannot load Briefing.';
     } else {
diff --git a/plugins/deadlock-extension/src/view/view.ts b/plugins/deadlock-extension/src/view/view.ts
index 520285ca..2f530073 100644
--- a/plugins/deadlock-extension/src/view/view.ts
+++ b/plugins/deadlock-extension/src/view/view.ts
@@ -1,7 +1,5 @@
 import * as path from 'path';
 import * as vscode from 'vscode';
-import BriefingView from './briefingView';
-import HelpView from './helpView';
 
 function getNonce() {
   let text = '';
@@ -21,6 +19,7 @@ export default abstract class View {
   private _disposables: vscode.Disposable[] = [];
   protected loaded: boolean;
   protected initiated: boolean;
+  private isRegisteredOnWebviewPanelSerializer: boolean;
 
   constructor(
     id: string,
@@ -30,6 +29,7 @@ export default abstract class View {
   ) {
     this.loaded = false;
     this.initiated = false;
+    this.isRegisteredOnWebviewPanelSerializer = false;
 
     if (View.views.has(id)) {
       console.warn(`View has been already created: ${id}`);
@@ -80,7 +80,7 @@ export default abstract class View {
       this._disposables
     );
 
-    if (vscode.window.registerWebviewPanelSerializer) {
+    if (vscode.window.registerWebviewPanelSerializer && !this.isRegisteredOnWebviewPanelSerializer) {
       // Make sure we register a serializer in activation event
       vscode.window.registerWebviewPanelSerializer(this.panelName, {
         async deserializeWebviewPanel(
@@ -91,6 +91,7 @@ export default abstract class View {
           //   View.revive(webviewPanel, extensionPath);
         },
       });
+      this.isRegisteredOnWebviewPanelSerializer = true;
     }
 
     this.load();
-- 
GitLab