Browse Source

Merge pull request #9467 from jtpio/optionals

Make some dependencies optional for the code console plugin
Jeremy Tuloup 4 years ago
parent
commit
30bf1b7605
1 changed files with 23 additions and 20 deletions
  1. 23 20
      packages/console-extension/src/index.ts

+ 23 - 20
packages/console-extension/src/index.ts

@@ -105,13 +105,13 @@ const tracker: JupyterFrontEndPlugin<IConsoleTracker> = {
   requires: [
     ConsolePanel.IContentFactory,
     IEditorServices,
-    ILayoutRestorer,
-    IFileBrowserFactory,
     IRenderMimeRegistry,
     ISettingRegistry,
     ITranslator
   ],
   optional: [
+    ILayoutRestorer,
+    IFileBrowserFactory,
     IMainMenu,
     ICommandPalette,
     ILauncher,
@@ -149,11 +149,11 @@ async function activateConsole(
   app: JupyterFrontEnd,
   contentFactory: ConsolePanel.IContentFactory,
   editorServices: IEditorServices,
-  restorer: ILayoutRestorer,
-  browserFactory: IFileBrowserFactory,
   rendermime: IRenderMimeRegistry,
   settingRegistry: ISettingRegistry,
   translator: ITranslator,
+  restorer: ILayoutRestorer | null,
+  browserFactory: IFileBrowserFactory | null,
   mainMenu: IMainMenu | null,
   palette: ICommandPalette | null,
   launcher: ILauncher | null,
@@ -172,19 +172,21 @@ async function activateConsole(
   });
 
   // Handle state restoration.
-  void restorer.restore(tracker, {
-    command: CommandIDs.create,
-    args: widget => {
-      const { path, name, kernelPreference } = widget.console.sessionContext;
-      return {
-        path,
-        name,
-        kernelPreference: { ...kernelPreference }
-      };
-    },
-    name: widget => widget.console.sessionContext.path ?? UUID.uuid4(),
-    when: manager.ready
-  });
+  if (restorer) {
+    void restorer.restore(tracker, {
+      command: CommandIDs.create,
+      args: widget => {
+        const { path, name, kernelPreference } = widget.console.sessionContext;
+        return {
+          path,
+          name,
+          kernelPreference: { ...kernelPreference }
+        };
+      },
+      name: widget => widget.console.sessionContext.path ?? UUID.uuid4(),
+      when: manager.ready
+    });
+  }
 
   // Add a launcher item if the launcher is available.
   if (launcher) {
@@ -376,9 +378,10 @@ async function activateConsole(
     icon: args => (args['isPalette'] ? undefined : consoleIcon),
     execute: args => {
       const basePath =
-        (args['basePath'] as string) ||
-        (args['cwd'] as string) ||
-        browserFactory.defaultBrowser.model.path;
+        ((args['basePath'] as string) ||
+          (args['cwd'] as string) ||
+          browserFactory?.defaultBrowser.model.path) ??
+        '';
       return createConsole({ basePath, ...args });
     }
   });